준비
준비물
- Arduino Uno x1
- HC-06 module x1
- LED x2
- 안드로이드 폰(Android 11)
개발환경
- Android Studio 4.2
- Arduino IDE, VSCode
- MacOS Bigsur
HC-06 Spec.
- 블루투스 버전: 2.0
- 밴드: 2.4GHz ~ 2.48GHz
- 수신 거리: -85dBm (Decibel-milliwatts)
목표
- 아두이노 HC-06과 안드로이드폰 페어링 및 연결
- 안드로이드폰의 SimpleBluetoothTerminal 앱으로 LED 제어하기
단계
아두이노
- 아두이노 소스코드
bluetooth.ino
/*
HC-06 bluetooth
*/
#include <SoftwareSerial.h>
// Serial 통신핀으로 D11번핀을 Rx로, D10번핀을 Tx로 선언
SoftwareSerial btSerial (11, 10); // btSerial(RX, TX);
int led1 = 7;
int led2 = 8;
int data;
char command = 0;
void setup()
{
Serial.begin(9600);
btSerial.begin(9600); // 블루투스 시리얼 통신 시작
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
Serial.print("READY ");
delay(4000);
}
void loop() {
// Android -> Arduino
if (btSerial.available()) {
data = btSerial.read();
if (data == '\n') {
Serial.print("new line");
}
if (data == '\r') {
Serial.print("return");
}
if (data != '\n' && data != '\r') {
command = data;
}
Serial.write(data);
}
// Arduino -> Android
if (Serial.available()) {
btSerial.write(Serial.read());
}
// Control LED
if (command == 'A') {
Serial.print("Turn LED on");
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
delay(1000);
}
else if (command == 'B') {
Serial.print("Turn LED off");
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
delay(1000);
} else if (command == 'C') {
Serial.print("Turn LED off");
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
delay(1000);
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
delay(1000);
} else {
Serial.print("[");
Serial.print(command);
Serial.print("]");
Serial.print("waiting...");
delay(1000);
}
}
- 아두이노, HC-06, LED 연결
- 소스코드 설명
- 안드로이드 -> 아두이노: 블루투스 시리얼로 A, B, C 커맨드가 들어올 예정
- 각 커맨드가 들어오면 LED제어를 하고, 그 외의 문자가 들어오면 무시하고 이전 커맨드를 계속 유지
Android
-
[설정 > 블루투스]에서 목록에 HC-06의 이름(ryusei로 설정함)을 선택하여 페어링 및 연결합니다.
-
앱을 빌드 및 설치하면 앱 목록에 HC-06이름(ryusei)이 표시됩니다.
- Fork & Modified: susan-y/SimpleBluetoothTerminal
- 앱은 원본 소스코드인 kai-morich/SimpleBluetoothTerminal를 포크하여 수정했습니다.
결과 화면
- HC-06과 페어링 및 연결한 후 앱 화면
- 버튼을 눌러서 커맨드를 보낸 화면
- LED가 켜짐