Arduino HC-06과 Android 블루투스 통신으로 LED 제어하기

2021-06-21

준비

준비물

  1. Arduino Uno x1
  2. HC-06 module x1
  3. LED x2
  4. 안드로이드 폰(Android 11)

개발환경

  1. Android Studio 4.2
  2. Arduino IDE, VSCode
  3. MacOS Bigsur

HC-06 Spec.

  • 블루투스 버전: 2.0
  • 밴드: 2.4GHz ~ 2.48GHz
  • 수신 거리: -85dBm (Decibel-milliwatts)

목표

  1. 아두이노 HC-06과 안드로이드폰 페어링 및 연결
  2. 안드로이드폰의 SimpleBluetoothTerminal 앱으로 LED 제어하기

단계

아두이노

  1. 아두이노 소스코드

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);
  }
}
  1. 아두이노, HC-06, LED 연결
  • Arduino < - > HC-06

  • Arduino < -> LED

  1. 소스코드 설명
  • 안드로이드 -> 아두이노: 블루투스 시리얼로 A, B, C 커맨드가 들어올 예정
  • 각 커맨드가 들어오면 LED제어를 하고, 그 외의 문자가 들어오면 무시하고 이전 커맨드를 계속 유지

Android

  1. [설정 > 블루투스]에서 목록에 HC-06의 이름(ryusei로 설정함)을 선택하여 페어링 및 연결합니다.

  2. 앱을 빌드 및 설치하면 앱 목록에 HC-06이름(ryusei)이 표시됩니다.

결과 화면

  1. HC-06과 페어링 및 연결한 후 앱 화면

  1. 버튼을 눌러서 커맨드를 보낸 화면

  1. LED가 켜짐

References

arduinoHC06android

2023년도 상반기 정리

Raspberry OS 설치 및 기본 세팅하기