쇼핑몰별 최저가 리스트 판매처, 판매가, 배송비, 무이자 혜택 등의 정보를 제공
아두이노에서 블루투스의 사용은 필수 아닌 필수가 되는 것 같다. 그중에서 가장 많이들 사용하는 아두이노 블루투스인 HC-06 블루투스 3.0버전을 사용한다. 일단 통신 프로그램에서 최근에 나온 블루투스 4.0의(HM-10과 같은) LE방식의 코딩이 아닌 시리얼 방식의 코딩으로 가능하기 때문에 기본 예제로 쉽게 제어 할 수 있기 때문이다. 연결 방식은 VCC는 5v 혹은 3.3v GND는 GND TXD는 디지털 2번핀 RXD는 디지털 3번핀 에 연결해주면 된다. #include <softwareserial.h> const int nPin_BTTx = 2; //전송 const int nPin_BTRx = 3; //수신 SoftwareSerial BTSerial(nPin_BTTx, nPin_BTRx); // RX, TX void setup() { Serial.begin(9600); BTSerial.begin(9600); Serial.println("START"); } void loop() { if (BTSerial.available()) Serial.write(BTSerial.read()); if (Serial.available()) BTSerial.write(Serial.read()); } RX와 TX는 RX->TX, TX->RX로 연결해줘야 하는데 핀은 그대로 연결하고, SoftwareSerial 을 선언할 때 순서를 바꿔서 사용하면 연결하는 핀과 소스가 헷갈릴 일은 없다. 이렇게 하고 연결테스트는 AT 명령어로 할 수 있다. 그런데 HC-06은 AT명령어는 아무리 해도 안될 때가 있다. 그래서 혹시나 연결이 잘못 됐나? 싶어서 폰으로 블루투스앱 SPP를 이용해서 데이터를 전송해보면 또 통신은 잘한다. ㅡ.ㅡ 이렇게 해보다가 블루투스의 전원을 뺏다가 다시 꽂으면 그때서야 명령어를 먹는다. 안 될때는 연결부터해서 데이터값 테스트를 해보면 될듯 하다. 여튼 희안하다. 그리고 하드웨어의 버전에 따라서 AT 명령어가 바꼈다. 헐~ 하드웨어 버전이 뭔지 어떻게 안담!!! 먼저 AT를 쳐서 OK가 뜨지 않을 땐 줄을 입력하는 방식을 바꿔야 한다. 보통은 line ending 없음으로 선택되어 있으나, 안되면 Both NL & CR로 변경을 해야 한다. 이러한 이유는 역시나 펌웨어의 버전 차이 때문인거 같다. 실제로 AT 명령어를 실행 했을 때 OK 가 뜨고 난 뒤, AT+VERSION으로 명령어를 날리니 3.0버전이라고 나온다. 그러면 기존에 있는 AT 명령어는 다 바뀐단 소리다. Version : 1.8 의 AT 명령어 AT+NAME -> AT+NAMEMYMOS1 -> "MYMOS1"로 블루투스 이름 변경 AT+PIN -> AT+PIN1234 -> 1234 로 블루투스 비밀번호 변경 (최대 4자리 숫자까지 가능) AT+ROLE -> AT+ROLE=M -> 블루투스 모듈을 마스터로 변경. 슬레이브는 S Version : 3.0 의 AT 명령어 AT+NAME -> AT+NAME=MYMOS1 -> "MYMOS1"로 블루투스 이름 변경 AT+PIN -> AT+PSWD=1234 -> 1234 로 블루투스 비밀번호 변경 (최대 4자리 숫자까지 가능) AT+ROLE -> AT+ROLE=1 -> 블루투스 모듈을 마스터로 변경. 슬레이브는 0 아두이노 블루투스 연결은 쉬운듯 어려운듯 하다. AT명령어만 잘 된다면야 쉽게 쉽게 가는건데 막상 안 먹을 때는 멘붕! 하지만 실제로 통신을 하는건 잘 될 수도 있으므로 어플로 연결이 잘되는지 부터 체크를 하면 될 듯 하다. |