지난 라즈베리파이↔️안드로이드 블루투스 통신에 이어서, HC-06모듈을 사용한 라즈베리파이↔️아두이노 블루투스 통신방법을 정리해봤습니다. 아두이노 블루투스 통신, 라즈베리파이 블루투스 통신, 안드로이드 블루투스 통신 각각 포스팅과 겹치는 부분이 많지만, 일단 처음 사용자를 대상으로 포스팅을 자세히 해봤습니다 :)
1. 아두이노 세팅
아두이노에 HC-06모듈을 다음과 같이 연결해줍니다.
VCC는 아두이노 5V에, GND는 아두이노 GND에, TXD는 7번핀, RXD는 8번 핀에 연결해줍니다.
보드 구성이 끝나면, 아래의 코드를 업로드해주세요.
#include <SoftwareSerial.h> int RX=7; int TX=8; SoftwareSerial bluetooth(RX, TX); void setup(){ Serial.begin(9600); bluetooth.begin(9600); } void loop(){ if (bluetooth.available()) { Serial.write(bluetooth.read()); } if (Serial.available()) { bluetooth.write(Serial.read()); } }시리얼 모니터를 켜고, AT를 입력했을 때, OK라고 뜨면 연결에 성공한 것입니다.
OK가 뜨지 않는다면, 시리얼 모니터의 보드레이트와 전송 옵션을 변경해서 시도하셔야 합니다. 이전 아두이노 안드로이드 블루투스 통신하기 (HC-06 AT 무응답 해결) 포스팅을 참고해주세요.
AT // OK AT+NAME Arduino // OKsetnameAT+NAME 명령어를 통해서 블루투스 기기 이름을 변경해주세요.
라즈베리파이에서 블루투스 스캔할 때 기기를 확인하려면 unique 한 이름으로 변경해주셔야 합니다.
2. 라즈베리파이에 필요한 라이브러리 설치
라즈베리파이에서 터미널을 열고 다음 명령어를 순서대로 입력해주세요.
// 라즈베리파이 업데이트 Sudo apt-get update Sudo apt-get upgrade // 필요한 라이브러리 설치 Sudo apt-get install bluetooth blueman bluez Sudo apt-get install python-bluetooth // 재부팅 Sudo reboot3. 블루투스 페어링
라즈베리파이와 아두이노 사이에 블루투스 페어링을 먼저 해줄 겁니다.
sudo bluetoothctl power on scan onscan on을 했을 때, 조금 기다리면 아두이노 HD-06 모듈이 스캔되어서 나타납니다.
블루투스 기기를 찾았다면, MAC 주소를 확인해주세요.
제 모듈의 MAC 주소는 98:D3:51:FD:E4:0C 였고, 이 주소를 사용해서 페어링을 해줬습니다.
pair MAC주소 // 예시 : pair 98:D3:51:FD:E4:0C페어링을 시도하면 "Enter PIN code: "가 뜹니다.
0000이나 1234를 입력하시면 됩니다. 저는 1234를 입력해서 연결에 성공했습니다.
장치 신뢰까지 세팅이 되었습니다.
4. 라즈베리파이→아두이노 데이터 전송 예제
이제 라즈베리파이에서 아두이노에 데이터를 전송해보겠습니다. 라즈베리파이의 기본 프로그램인 Thonny Python IDE를 켜고 다음 코드를 복붙 한 뒤 실행합니다.
from bluetooth import * socket = BluetoothSocket( RFCOMM ) socket.connect(("98:D3:51:FD:E4:0C", 1)) print("bluetooth connected!") msg = input("send message : ") socket.send(msg) print("finished") socket.close()코드에서 connect옆의 MAC주소는 이전에 확인한 자기 모듈의 MAC주소로 변경해주시면 됩니다. 파이썬 코드를 잠깐 설명드리면, 블루투스 연결 후 입력한 메시지를 1번 전송하고 블루투스 연결을 해제하는 코드입니다.
RUN 버튼을 눌러서 실행합니다.
hello라는 문자열을 입력했을 때, 아두이노 시리얼 모니터에서 hello 문자열을 전송받았습니다.
5. 아두이노→라즈베리파이 데이터 전송 예제
이번에는 아두이노에서 라즈베리파이로 데이터를 전송하는 예제입니다. 아두이노 코드를 변경할 필요는 없습니다. 아래 코드를 복붙 하고 실행해주세요.
마찬가지로 connect 옆의 MAC주소는 각자 모듈의 MAC주소로 변경해주시면 됩니다.
아두이노 시리얼 모니터에서 데이터를 입력하면,
라즈베리파이에서 수신하는 것을 확인할 수 있습니다.
a를 보냈을 때 b'a'로 전송을 받았습니다. 이전 라즈베리파이4↔️안드로이드 블루투스 통신 때도 이랬는데, 아무래도 라즈베리파이 쪽의 문제인 것 같습니다.. 해결방법을 찾으면 공유하겠습니다.
잘못된 내용이 있다면 언제든지 댓글이나 메일로 알려주시면 감사하겠습니다.
이 포스팅이 도움이 되었다면 공감 부탁드립니다.
궁금한 점은 언제든지 댓글 남겨주시면 답변해드리겠습니다:D