아두이노를 처음 접한게 2013년 여름이었습니다. 어찌어찌하다가 아두이노로 엔코더를 해석[바로가기]해야할 일이 있어서 공부한 후 블로그에 올려두었었죠. 그 후 3D 프린터를 곁눈질로 구경하면서 그 어마어마한 Firmware가 아두이노 보드에 탑재되어 있다는 것[바로가기]을 또한 알게 되면서 깜짝 놀랬었습니다. 그리고 나서 최근 아두이노 보드와 ESP8266보드를 이용한 wifi의 사용에 대해 또한 이야기[바로가기1, 바로가기2]를 했었죠. 아무튼 아두이노는 참 대단한 아이인것 같습니다. 이제는 코딩 교육과 IoT까지 집어 먹을 모양입니다.~^^ 뭐 저도 분위기나 파악해 볼 겸 오늘은 블루투스 모듈로 유명한 HC-06보드를 이용해서 블루투스 통신으로 아두이노에서 LED를 제어-라고 쓰고 그냥 깜빡 거리기를 해볼려고 합니다.^^
준비하기 - 회로 구성
당연히~ 회로가 준비되어 있어야지요^^
응? 넵.. 저렇습니다.^^. 아두이노는 5V에서 동작하고, 블루투스 모듈인 HC-06보드는 3.3V에서 동작하기 때문에.. HC-06의 TX가 아두이노 들어갈땐, 문제가 없겠지만, 아두이노의 5V TX가 HC-06으로 들어갈 때는 이를 3.3V로 바꾸어 주어야 합니다. 그래서 위에 보이듯이 1k옴과 2k옴으로 전압을 분배해서 연결해 주었구요. LED도 제어할 거니까 살짝꿍 달아주고.... 아참.. 저는 아두이노 Mega 보드를 사용했기 때문에 HC-06 보드를 Serial1에 물릴 수 있었습니다. 만약 Uno 보드를 사용하시는 분들은 소프트웨어 시리얼 통신을 사용하셔야 할겁니다.
뭐 연결은 저렇다는 거죠^^
손이 요즘 떨려요.. 에휴.. 제 손 탓이지만, 그냥 폰 탓을 하고 싶습니다.^^
아두이노측...
브레드보드측~~~~
블루투스 준비 및 세팅
회로도 끝났고 이제 블루투스 준비 해야죠~~~ 먼저...
void setup() { Serial.begin(9600); Serial1.begin(9600); } void loop() { if (Serial1.available()) { Serial.write(Serial1.read()); } if (Serial.available()) { Serial1.write(Serial.read()); } }
와 같이 코드를 작성합니다. 위 코드는 아두이노 시리얼 모니터에서 제가 직접 입력(Serial.read())한 명령을 그대로 블루투스 모듈 HC-06으로 전달(Serail1.write())하고, HC-06 모듈에서 넘어온 메세지(Serial1.read())는 저에게 전달(Serail.write())하는 것입니다.
그리고 저렇게 시리얼 모니터를 열어서 AT라는 명령을 주어서 OK가 반환되면 성공한 것입니다^^
AT+NAME****은 ****로 블루투스 모듈 HC-06의 이름을 바꾸겠다는 것으로 OKsetname이라는 메세지가 나타나면 성공한 것입니다.
AT+PIN****은 ****로 PIN 넘버를 바꾸겠다는 것으로, OKsetPIN 메세지가 나오면 또한 성공입니다^^
AT+BAUD*는 통신속도를 *번으로 변경하라는 것으로, 4:9600, 5:19200, 6:38400, 8:115200의 속도를 의미합니다.
다 세팅하고 나면... 위 그림처럼 제가 바꾼 pwbt라는 블루투스 모듈 이름이 나타나내요^^
PIN넘버를 입력하지 않아서 오류가 났네요^^
핀 넘버를 세팅해준데로 입력하구요^^
OK~~~ 블루투스에 연결되었습니다.^^
아두이노에서 블루투스 초간단 테스트하기
이제 간단하게 통신상태가 괜찮은지 볼까요...
void setup() { Serial.begin(9600); Serial1.begin(9600); } void loop() { if (Serial.available()) { Serial.println("-"); Serial1.write(Serial.read()); } }
넵.. 너무 간단해서 또 놀래셨죠.. ㅎㅎ. 이번에는 시리얼 모니터에서 글자를 하나 입력하고 그게 블루투스에서 잘 보내주는지를 볼려고 합니다. 시리얼 모니터에서 한 글자 입력하고 엔터, 시리얼 모니터는 그냥 글자 입력되었다고 '-'로 표기하고, 블루투스에도 동일하게 전송해서 확인하는 거죠^^
그럼 당연히 블루투스에서도 어떤 값이 전송되는지 확인할 프로그램이 필요합니다. 저는 맥을 쓰고 있어서 맥(mac)에서 사용할 시리얼 터미널 프로그램이 필요한데요. CoolTerm[바로가기]이라는 이 아이가 손쉽게 접근해 볼 수 있는 프로그램입니다.
이 프로그램에서 pwbt를 찾아서 연결해 줍니다. 그 전에 당연히 PC에서도 연결되어야죠.
그리고 가볍게 connect~~
아두이노의 시리얼 모니터에서 1부터 4까지 그냥 막 전송했습니다. 블루투스에 연결된 터미널 프로그램에서 잘 받고 있는게 보이네요.. 오케이~~~~
아두이노에서 블루투스를 이용해서 LED 테스트하기
이제.. 아두이노 보드에 붙여둔 LED... 그 아이 이제 사용해야죠^^
char incommingMsg; int LED = 13; void setup() { // put your setup code here, to run once: Serial.begin(9600); Serial1.begin(9600); pinMode(LED, OUTPUT); } void loop() { // put your main code here, to run repeatedly: while (Serial1.available()) { incommingMsg = Serial1.read(); if (incommingMsg == '1') { Serial.println("LED is ON !"); digitalWrite(LED, HIGH); } if (incommingMsg == '0') { Serial.println("LED is OFF !"); digitalWrite(LED, LOW); } } }
코드는... 위와 같이 바꿉니다. LED는 13번으로 해두고, Serial1은 블루투스 모듈인 HC-06에 연결되어 있는데 여기서 1이면 on, 0이면 off로 인식해서 LED를 끄고 켜는거죠^^
CoolTerm의 Send String 에서
1을 보내면~
켜지고~~
0을 보내면~
꺼지죠~~ 뭐 너무 당연하지만^^. 이렇게.. 아두이노에서 블루투스 통신을 연습해 보았습니다.^^
'Hardware > Arduino and Friends' 카테고리의 다른 글
음성 인식이 되는 아두이노 - ArduVoice 아두보이스 (20) | 2018.03.16 |
---|---|
WeMOS (ESP826) 보드 최초 접근 - 웹브라우저로 아두이노에 접근해 보기 (32) | 2018.03.12 |
아두이노에서 PIR 근적외선 모션 감지 센서 테스트 (24) | 2018.03.05 |
휴대폰에서 와이파이를 통해 아두이노 제어하기 초간단 예제 - ESP8266과 Blynk (28) | 2018.02.12 |
아두이노에서 인터넷을 연결하기 위한 ESP8266 준비하기 (20) | 2018.02.07 |
아두이노 모터 쉴드를 이용해서 DC 모터 구동해보기 (8) | 2016.01.29 |
아두이노 시리얼 플로터 (14) | 2016.01.27 |