[Arduino]04.블루투스 통신

안녕하세요 유랑입니다.



오늘은 블루투스 통신에 대해서 알아보겠습니다.

쉽게 접근할 수 있는 블루투스통신은 어떤 것일까요?




1. 블루투스



블루투스는 2.4GHz 무선 링크를 통해 데이터를 주고받을 수 있는 통신 방법입니다.

많은 장치들이 블루투스 모듈을 사용하고, 단거리에서(<100m) 상대적으로

작은 데이터를 주고 받기에는 최고의 프로토콜이라고 하네요.

여기서 프로토콜이란? 데이터를 보내기 위한 통신 규약이라고 생각하시면 됩니다.








1-1) 블루투스 동작 원리



블루투스 네트워크는 마스터와 슬레이브라는 모델을 사용합니다.

하나의 마스터 장치가 다수의 슬레이브 장치와 연결될 수 있습니다.

컴퓨터 쓰시면 블루투스용 마우스와 키보드를 동시에 연결해서 사용가능할 거에요.

컴퓨터가 마스터이고 마우스와 키보드가 슬레이브라고 생각하시면 됩니다.

여기서 주의해야할 점은 슬레이브라고 마스터에게 통신을 못보내는게 아닙니다.

쌍방향 통신이 가능하니 꼭 알아두세요!!!







1-2) 블루투스 주소와 이름



블루투스 장치는 고유한 주소를 가집니다.

이 주소는 항상 12자리 16진수 값으로 표시됩니다.

상위 절반(24bits)는 제작사를 나타내고,

하위 절반(24bits)는 장치의 고유 주소를 나타냅니다.






1-3) 하드웨어 연결



아두이노에 쓰이는 블루투스 모듈은 크게 HC-05와 HC-06을 사용합니다.

크기와 모양이 비슷해 보이지만 어떤걸 사용해야 될지 고민이 많으실 거에요.

기능상에는 크게 다른점은 없습니다.


- HC-05는 마스터와 슬레이브 두 가지 모드변경이 가능하지만,

- HC-06은 슬레이브만 가능하다는 것(제조사마다 다를 수 있음)

- 기능은 HC-06이 더 많으므로 가격이 더 비쌉니다.


하지만 앞에서도 배웠을 거에요. 슬레이브든 마스터든 양방향 통신은 가능하다는 것을.

저는 HC-06을 사용해서 진행하였습니다.






아두이노와 HC-06핀은 다음과 같이 연결해 주세요.

아두이노에 있는 rx와 tx핀에 연결하지 않은 것은 SoftwareSerial을 이용해서

연결하는 핀 설정을 하였기 때문입니다.

그리고 아두이노와 블루투스 연결도 일종의 통신 방법이기 때문에

아두이노의 RX(수신부)핀은 블루투스의 TX(송신부)핀에 연결하시길 바랍니다!!!


- 아두이노 5V <-> 블루투스 VCC

- 아두이노(3번Pin) <-> 블루투스 TXD

- 아두이노(2번Pin) <-> 블루투스 RXD

- 아두이노 GND <-> 블루투스 GND



1-4) 소프트웨어 연결



아두이노 스케치 코드는 다음과 같습니다.

시리얼 모니터와 핸드폰과 연결할 때 쓰이는 코드입니다.






연결과 코드 적용이 끝나셨으면 블루투스 연결이 잘 되었는지 확인해 보겠습니다.

시리얼 모니터를 실행 후 line ending 없음으로 설정하고 AT를 입력해 전송해 보세요.

OK라고 나오셨으면 연결이 잘 되었습니다^^





'AT+NAME' + 이름을 적용하면 블루투스 이름이 변경됩니다.




'AT+PIN' + 비밀번호를 입력하면 블루투스 비밀번호가 바뀌게 됩니다.





'AT+BAUD'+ 번호를 입력하면 Baud Rate 통신속도를 변경할 수 있습니다.

HC-06 블루투스 모듈은 기본적으로 9600 Baud Rate로 설정되어 있습니다.


- 1 => 1200

- 2 => 2400

- 3 => 4800

- 4 => 9600

- 5 => 19200

- 6 => 38400

- 7 => 57600

- 8 => 115200






1-5) 블루투스 통신



이제 핸드폰과 아두이노를 블루투스 통신으로 연결해 봅시다.

저는 YouRang과 연결하겠습니다.






블루투스 터미널 앱을 설치하고 통신을 해보겠습니다.

앱은 좋은 것들이 많으니 본인 입맛에 맞게 다운받아 주세요.





앱에서도 마찬가지로 블루투스 모듈과 연결하겠습니다.

연결하고나면 깜빡이던 led 점등이 멈춰있을 거에요.





Tx에서는 내가 보낼 데이터를 입력하고 전송하면 시리얼 모니터로 받을 수 있다.

반대로 RX는 시리얼 모니터에서 받은 데이터가 출력된다.








2. 마무리



오늘 강의는 여기까지입니다.

블루투스 통신을 이용하여 데이터를 주고받는 채팅을 구현해 보았습니다.

이 부분을 응용하신다면 다양한 프로젝트들이 가능하겠네요ㅎㅎ

감사합니다.




수업자료: https://github.com/YouRang12/-Tistory-Arduino---Basic







댓글

Designed by JB FACTORY