안드로이드와 아누이노 간의 블루투스
휴대폰, 노트북 등의 휴대기기를 서로 연결해 정보를 교환하는 근거리 무선 기술 표준을 뜻함.
아두이노에 블루투스 실드를 붙이면 블루투스를 사용할 수 있다.
블루투스 활용
필요부품
오렌지보드 | 1 |
---|---|
블루투스모듈(HC-05) | 1 |
브레드보드 | 1 |
점퍼케이블 | 4 |
회로도
브레드보드 레이아웃
#include <SoftwareSerial.h> // 블루투스 통신을 위한 SoftwareSerial 라이브러리를 불러온다.
SoftwareSerial BTSerial(2, 3); // SoftwareSerial(RX, TX)
byte buffer[1024]; // 데이터를 수신 받을 버퍼
int bufferPosition; // 버퍼에 데이타를 저장할 때 기록할 위치
boolean temp = 0;
void setup(){
BTSerial.begin(9600);
Serial.begin(9600);
pinMode(13, OUTPUT);
bufferPosition = 0; // 버퍼 위치 초기화
}
void loop(){
if (BTSerial.available()){ // 블루투스로 데이터 수신
byte data = BTSerial.read(); // 수신 받은 데이터 저장
Serial.write(data); // 수신된 데이터 시리얼 모니터로 출력
buffer[bufferPosition++] = data; // 수신 받은 데이터를 버퍼에 저장
if(data == '1'){ // 블루투스를 통해 '1' 이 들어오면
if(temp == 0){ // LED가 꺼있을 경우 LED를 켭니다.
digitalWrite(13, HIGH);
temp = 1;
}else{ // LED가 켜져있을 경우 LED를 끕니다.
digitalWrite(13, LOW);
temp = 0;
}
}
if(data == '\n'){ // 문자열 종료 표시
buffer[bufferPosition] = '\0';
bufferPosition = 0;
}
}
}
안드로이드 모듈과 스마트폰 페어링 . 디바이스설정 > 블루투스 에서 블루투스 모듈 찾아서 선택 (HC-05) PIN번호를 0000이나 1234 입력.
스마트폰에서 버튼을 누르면 '1' 이라는 문자값을 보냅니다. (숫자 1이 아님)
아두이노 에서는 블루투스를 통해 신호가 들어오면 data라는 변수에 저장하고, 이 값을 비교해서 '1'일 경우엔 LED를 제어하고 그 외일 경우는 무시합니다 (안드로이드 어플에서 다 제어해서 보내므로 1아니면 엔터 값만 들어오게 됩니다)
LED 의 상태값을 저장하기 위해 temp 변수를 선언하여 LED가 켜져있을 경우 temp값은 1로 , LED가 꺼져 있을 경우 temp값을 0으로 저장합니다.
이 컨텐츠를 응용하여 아두이노 다른 부품을 제어하실 경우 버튼을 누를 때 '1' 문자값이 오는 것을 기억하시고, 이를 이용해 if문을 통해 제어하시면 됩니다.