아두이노-안드로이드 BLE Chat 앱 (+ IoT 기능)

주목!!! 저전력 블루투스인 BLE 모듈의 기초와 활용에 대한 오프라인 강의가 진행중입니다. BLE 모듈을 이용한 통신, 비컨 및 웨어러블 장치 만들기의 기본을 실습을 통해 배우실 수 있습니다. 오프라인 워크샵 페이지에서 확인하세요!!

아두이노와 안드로이드를 블루투스 4.0 (BLE, Bluetooth Low Energy)로 연결해서 채팅을 할 수 있도록 지원하는 앱입니다.

Classic bluetooth 용으로 작성했던 BT Chat 앱을 재활용 하는 수준으로 보고 슬슬 하려 했는데 BLE 쪽 API 와 동작방식이 완전히 틀려 꽤나 애 좀 먹었습니다. BT Chat 앱에서 지원하던 IoT 기능도 그대로 지원합니다.

  • HM-10 모듈을 기준으로 만들었습니다. 페어링 후 채팅 잘 됩니다.
  • BLE 모듈을 비컨으로 변경해서 사용하시는 분은 비컨 모드를 해제해야 합니다. AT+RENEW 날려서 공장 초기화 추천합니다;;
  • 백그라운드 서비스 지원 : 백그라운드로 서비스가 돌아가도록 수정해서(setting 탭에서 선택가능) 앱 종료 후에도 블루투스 연결이 끊어지지 않습니다. 다만 앱을 재시작하면 채팅창은 초기화 됩니다.
  • 안드로이드 시스템에 의해 강제 초기화 될 경우는 재연결이 되지 않습니다.
  • IoT 기능 추가 : 아두이노에서 특정 메시지를 보내면 HTTP request를 자동으로 보내줍니다. 현재는 thingspeak 서버만 지원. 백그라운드로 돌아가도록 설정해두면 IoT를 위한 wifi 모듈처럼 쓰실 수 있습니다. (BT Chat 앱과 동일)

연결 자체는 간단합니다. 아두이노에 블루투스 모듈을 Serial 연결하면 됩니다. 보통 SoftwareSerial을 사용하실테니…

VCC – 5V(3.3V), GND – GND, TX – D2, RX – D3

아래는 자작보드인 와두이노 보드에 연결한 모습입니다. HC-06 모듈과 HM-10 모듈이 사이즈, 핀 배치가 동일하네요. 그래서 와두이노 보드에 HC-06 대신 HM-10을 연결했습니다;;;

KakaoTalk_20150125_020640609

아두이노에는 릴레이 코드를 올려줍니다. 

#include <SoftwareSerial.h>

SoftwareSerial BTSerial(2, 3); //Connect HC-06. Use your (TX, RX) settings

void setup()  
{
  Serial.begin(9600);
  Serial.println("Hello!");

  BTSerial.begin(9600);  // set the data rate for the BT port
}

void loop()
{
  // BT –> Data –> Serial
  if (BTSerial.available()) {
    Serial.write(BTSerial.read());
  }
  // Serial –> Data –> BT
  if (Serial.available()) {
    BTSerial.write(Serial.read());
  }
}

채팅 입력 및 확인은 아두이노 IDE 에서 Serial Monitor를 이용하면 됩니다.

IoT 기능 사용법

BT Chat 앱 소개 때 설명했던 내용과 동일한 기능이 탑재되어 있습니다. 아두이노에서 아래와 같은 형식의 메시지를 앱으로 보내면 앱에서 메시지를 인식하고 자동으로 외부 서버로 HTTP Request를 보내줍니다.

인식하는 문자열 형식 : thingspeak:key=xxx&field1=xxx[*]

HTTP Request 변환 : http://184.106.153.149/update?key=xxx&field1=xxx

(thingspeak: ~ [*] 사이에 있는 문자열을 그대로 request parameter 로 이용합니다.)

현재는 ThingSpeak 서버만 지원합니다. http://www.thingspeak.com 에서 회원 가입 후 채널을 하나 생성하세요. 채널마다 할당되는 key 를 이용해서 주기적으로 request를 보내주면, 서버상에 시간대별 로그를 남길 수 있습니다.

ic_launcher

# 앱 다운로드(Google Play) : https://play.google.com/store/apps/details?id=com.hardcopy.blechat

# 앱 소스 다운로드 : https://github.com/godstale/BLEChat

소스를 개선하신 분은 제게도 알려주세요. 업데이트 해서 공유될 수 있도록 하겠습니다. (godstale@hotmail.com)

주목!!! 저전력 블루투스인 BLE 모듈의 기초와 활용에 대한 오프라인 강의가 진행중입니다. BLE 모듈을 이용한 통신, 비컨 및 웨어러블 장치 만들기의 기본을 실습을 통해 배우실 수 있습니다. 오프라인 워크샵 페이지에서 확인하세요!!

You may also like...