고급 예제

다양한 도구들을 가지고 마음껏 응용해보세요.

(1)안드로이드XBLE 블루투스 통신-LED 깜박이기

2015-09-01 10:44:29

개요

 

 

본 튜토리얼에서는 블루투스 4.0 모듈이 내장된 오렌지보드 BLE를 사용합니다.

우선 간단하게 스마트폰에 버튼을 하나 띄워서 그 버튼을 누를시 오렌지 보드에 내장 LED(13번 LED)를 깜박여 보겠습니다.

 

 

미리보기 동영상

 

 

 

부품 목록

 

NO 부품명 수량 상세설명
1 오렌지 BLE 보드 1 블루투스 4.0 내장 보드

 

부품명 오렌지 BLE 보드
파트

 

 

하드웨어 Making

 

 

오렌지 BLE보드는 기본적으로 블루투스 4.0버전이 내장되어있고, 이번 컨텐츠에서 테스트할 LED는 내장 LED(13번 LED)이기 때문에 따로 다른 연결을 안하셔도 됩니다.

 

다만 위의 사진과 같이 블루투스 기능을 사용하실려면 스위치를 위로(해당 이미지상으로) 올려주시면 됩니다.

* 해당 스위치를 위로 올려주시면 디지털 4, 5번 핀을 블루투스로 사용하실 수 있습니다. 자세한 내용은 소프트웨어 설명 부분에서 하겠습니다.

 

 

소프트웨어 Coding

// 블루투스 통신을 위한 SoftwareSerial 라이브러리를 불러온다.
#include <SoftwareSerial.h> 

// BLE보드는 4번, 5번 핀을 사용합니다.
SoftwareSerial BTSerial(4, 5); 
// 데이터를 수신 받을 버퍼
byte buffer[1024]; 
// 버퍼에 데이타를 저장할 때 기록할 위치
int bufferPosition; 
boolean temp = 0;

void setup() {
	BTSerial.begin(9600); 
	Serial.begin(9600); 
	// 내장 LED를 OUTPUT으로 설정합니다.
	pinMode(13, OUTPUT);
	// 버퍼 위치 초기화
	bufferPosition = 0; 
}

void loop() {
	// 블루투스로 데이터 수신
	if (BTSerial.available()) { 
		// 수신 받은 데이터 저장
		byte data = BTSerial.read(); 
		// 수신된 데이터 시리얼 모니터로 출력
		Serial.write(data); 
		// 수신 받은 데이터를 버퍼에 저장
		buffer[bufferPosition++] = data; 
		
		// 블루투스를 통해 'F'가 들어오면
		if (data == 'F') {  
			// LED가 꺼있을 경우 LED를 켭니다.
			if (temp == 0) {  
				digitalWrite(13, HIGH);
				temp = 1;
			// LED가 켜져있을 경우 LED를 끕니다.
			} else {          
				digitalWrite(13, LOW);
				temp = 0;
			}
		}
		// 문자열 종료 표시
		if (data == '\n') { 
			buffer[bufferPosition] = '\0';
			// BufferPosition을 초기화 합니다.
			bufferPosition = 0; 
		}  
	}
}

 

 

소프트웨어 설명

 

블루투스 2.0과는 다르게 스마트폰에서 블루투스 기기를 먼저 페어링 할 필요가 없습니다.

 

우선 오렌지 BLE보드를 제어할 안드로이드 어플(kocoaBLE_1.apk) 을 받으시고, 어플을 설치 해 줍니다.

 

어플을 실행하면 밑의 첫번째 화면과 같이 어플 화면이 나오는데, 여기서 위에 있는 Connect버튼을 눌러주면 가운데 화면과 같이 주변 블루투스 목록이 나옵니다. 

 

연결할 블루투스를 선택해 주시면 마지막 사진의 맨 밑의 부분과 같이 연결된 Device가 준비되었다고 뜨면서 가운데 버튼이 활성화 됩니다.(참고로 블루투스 연결이 안되있을 시 버튼이 활성화 되지 않습니다.)

 

 

 

어플을 실행하신 후 기기와 연결하셧으면 가운데 버튼을 이용하여 오렌지 BLE보드의 내장 LED를 제어하실 수 있습니다.

 

 

// 블루투스 통신을 위한 SoftwareSerial 라이브러리를 불러온다.
#include <SoftwareSerial.h> 

// BLE보드는 4번, 5번 핀을 사용합니다.
SoftwareSerial BTSerial(4, 5); 

 

오렌지 BLE보드의 블루투스는 디지털 4, 5번 핀에 연결되어 있습니다. 위에서 설명했던것과 같이 오렌지 BLE보드에 있는 스위치를 위로 올리고, 소스 코드에서 SoftwareSerial BTSerial(4, 5)번 핀을 설정해 주시면 됩니다.

 

기존에 HC-05를 사용하셧을 때(블루투스 2.0버전 블루투스 모듈)는 직접 연결한 핀에 맞게 세팅을 해주었다면 오렌지 BLE보드는 디지털 4, 5번 핀에 미리 연결을 해 둔 상태이기 때문에 블루투스를 이용하실 경우 디지털 4, 5번 핀을 이용하시면 됩니다.

(블루투스를 사용하실 때는 디지털 4, 5번 핀은 사용하실 수 없습니다.)

 

블루투스를 사용하시지 않을 경우 스위치를 내리시면 일반 디지털 핀처럼 사용하실 수 있습니다.

 

 

	// 블루투스로 데이터 수신
	if (BTSerial.available()) { 
		// 수신 받은 데이터 저장
		byte data = BTSerial.read(); 
		// 수신된 데이터 시리얼 모니터로 출력
		Serial.write(data); 
		// 수신 받은 데이터를 버퍼에 저장
		buffer[bufferPosition++] = data; 
		
		// 블루투스를 통해 'F'가 들어오면
		if (data == 'F') {  
			// LED가 꺼있을 경우 LED를 켭니다.
			if (temp == 0) {  
				digitalWrite(13, HIGH);
				temp = 1;
			// LED가 켜져있을 경우 LED를 끕니다.
			} else {          
				digitalWrite(13, LOW);
				temp = 0;
			}
		}
		// 문자열 종료 표시
		if (data == '\n') { 
			buffer[bufferPosition] = '\0';
			// BufferPosition을 초기화 합니다.
			bufferPosition = 0; 
		}  
	}

 

기본적으로 오렌지보드에서 블루투스 4.0도 블루투스 2.0버전과 사용법은 같습니다.(어플은 다르지만요) SoftWareSerial을 이용하여 4,5번 핀을 연결하셧으면 해당 핀에 데이터가 들어올 때까지 대기했다가, 데이터가 들어오면 해당 데이터를 read()함수를 이용하여 data라는 변수에 저장합니다.

 

이 때 들어온 데이터가 'F' 일 경우 해당 LED의 상태에 따라 LED를 키고 끄게 됩니다.(temp 값을 기준으로 LED가 꺼져있을 때 0, 켜져있을 때 1입니다.)

 

지난번 컨텐츠에서(안드로이드와 아두이노 간 블루투스 통신 기초 - 1. LED 깜박이기) 설명했던 것과 같이 어플에서 버튼을 누르면 'F'가 넘어가니 이를 이용하여 다른 프로젝트에서도 사용하실 수 있습니다.

* 다음 컨텐츠는 오렌지 BLE보드를 이용하여 아두이노 3색 LED를 각각 제어해 보겠습니다.

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

안드로이드, 아두이노, 오렌지보드, BLE