스마트폰 HC-06 아두이노스마트폰 HC-06 아두이노

Arduino Uno : (블루투스) 스마트폰으로 아두이노 LED 제어

이번 포스트에서는

HC-06 블루투스 모듈을 사용하여 스마트폰으로 아두이노 LED를 제어

하는 예제를 소개합니다. HC-06 사용과 관련된 기초적인 내용은 하단의 관련 포스트를 참고해주세요.

Hardware

준비물

본 예제의 구성품은 아래와 같습니다.

  • Arduino Uno x 1EA
  • Bluetooth Module HC-06 x 1EA
  • SmartPhone x 1EA
  • JumperWIres

※ 본 포스트에서 사용한 HC-06의 펌웨어는 LinvorV 1.8 입니다.

회로도 및 연결

본 예제에서 사용한 HC-06과 아두이노 우노 연결 회로도는 아래와 같습니다. HC-06은 연결의 편의성에 따라 D0, D1, D13을 제외한 디지털핀에 연결하여 테스트 할 수 있습니다. 

Arduino Uno와 블루투스 모듈 HC-06 연결Arduino Uno와 블루투스 모듈 HC-06 연결

※ 참고사항

D0, D1 : Arduino Uno의 기본 적인 시리얼(UART) 포트로 PC에서 디버깅 메세지 확인 용도로 사용

D13 : Arduino Uno 보드의 내장 LED가 연결된 핀


예제 코드 : 블루투스로 아두이노 제어

스마트폰의 블루투스 통신으로 HC-06를 연결하여 시리얼 통신으로 1을 보내는 경우 Arduino Uno 보드 내장 LED를 켜고, 0을 보내는 경우 LED를 끄는 예제입니다.

예제 소개 : 스마트폰으로 아두이노 내장 LED 제어예제 소개 : 스마트폰으로 아두이노 내장 LED 제어

아두이노 코드

테스트를 진행하기 위해 아래의 코드를 작성하여 사용하였습니다. Arduino Uno Board와 HC-06은 SoftwareSerial 을 사용하여 통신하도록 설정하였습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <SoftwareSerial.h>
 
#define HC06RX A0 //HC-06의 TX Pin - Arduino Uno의 RX
#define HC06TX A1 //HC-06의 RX Pin - Arduino Uno의 TX
 
SoftwareSerial HC06(HC06RX,HC06TX);
 
void setup(){
 
    pinMode(13OUTPUT);
 
    Serial.begin(9600);
    HC06.begin(9600);
 
    Serial.println("HC06 Setting...");
    delay(1000);
    
    HC06.print("AT");
    Serial.println("Arduino -> HC06 : AT");
    hc06ResponseCheck();
 
    HC06.print("AT+PIN0000");
    Serial.println("Arduino -> HC06 : AT+PIN0000");
    hc06ResponseCheck();
 
    HC06.print("AT+NAMEmyHC06");
    Serial.println("Arduino -> HC06 : AT+NAMEmyHC06");
    hc06ResponseCheck();
 
    HC06.print("AT+BAUD4");
    Serial.println("Arduino -> HC06 : AT+BAUD4");
    hc06ResponseCheck();
 
}
 
void loop(){
    char temp;
    if(HC06.available()){
        temp = HC06.read();
        if(temp == '1'){
            digitalWrite(13HIGH);
        }
        else if(temp == '0'){
            digitalWrite(13LOW);
       }
    }
}
 
void hc06ResponseCheck(){
    boolean flag = false;
    delay(1000);
    if(HC06.available()){
        flag = true;
    }
    if(flag){
        Serial.print("HC06 -> Arduino : ");
        while(HC06.available()){
            Serial.write(HC06.read()); 
        }
        Serial.println("");
    }
    else{
        Serial.print("HC06 -> Arduino : ");
        Serial.println("No Response!");
    }
}
cs


코드 설명

선언부

  • 1줄 : SoftwareSerial 라이브러리 헤더 참조
  • 3~6줄 : SoftwareSerial을 사용할 포트 선언 및 SoftwareSerial 클래스 생성

void setup()

  • 10줄 : Arduino Uno 보드의 내장 LED가 연결된 D13핀을 출력 포트로 설정
  • 15~34줄 : AT 명령어를 사용하여 HC-06의 블루투스 및 시리얼 통신 설정
    • PIN을 0000으로 설정
    • NAME을 myHC06으로 설정
    • Serial Buadrate를 9600으로 설정

void loop()

  • 스마트폰으로부터 데이터(문자) 1이 수신되는 경우 LED 점등, 0이 수신되는 경우 LED 점멸 

void hc06ResponseCheck()

  • Arduino Uno -> HC-06으로 AT Command 가 전달되는 경우 HC-06으로 부터 정상적으로 응답이 오는지 확인하는 코드입니다.


실행 결과

HC-06 설정 확인 결과

Arduino Uno와 HC-06이 정상적으로 연결되어 환경 설정이 완료되면, 아두이노 우노 USB로 연결된 PC에서 시리얼 모니터로 아래와 같은 메세지를 확인 할 수 있습니다.

HC-06 AT Command 응답 확인HC-06 AT Command 응답 확인


스마트폰 어플 : Bluetooth Terminal

위와 같이 HC-06 설정이 완료되면 Bluetooth Terminal 프로그램을 실행하여 myHC06을 연결 합니다. Bluetooth Terminal 앱 사용 하기 위한 사전 설정은 이전 포스트를 참고해주세요. 하단에 관련 포스트를 기입하였습니다. 

스마트폰으로 HC-06을 연결할 때 HC-06의 상태 LED가 깜빡이고 있는지 확인해야 합니다. LED가 깜빡이고 있지 않으면 리셋을 해서 깜빡이는 상태를 확인 후 스마트폰 연결을 시도해야 합니다. 스마트폰이 연결되면 HC-06의 상태 LED가 켜진 상태를 유지합니다. 

스마트폰 HC-06 연결스마트폰 HC-06 연결

HC-06이 연결 되면 메세지에 0 또는 1을 입력 후 보내도 되지만, 버튼을 등록하여 사용할 수 있습니다. 버튼을 등록하기 위해서 메세지창 왼쪽의 +버튼을 눌러 원하는 버튼의 이름과 송신할 데이터를 선택 할 수 있습니다. 저는 아래와 같이 설정하였습니다.

Bluetooth Terminal 퀵 버튼 설정Bluetooth Terminal 퀵 버튼 설정


스마트폰 블루투스로 LED 제어

스마트폰으로 HC-06을 정상적으로 연결 되면 아래와 같이 아두이노 우노 보드의 내장 LED를 제어 할 수 있습니다. 


마무리

본 포스트에서는

블루투스 모듈 HC-06을 사용하여 스마트폰으로 아두이노를 시리얼 통신으로 제어하는 방법을 소개

하였습니다. 본 예제에서 사용한 Software Serial 과 HC-06 사용과 관련된 기초적인 내용은 아래의 관련 포스트를 참고해주세요.

끝까지 읽어 주셔서 감사합니다.😊



댓글
댓글쓰기 폼