코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2016-11-10 10:11:51
안드로이드x 아두이노 - 블루투스 통신 기초 컨텐츠를 통해서 간단하게 블루투스에 대해 알아보고 HC-05를 이용해서 안드로이드와 블루투스 통신을 해보았습니다.
이번 컨텐츠에서는 아두이노에서 자주 사용되는 블루투스 모듈중 RN-42가 내장된 BlueSMiRF 모듈을 사용해서 오렌지보드와 블루투스가 지원되는 컴퓨터나 안드로이드 스마트폰 간 양방향으로 통신하는 테스트를 해보겠습니다.
NO | 부품명 | 수량 | 상세설명 |
1 | 오렌지보드 | 1 | |
2 | 스마트폰 | 1 | 안드로이드 OS를 사용하는 스마트폰 |
3 | 블루투스 모듈(BlueSMiRF) | 1 | RN42내장 블루투스 모듈 |
4 | 브레드보드 | 1 | |
5 | 점퍼케이블 | 4 |
부품명 | 오렌지보드 | 스마트폰 | 블루투스 모듈(BLUESMiRF) | 브레드보드 | 점퍼케이블 |
부품 사진 |
* SMiRF의 경우 밑의 사진 오른쪽과 같이 핀 배열이 되어있습니다. 위에 이미지와 같이 핀에 맞게 오렌지보드와 연결해주시면 됩니다.(Mate의 경우 위 이미지대로 연결하면 안됩니다.)
/*
Example Bluetooth Serial Passthrough Sketch
by: Jim Lindblom
SparkFun Electronics
date: February 26, 2013
license: Public domain
This example sketch converts an RN-42 bluetooth module to
communicate at 9600 bps (from 115200), and passes any serial
data between Serial Monitor and bluetooth module.
*/
#include <SoftwareSerial.h>
int bluetoothTx = 2; // TX-O pin of bluetooth mate, Arduino D2
int bluetoothRx = 3; // RX-I pin of bluetooth mate, Arduino D3
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);
void setup()
{
Serial.begin(9600); // Begin the serial monitor at 9600bps
bluetooth.begin(115200); // The Bluetooth Mate defaults to 115200bps
bluetooth.print("$"); // Print three times individually
bluetooth.print("$");
bluetooth.print("$"); // Enter command mode
delay(100); // Short delay, wait for the Mate to send back CMD
bluetooth.println("U,9600,N"); // Temporarily Change the baudrate to 9600, no parity
// 115200 can be too fast at times for NewSoftSerial to relay the data reliably
bluetooth.begin(9600); // Start bluetooth serial at 9600
}
void loop()
{
if(bluetooth.available()) // If the bluetooth sent any characters
{
// Send any characters the bluetooth prints to the serial monitor
Serial.print((char)bluetooth.read());
}
if(Serial.available()) // If stuff was typed in the serial monitor
{
// Send any characters the Serial monitor prints to the bluetooth
bluetooth.print((char)Serial.read());
}
// and loop forever and ever!
}
위의 코드를 업로드 하신 후 시리얼 모니터 창을 여신 후 잠시 기다리신 후 $$$ 를 입력해 줍니다. 정상적으로 Command모드에 들어가면 CMD라는 메세지가 리턴됩니다.
* 시리얼 모니터창 하단에 line ending 없음을 꼭 선택해주셔야 됩니다.
* 제대로 동작하지 않을 경우 블루투스 모듈의 전원을 뺐다가 다시 연결한 후 해보세요.
* BLUESMiRF모듈이 Command모드로 들어가면 모듈에 있는 적색 LED가 매우 빠르게 점멸하게 됩니다.(1초에 10회 점멸)
평상시 대기 모드 일 때 | Command모드일 때 |
CMD메세지가 리턴되었으면 밑에 line ending 없음을 Newline으로 바꾸고 E, D를 입력해보세요. 현재 세팅정보가 나옵니다.
이제 디바이스 구별을 위해 디바이스 이름을 변경해보도록 하겠습니다.
Command 모드에 제대로 진입하여 CMD라는 리턴값이 화면에 나오셨으면, 입력칸에 SN,name 을 입력해 줍니다. 이 때 name부분에 자신이 원하는 디바이스 이름을 넣어주면 됩니다.(영문/숫자만 가능하며 최대 20자입니다.)
정상적으로 진행이 됬을 경우 AOK 라는 메세지가 리턴 됩니다.
기본 이름 RNBT-7597에서 KocoaFAB으로 디바이스 이름이 변경되어있는 것을 확인 할 수 있습니다.
이제 컴퓨터와 스마트폰을 이용하여 각각 블루투스 모듈에 연결해보도록 하겠습니다.
1. 장치 및 프린터에 들어가서 장치 추가를 눌러줍니다.(이 때 사용하는 컴퓨터에 블루투스가 동작해야합니다.)
2. 그 후 변경한 디바이스 이름을 이용해서 블루투스 모듈을 컴퓨터에 추가해 줍니다.
3. 추가가 완료되면 장치관리자에 블루투스 모듈 Com포트가 잡히게 됩니다(이미지에는 총 4개의 포트가 잡혀있는데 위 2개는 다른 모듈입니다. 우선 제대로 연결되면 2개가 잡히면 됩니다.)
4. 블루투스 모듈과 컴퓨터가 제대로 연결되었으면 블루투스 모듈의 LED가 녹색불이 들어옵니다.
5. 확인이 되셨으면 아두이노 IDE에서 시리얼 모니터창을 실행하고, 그 다음 Terminal 프로그램을 아무거나 하나 실행해 줍니다.
(밑의 사진은 CoolTerm을 이용했습니다.)
* 위에서 찾은 포트와 통신속도 9600bps를 설정 한 후 연결합니다. 그 다음 서로 양방향으로 문자를 전송해 봅시다.
(COM포트 2개를 각각 확인해보시고 되시는 걸로 이용하시면 됩니다.)
1. 스마트폰 설정 -> 블루투스 를 선택합니다. 혹시 블루투스가 사용 안함으로 되어있으면 사용 중으로 바꿔 줍니다.
2. 블루투스가 사용 중으로 되면 화면에 현재 등록된 디바이스와 연결 가능한 디바이스 목록이 나오게 됩니다.
사용 가능한 목록을 찾아보시면 위에서 변경한 디바이스 이름이 나오게 됩니다. 이를 선택하여 디바이스를 등록해 줍니다.(비밀번호는 1234 입니다.)
3. 테스트를 위해 간단한 어플을 설치하겠습니다. 구글 플레이스토어에서 BT Chat 어플을 설치합니다.
4. 설치가 완료되셧으면, 어플을 실행 한 후 블루투스 모듈과 연결해 줍니다. 연결이 정상적으로 되면 중간쯤에 "Bluetooth 연결됨" 이라고 나옵니다.
5. 컴퓨터 연결과 마찬가지로 스마트폰과 블루투스 모듈이 제대로 연결 되었으면 블루투스 모듈에 녹색불이 들어옵니다.
6. 아두이노 IDE에서 시리얼 모니터를 실행 한 후 양방향으로 통신을 해 봅시다.
* 기본적인 사용법은 HC-05와 같습니다. 다른 점은 HC 시리즈에서 사용한 AT Command 대신 다른 Command를 사용하는 점인데요, 링크 를 참고하시면 BLUESMiRF에서 사용 할 수 있는 Command를 확인 하실 수 있습니다.(19p부터 나와있습니다.)
BLUESMiRF의 Command 사용법은 위에서 $$$ 를 입력하여 CMD를 리턴받았었는데 $$$입력이 Command모드로 들어가는 명령어 입니다. Command모드에서 나올라면 --- (빼기 3번) 을 입력하시면 됩니다. 참고로 $$$입력은 "line ending 없음" 으로 설정하고 입력하셔야 합니다.
kocoafabeditor
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!