안드로이드와 아누이노 간의 블루투스

휴대폰, 노트북 등의 휴대기기를 서로 연결해 정보를 교환하는 근거리 무선 기술 표준을 뜻함.

아두이노에 블루투스 실드를 붙이면 블루투스를 사용할 수 있다.

블루투스 활용

필요부품

오렌지보드 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 입력.

안드로이드에 apk다운로드

스마트폰에서 버튼을 누르면 '1' 이라는 문자값을 보냅니다. (숫자 1이 아님)

아두이노 에서는 블루투스를 통해 신호가 들어오면 data라는 변수에 저장하고, 이 값을 비교해서 '1'일 경우엔 LED를 제어하고 그 외일 경우는 무시합니다 (안드로이드 어플에서 다 제어해서 보내므로 1아니면 엔터 값만 들어오게 됩니다)

LED 의 상태값을 저장하기 위해 temp 변수를 선언하여 LED가 켜져있을 경우 temp값은 1로 , LED가 꺼져 있을 경우 temp값을 0으로 저장합니다.

이 컨텐츠를 응용하여 아두이노 다른 부품을 제어하실 경우 버튼을 누를 때 '1' 문자값이 오는 것을 기억하시고, 이를 이용해 if문을 통해 제어하시면 됩니다.