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 연결
※ 참고사항
D0, D1 : Arduino Uno의 기본 적인 시리얼(UART) 포트로 PC에서 디버깅 메세지 확인 용도로 사용
D13 : Arduino Uno 보드의 내장 LED가 연결된 핀
예제 코드 : 블루투스로 아두이노 제어
스마트폰의 블루투스 통신으로 HC-06를 연결하여 시리얼 통신으로 1을 보내는 경우 Arduino Uno 보드 내장 LED를 켜고, 0을 보내는 경우 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(13, OUTPUT); 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(13, HIGH); } else if(temp == '0'){ digitalWrite(13, LOW); } } } 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 응답 확인
스마트폰 어플 : Bluetooth Terminal
위와 같이 HC-06 설정이 완료되면 Bluetooth Terminal 프로그램을 실행하여 myHC06을 연결 합니다. Bluetooth Terminal 앱 사용 하기 위한 사전 설정은 이전 포스트를 참고해주세요. 하단에 관련 포스트를 기입하였습니다.
스마트폰으로 HC-06을 연결할 때 HC-06의 상태 LED가 깜빡이고 있는지 확인해야 합니다. LED가 깜빡이고 있지 않으면 리셋을 해서 깜빡이는 상태를 확인 후 스마트폰 연결을 시도해야 합니다. 스마트폰이 연결되면 HC-06의 상태 LED가 켜진 상태를 유지합니다.
스마트폰 HC-06 연결
HC-06이 연결 되면 메세지에 0 또는 1을 입력 후 보내도 되지만, 버튼을 등록하여 사용할 수 있습니다. 버튼을 등록하기 위해서 메세지창 왼쪽의 +버튼을 눌러 원하는 버튼의 이름과 송신할 데이터를 선택 할 수 있습니다. 저는 아래와 같이 설정하였습니다.
Bluetooth Terminal 퀵 버튼 설정
스마트폰 블루투스로 LED 제어
마무리
블루투스 모듈 HC-06을 사용하여 스마트폰으로 아두이노를 시리얼 통신으로 제어하는 방법을 소개
하였습니다. 본 예제에서 사용한 Software Serial 과 HC-06 사용과 관련된 기초적인 내용은 아래의 관련 포스트를 참고해주세요.끝까지 읽어 주셔서 감사합니다.😊
'Embedded > Arduino' 카테고리의 다른 글
아두이노 강좌 #46 RGB LED 컬러 인덱스를 사용하여 시리얼 통신으로 제어하기 (0) | 2020.10.18 |
---|---|
아두이노 강좌 #45 RGB LED 기초 사용법 기초 및 Orange, Yellow 컬러 표시 팁 (0) | 2020.10.18 |
아두이노 강좌 #44 HC-06으로 스마트폰과 아두이노 연동하기 (0) | 2020.10.15 |
아두이노 강좌 #43 HC-06 모듈 소개, 주요 기능 및 AT Command 주고 받기 (0) | 2020.10.13 |
아두이노 코딩 : RTC를 사용하여 SD 카드에 로그 기록하기 (DS1302, SD-Card) (2) | 2020.10.06 |