티스토리 뷰
1편 HC-06 블루투스 모듈을 설정하는 방법에 이어서 이번에는 안드로이드에 연동하는 방법에 대하여 공유하겠다.
아래는 HC-06 모듈을 달고 있는 아두이노로 메세지를 보내면 그것을 되돌려 받는 안드로이드 앱의 스샷이다.
구글 플레이 스토어 앱 : https://play.google.com/store/apps/details?id=kr.re.Dev.BluetoothEcho
Github 안드로이드 프로젝트 소스 : https://github.com/ice3x2/HC-06_Arduino_Echo
우선 안드로이드에서 블루투스를 시리얼 포트 모드로 이용하기 위한 간단한 모듈을 작성 하였는데, 관련 내용은 이 포스팅에서 볼 수 있다.
동작하는 원리는 아주 간단하다. 그냥 안드로이드에서 문자열을 보내면 아두이노에서 잠깐 버퍼에 저장했다가 그대로 되돌려 주는 방식이다.
다만, Android 의 자바에서는 String 객체를 byte 배열로 바꾸게 되면 문자열 끝을 구분하기 위한 널 포인터 문자 '\0' 이 포함되지 않는다. 그래서 문자열을 아두이노로 전송하는 시점에 직접 널 포인터 문자 '\0' 을 추가하여 아두이노에서 문자열 메시지의 끝을 구분할 수 있도록 하였다.
(예를들어 Hello~!! 를 입력하고 아두이노로 보내기 전에 Hello~!!\0 와 같은 형태로 문자열 끝에 \0 을 붙인다는 이야기다.)
#include <SoftwareSerial.h> // Digital Pin 2 #define rxPin 2 // Digital Pin 3 #define txPin 3 // 내장 LED #define ledPin 13 // 데이터(문자열)을 받을 버퍼의 크기. #define BUFF_SIZE 256 SoftwareSerial swSerial(txPin, rxPin); // 데이터 버퍼 uint8_t buffer[BUFF_SIZE]; uint8_t index = 0; uint8_t data; void setup() { swSerial.begin(9600); pinMode(ledPin, OUTPUT); } void loop() { digitalWrite(ledPin, LOW); // 데이터가 들어올때 까지 대기. while(!swSerial.available()); digitalWrite(ledPin, HIGH); while(swSerial.available()) { data = swSerial.read(); buffer[index++] = data; // 버퍼가 꽉 찼거나 문자열이 끝났을 때, // 루프에서 나간다. if(index == BUFF_SIZE || data == '\0') break; // 9600bps 기준으로 delay 를 1ms 을 줘야 한다. delay(1); } // 블루투스를 통하여 받은 데이터를 되돌려준다. for(uint8_t i = 0; i < index; ++i) { swSerial.write(buffer[i]); } index = 0; }
아주 간단하다. 그냥 데이터가 들어오면 버퍼에 쌓았다가 한꺼번에 전송하는 방식이다. 다소 비효율적이지만 추후에 진행할 프로젝트에서 문자열이나 1바이트 이상의 명령어들을 처리하기 위하여 이런 방법으로 구현하였다.
사용하고 있는 블루투스 모듈과 아두이노와의 연결 방법이다.
참고로, 위 회로는 예제에 불과하고 여러 타입의 블루투스 모듈이 있으니 각각 모듈에 맞게 연결해 줘야한다.
'개발 관련 > 아두이노,IOT' 카테고리의 다른 글
알리 익스프레스로 구입한 호환 아두이노 프로 미니. (0) | 2014.07.13 |
---|---|
아두이노와 안드로이드간의 블루투스 통신 [3]:: 원격으로 LCD 에 메세지 출력하기. (0) | 2014.06.26 |
아두이노와 안드로이드간의 블루투스 통신 [1]::HC-06 설정하기 (1) | 2014.06.21 |
칩두이노에 스위치 입력 삽질기. (0) | 2014.06.07 |
칩두이노 리뷰 + 입문. (0) | 2014.06.07 |
- Total
- Today
- Yesterday
- 알리익스프레스
- 가습기
- 이더넷
- 부트로더
- 침블락
- json
- ndk
- oled
- 안드로이드
- 블루투스
- WS2812B
- 안드로이드 개발
- bluetooth
- 병렬 프로그래밍
- HC-06
- Android
- Iot
- Cheapduino
- ATtiny85
- NeoPixel
- Java
- 아두이노
- ESP8266
- ENC28J60
- 개발
- arduino
- 칩두이노
- noidemcu
- 스마트 무드등
- activity
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |