본문 바로가기

아두이노

아두이노+앱인벤터+블루투스 모듈(HC-06)로 글자 주고 받기

블루투스 통신으로 스마트폰과 아두이노가 글자를 주고 받는 방법을 설명해드리겠습니다.

 

블루투스?

 

먼저 블루투스(Bluetooth)가 무엇인지 간략하게 설명해드리자면

블루투스는 1994년에 에릭슨이 최초로 개발한 디지털 통신 기기를 위한 개인 근거리 무선통신 산업 표준이다.  2.4~2.485GHz의 전파를 이용하여 전자 장비 간의 짧은 거리의 데이터 통신 방식을 규정한다.

출처: https://ko.wikipedia.org/wiki/블루투스

위와 같이 설명되어 있는데 사실 핵심은 블루투스 = 근거리 무선 통신 입니다.

 

블루투스를 사용하기 위해서는 '페어링(Pairing)' 단계를 거쳐야 하는데 블루투스 기기들은 대부분 마스터(Master)슬레이브(Slave)의 관계를 맺기 때문입니다. 블루투스는 기본적으로 하나의 마스터 기기에 여러 개의 슬레이브 기기들을 연결할 수 있지만 슬레이브 기기들 간의 통신은 불가능합니다. (블루투스 기술이 발전하면서 아닌 것도 있습니다.)

 

 

블루투스 모듈(HC-06)?

아두이노는 원래 유선통신인 시리얼(Serial) 통신을 사용하는데 무선통신을 하기 위해서는 시리얼통신을 무선 통신으로 바꿔주는 부품이 필요합니다.  즉, 블루투스 모듈은 시리얼통신과 블루투스 통신을 변환해주는 모듈입니다.

 

 

아두이노와 연결하기

 

블루투스 모듈은 4개의 핀을 아두이노와 연결하면 되는데 표와 그림으로 정리했습니다. 여기서 Tx는 Transmit으로 데이터를 송신(보내는) 곳이며, Rx는 Receive로 데이터를 수신(받는)곳 입니다.

아두이노 HC-06
5V VCC
GND GND
2 Tx
3 Rx

 

 

아두이노 코딩하기

 

블루투스 통신을 하기 위해선 소프트웨어시리얼 라이브러리를 추가해야합니다. 그리고 Tx,Rx 핀을 설정해야합니다. 반드시 2,3번 핀을 사용해야하는 것은 아니라서 다른 핀으로 설정해도 됩니다.

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2,3);

void setup() {
 Serial.begin(9600);
 mySerial.begin(9600);
}

void loop() {
 if(mySerial.available()){
  Serial.write(mySerial.read());
 }
 
 if(Serial.available()){
  mySerial.write(Serial.read());
 }
}

 

앱인벤터 화면 구성하기

 

앱 화면 구성은 블루투스를 연결하고 연결을 해제하는 버튼과 블루투스로 보내고 싶은 값을 보내는 버튼, 블루투스로 받은 값을 볼 수 있는 레이블로 구성되어 있습니다. 그리고 화면에는 보이지 않지만 기능을 사용하기 위해서 블루투스 클라이언트와 알림, 시계가 필요합니다. 

  

앱인벤터 블록 코딩하기

 

블루투스 목록을 구성하고 사용자가 선택한 블루투스를 연결하는 코딩입니다. 

블루투스 연결을 끊는 코딩입니다.

앱을 초기화하고 보내기 버튼을 클릭했을 때 글자를 전송하는 코딩입니다.

1초마다 데이터를 받았는지 확인하고 받은 텍스트를 레이블에 표시하는 코딩입니다.

 

블루투스 통신 확인하기

 

앱에서 hello를 입력한 후 '보내기' 버튼을 클릭하면 아두이노 시리얼 모니터 창에서 hello를 확인할 수 있습니다.

아두이노에서 hello를 입력한 후 '전송'을 클릭하면 앱에서 hello를 확인할 수 있습니다.