A PHP Error was encountered

Severity: Notice

Message: Undefined index: HTTP_ACCEPT_LANGUAGE

Filename: core/KF_Controller.php

Line Number: 155

안드로이드와 아두이노 간의 블루투스 통신 기초

고급 예제

다양한 도구들을 가지고 마음껏 응용해보세요.

안드로이드와 아두이노 간의 블루투스 통신 기초

2014-08-11 10:00:47

개요

아두이노에 블루투스 실드를 붙이면 블루투스를 사용할 수 있습니다.

블루투스(Bluetooth)는 휴대폰, 노트북 등의 휴대기기를 서로 연결해 정보를 교환하는 근거리 무선기술 표준을 뜻합니다.

사진 출처 : 네이버 백과사전



블루투스는 실생활에서 헤드셋이나 스마트폰 등 많은 부분에서 사용되고 있습니다.



사진 출처 : http://www.mobot.es/MobotBTCar.html


블루투스 모듈을 아두이노와 연결하여 사용 하게 되면 스마트폰으로 모형차를 조정 하거나, 아두이노와 연결된 센서 값을 받아 볼 수 있는 등 다양하게 사용할 수 있습니다.

이 컨텐츠에서는 블루투스 모듈을 아두이노와 연결해 보고, 안드로이드와 아두이노 간의 블루투스 통신을 통해 간단한 문자열을 전달을 해봅시다.

 

 

 

 

미리보기 동영상

 

 

시작전 개념 이해하기

 - 블루투스
 - 라이브러리 사용하기
 - 안드로이드
 - 데이터형

 

부품목록

NO 부품명 수량 상세설명
1 아두이노 우노 R3 1 아두이노
2 안드로이드 1 안드로이드를 사용하는 스마트폰
3 블루투스 모듈(HC-05) 1 블루투스
4 브레드보드 1 브레드보드
5 점퍼케이블 6 직접연결 하게 되면 4개만 있어도 됩니다.
(여기선 다음 응용까지 같이 하기 위해 추가로 연결 했습니다.)

 

 

부품명 아두이노 우노 R3 안드로이드 블루투스 모듈(HC-05) 브레드보드 점퍼케이블
파트 x1 x1 x1 x1 x6

 

 

하드웨어 making

회로도


 

브레드보드 레이아웃

 

 

 

소프트웨어 coding

#include <SoftwareSerial.h>

// SoftwareSerial(RX, TX)
SoftwareSerial BTSerial(2, 3); 
// 데이터를 수신 받을 버퍼
byte buffer[1024];
// 버퍼에 데이타를 저장할 때 기록할 위치
int bufferPosition; 

void setup() {
	BTSerial.begin(9600); 
	Serial.begin(9600); 
	// 버퍼 위치 초기화
	bufferPosition = 0; 
}

void loop() {
	// 블루투스로 데이터 수신
	if (BTSerial.available()) { 
		// 수신 받은 데이터 저장
		byte data = BTSerial.read(); 
		// 수신된 데이터 시리얼 모니터로 출력
		Serial.write(data); 
		// 수신 받은 데이터를 버퍼에 저장
		buffer[bufferPosition++] = data; 
		
		// 문자열 종료 표시
		if (data == '\n') { 
			buffer[bufferPosition] = '\0';
			
			// 스마트폰으로 문자열 전송
			BTSerial.write(buffer, bufferPosition);
			bufferPosition = 0;
		}  
	}
}

 

 

소프트웨어 설명

 * 이 코드는 스케치를 사용하여 작성 / 업로드 합니다. 스케치에 대한 사용법은 링크를 참고하시기 바랍니다.

우선 블루투스로 문자열을 보낼 안드로이드 어플(BT_Test.apk)을 받으신 후, 실행 하면 밑의 왼쪽 그림처럼 화면이 나옵니다. (핸드폰의 블루투스 기능을 켜야 합니다.)
(이 안드로이드와 아두이노 소스는 "아두이노 스토리 - 클라이버"님이 작성한 글을 참고 하여 만들었습니다.)

아두이노와 맞게 연결을 하면 오른쪽 그림처럼 넘어가게 됩니다.

위 칸에 글을 적으시고 Send 버튼을 누르시면 아두이노 시리얼 모니터와 안드로이드 어플 화면에 글이 뜨게 됩니다.
(안드로이드 어플 글 Send -> 아두이노 수신 후 시리얼 모니터에 작성 -> 안드로이드로 다시 전송 -> 안드로이드 어플 화면에 글이 뜸)

 

#include <SoftwareSerial.h>

// SoftwareSerial(RX, TX)
SoftwareSerial BTSerial(2, 3); 
// 데이터를 수신 받을 버퍼
byte buffer[1024];
// 버퍼에 데이타를 저장할 때 기록할 위치
int bufferPosition; 

 

블루투스 통신을 하기 위해 SoftwareSerial 라이브러리를 사용합니다.
통신을 하기 위한 RX, TX 연결 핀번호와, 수신 받을 자료를 저장할 버퍼를 설정해 줍니다.

 

void loop() {
	// 블루투스로 데이터 수신
	if (BTSerial.available()) { 
		// 수신 받은 데이터 저장
		byte data = BTSerial.read(); 
		// 수신된 데이터 시리얼 모니터로 출력
		Serial.write(data); 
		// 수신 받은 데이터를 버퍼에 저장
		buffer[bufferPosition++] = data; 
		
		// 문자열 종료 표시
		if (data == '\n') { 
			buffer[bufferPosition] = '\0';
			
			// 스마트폰으로 문자열 전송
			BTSerial.write(buffer, bufferPosition);
			bufferPosition = 0;
		}  
	}
}

 

loop문 안에서 데이터를 받아올 때는 한번에 한글자씩 받아오게 됩니다. 글자를 하나씩 받아와서 출력하고, 현재 bufferPosition에 맞게 데이터를 버퍼에 저장하고 bufferPosition을 1개 늘려줍니다.
이렇게 계속 반복하여 문자열의 끝(\n) 이 나오게 되면 버퍼의 마지막에 \0 을 넣고 버퍼에 저장된 문자열을 다시 스마트 폰으로 전송하고 버퍼를 초기화 해줍니다.

 

 

 

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

초급, 블루투스, 통신, 아두이노

여쌩 2015-01-02 14:37:42


안녕하세요 방학동안 통신에 대해 실습하고있는 학생입니다
블루투스 연결을 하기위해 pincode 000000을 하고 안드로이드 기기에 등록은 잘 됩니다
등록 후 올려두신 어플을 이용하여 연결을 누를 시 오류가 뜨면서 어플이 꺼집니다 
이유 좀 알 수 있을까요??

kocoafab 2015-01-02 15:57:29

어플에서 연결이 끊어지는 경우는 어플에서 블루투스와 제대로 연결이 되지 않았기 때문입니다.
(어플을 만들 때 블루투스 연결 중 오류가 발생하면 자동으로 어플이 종료되도록 했습니다.)

안드로이드에서 블루투스 연결시 해당 블루투스 모듈과 제대로 연결이 되었는지 확인하고, 맞으신 경우 연결된 블루투스 모듈을 한번 뺏다가 다시 껴보신 후 다시 어플을 실행해 보시기 바랍니다.

기본 블루투스 모듈 같은 경우는 1:1 통신이기 때문에 연결이 제대로 종료가 되지 않았을 경우 다른 곳에서 연결이 되지 않습니다.

강주영 2015-03-16 14:51:27

안녕하세요. 졸업작품준비하는 학생입니다.
혹시 BT_Test.apk 오픈소스 구할수 있을까요?
이걸 토대로 BT통신관련 어플리케이션을 만들어보려고합니다.

ktmdgus 2015-04-06 21:48:14

아두이노에서 블루투스 상태값을 받는 소스에서 혹시 페어링이 완료되었다는 신호를 아두이노에서 받고 그 신호가 오면 모터를 제어 하는 신호를 보낼 수가 있을까요?? AT 명령어중에 루프문 써서 계속 상태값을 받아와서 디폴트값만 나오다가 페어링이 됬을때 그 페어링 신호가 오면 모터를 제어 하는 소스를 짜고싶은데 가능한건지 알고싶네요 ㅠ 시간되면 ktmdgus@naver.com 이나 댓글로 답변좀 부탁드릴게요

김선호 2015-05-02 00:11:47

앱이 종료 되는 것 없이 연결은 잘 되는데 텍스트가 전송이 안되네요
왜그러는 걸까요

옺옺 2015-09-08 16:39:12

안녕하세요! 게시물이 정말 도움이 많이 되었습니다.! 너무너무 감사합니다!
다름이 아니라 이 게시물을 기반으로 졸업작품을 진행하고 있는 학생입니다!
혹시 민폐가 되지 않는다면 BT_Test.apk 소스를 공유 받고 싶습니다.
연락기다리겠습니다. 감사합니다.

오현석 2015-10-23 14:31:13

안녕하세요 안드로이드 공부중인데 apk 파일 프로젝트 받을수있을까요?ohs11244@naver.com 으로 보내주시면 감사하겠습니다

변수현 2015-12-03 17:53:23

감사합니다 여기가 제일 도움이 되네요 ㅜㅠ

김연주 2015-12-22 16:54:27

Bluetooth controller 라는 앱도 좋네요! 들어가셔서 기기 HC-0x로 시작하는거 기기검색해서 연결하신다음에, 비밀번호 0000이나 1234하시면 됩니당

박진형 2016-01-12 16:09:23

안녕하세요~ 좋은글 감사합니다!
글을 읽다 궁금한게 있어서 질문드립니다~

안드로이드에서 아두이노로 3개의 정수값을 보내고 싶을때
byte[]의 각 인덱스에 그 정수값을 넣고 보내게 된다면,

아두이노측에서 수신을 받을때 어떻게 처리가 되나요??
아니면 따로 수신 처리를 해줘야하나요?

답변 주시면 감사하겠습니다~
아직 초보라 모르는게 많아 양해 바랍니다^^

원기옥 2016-02-17 13:29:29

블루투스 3.0 이하는 일반 소켓 통신이라고 보시면 됩니다. 즉 byte stream으로 보낸것 그대로 전달되며, 안드로이드에서 어떠한 타입의 데이터로 읽기를 원하느냐에 따라 맞는 클래스를 wrapping 해서 사용하면 됩니다.

박남혁 2016-02-23 17:28:20

안드로이드 소스코드를 메일로 요청드려도 될까요? hot.chuu@gmail.com 감사합니다.

이대현 2016-05-09 21:25:12

안녕하세요.
컴퓨터를 전공하는 학생입니다.
안드로이드에서 블루투스를 통해 센서값을 받는 과정이 필요하여 도움을 요청합니다.
혹시 안드로이드 소스코드를 얻을 수 있을까요?
메일은 leedh1499@naver.com 입니다

윤민규 2016-05-11 19:16:15

안녕하세요 이번에 안드로이드 블루투스 통신연습하려고 하는데 안드로이드 소스코드좀 얻을 수 있을까요 ㅠㅠ 공부하고싶습니다 alsrb36541@naver.com 입니다.

황호빈 2016-07-01 07:46:06

저번엔 문자송신이 되었는데 이번에 다시하니까 ㅁㅁㅁ 이렇게 나오네요
왜 그런지 알려주세요.

미키 2016-07-01 08:09:20

혹시 시리얼 모니터 통신속도 설정이 잘못되어 있는지 확인해 보세요 ^^

황호빈 2016-07-01 08:19:45

통신속도를 9600으로 설정했는데도 계속 ㅁㅁㅁ 이렇게 나와요 ㅜ.ㅜ

윤명식 2016-08-15 22:19:42

안드로이드 스튜디오와 아두이노같이 공부하는데 안드로이드 코드를 알고싶습니다
yms0059@naver.com 보내주시면 감사하겠습니다

한상준 2016-08-16 14:53:41

pulseoximeter 제작중입니다. 안드로이드 어플소스 공유해 주비면 감사하겠습니다.
sjhahn@kaist.ac.kr

정유성 2016-08-22 12:40:01

안녕하세요 컴퓨터 전공하는 학생입니다. 안드로이드 블루투스 통신 연습하려고 하는데
안드로이드 소스코드를 메일로 요청드려도 될까요? wjd1004109@naver.com 감사합니다.

강상호 2016-09-07 16:17:10

감사합니다

김성래 2016-10-12 12:25:47

안녕하세요 안드로이드 어플소스가 필요한데 공유 요청드려도 될까요? ㅠㅠ
ksr315@naver.com 입니다.

유용민 2016-10-18 12:10:02

안녕하세요! 공부를 하는중에 아두이노와 안드로이드를 블루투스로 연동시키는 부분에서 어플쪽으로 빈번히 막히고있는 학생입니다. 어플개발을 위해 안드로이드 어플 소스가 필요한데 공유해주심 정말 감사하겠습니다!
ho6133@naver.com입니다 ! 부탁드리겠습니다!

변해영 2016-11-01 19:25:11

안녕하세요!! 안드로이드 어플 공부하는 학생입니다
제가 안드로이드스튜디오와 아두이노 우노보드를 이용해서 블루투스 통신으로 센서값을 받아 출력하려고 합니다.
아무리찾아봐도 안드로이드에서 블루투스 통신이 안되고 앱이 자꾸 중지되고 너무 급하기도하고 궁금해서 글을 남기게 되었습니다. 가능하다면 안드로이드스튜디오 블루투스 통신 어플 소스를 요청드리고 싶습니다..
xunyong2@naver.com 입니다 꼭 부탁드립니다 ㅠㅠ