아두이노 블루투스 통신 방법 및 코드
아두이노를 활용하여 블루투스 통신을 할 수 있는데요. 저희의 경우 컴퓨터로 PID게인 값을 넣기 번거롭기에 HC-06이라는 블루투스 모듈을 활용하여 원격제어 했는데요. 이렇게 생긴 놈입니다.
아두이노에 이렇게 연결해야 하는데요. 보통 센서의 경우, 3V를 먹던데 이 놈은 5V를 줘야합니다.
회로를 연결 했으면 코딩을 해볼까요?
우선 블루투스 통신을 사용하려면 SoftwareSerial이라는 내장 라이브러리를 써야하는데요.
이 라이브러리를 쓰면 RX, TX핀인 시리얼포트 0번과 1번 이외에 다른 핀을 블루투스에 연결하여 활용할 수 있는데요. 실제로 각 프로세서마다 시리얼 포트 개수에 한계가 있기 때문에 여러 기기와 통신할 때 사용할 수 있는 유용한 라이브러리입니다. 또 실제 블루투스를 시리얼 포트에 연결하면 아두이노에 코드를 업로드할 때 블루투스 통신과 충돌할 수 있다고 하네요.
저희가 핸드폰으로 원격제어하기 위해 추가한 코드는 다음과 같은데요.
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(2, 3); // 블루투스 통신을 2번 (RX)과 3번 (TX) pin으로 하겠다
void setup(){
BTSerial.begin(9600); //블루투스 통신과 시리얼 통신의 통신속도가 같을 필요는 없네요.
Serial.begin(230400);
}
void loop()
{
bluetoothEvent(); //bluetoothEvent라는 함수를 반복하여 실행
}
void bluetoothEvent()
{
while (BTSerial.available()) {
desired_angle = BTSerial.parseInt();
desired_angle_x = BTSerial.parseInt();
min_output = BTSerial.parseInt();
max_output = BTSerial.parseInt();
initiator = BTSerial.parseInt();
PID_scaler = BTSerial.parseFloat();
P_angle_gain = BTSerial.parseFloat();
Pgain = BTSerial.parseFloat();
Igain = BTSerial.parseFloat();
Dgain = BTSerial.parseFloat();
buffering = BTSerial.parseFloat();
//11개 정도의 값을 bluetooth통신을 통해 받았네요.
}
}
안드로이드폰을 활용하신다면 블루투스 통신을 하기 위한 어플이 여럿 있어요. 블루투스 모듈과 휴대폰이 연결된 걸 확인한 후 작동시키니 잘 되네요. 매번 컴퓨터로 가서 값을 변경해주지 않아도 되서 편해서 좋은 것 같습니다.. (점점 게을러지는게 아니라 편리한 방법이 있으면 계속 활용해봐야겠죠??;;;) 아무튼 이번 포스팅은 여기서 마치겠습니다!
'아두이노 드론 프로젝트' 카테고리의 다른 글
[아두이노 쿼드콥터] PID 제어 보완 + ESC 고장?! (7) | 2015.11.02 |
---|---|
[아두이노 자작 쿼드콥터]PID 제어 수식 유도 (1) | 2015.11.01 |
[아두이노 쿼드콥터] 서보모터 라이브러리를 활용한 PID 제어 (0) | 2015.10.22 |
[아두이노 쿼드콥터] 이중 PID 제어 (9) | 2015.10.19 |
[아두이노 쿼드콥터] mpu6050 센서값 보정하기 (0) | 2015.10.14 |