고급 예제

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

(2)안드로이드XBLE 블루투스 통신-LED 제어

2015-09-09 11:35:33

개요

 

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

스마트폰을 통하여 오렌지 BLE보드에 연결한 RGB LED를 제어해 보겠습니다.

 

 

부품 목록

 

NO 부품명 수량 상세설명
1 오렌지 BLE보드 1 블루투스 4.0 내장 보드
2 RGB LED 1  
3 330Ω 저항 3  
4 점퍼케이블 4  
5 브레드보드 1  

 


 

부품명 오렌지 BLE보드 RGB LED
파트

 

부품명 330Ω 저항 점퍼케이블 브레드보드
파트

 

 

하드웨어 Making

 

브레드보드 레이아웃

 

 

회로도

 

 

소프트웨어 Coding

#include <SoftwareSerial.h>

// 블루투스 연결
SoftwareSerial BTSerial(4, 5);  

// RED LED와 디지털 11 핀 연결
const int RED_PIN = 11;    
// GREEN LED와 디지털 10 핀 연결
const int GREEN_PIN = 10;  
// BLUE LED와 디지털 9 핀 연결
const int BLUE_PIN = 9;    

int redTemp = 0;
int blueTemp = 0;
int greenTemp = 0;

//setup 함수는 스케치가 시작될 때 한번만 실행
void setup() {
	//11번 핀을 출력으로 설정
	pinMode(RED_PIN, OUTPUT);    
	//10번 핀을 출력으로 설정
	pinMode(GREEN_PIN, OUTPUT);  
	//9번 핀을 출력으로 설정
	pinMode(BLUE_PIN, OUTPUT);   
	
	Serial.begin(9600);
	BTSerial.begin(9600);
}

//loop 함수는 전원이 꺼질 때까지 반복실행
void loop() {
	if (BTSerial.available()) {
		// R000G000B000 순으로 들어오는 데이터를 각 색깔별로 값 정리       
		if (BTSerial.find("R")) {
			redTemp = BTSerial.parseInt();
		}
		if (BTSerial.find("G")) {
			greenTemp = BTSerial.parseInt();
		}
		if (BTSerial.find("B")) {
			blueTemp = BTSerial.parseInt();
		}
		
		// 입력받아 분리한 RGB 값을 시리얼 모니터로 확인합니다.
		Serial.print("R : ");
		Serial.println(redTemp);
		Serial.print("G : ");
		Serial.println(greenTemp);
		Serial.print("B : ");
		Serial.println(blueTemp); 
		
		// 각 색깔별로 입력받은 값만큼 LED 켜기
		analogWrite(RED_PIN, redTemp);
		analogWrite(GREEN_PIN, greenTemp);
		analogWrite(BLUE_PIN, blueTemp);
		
		// 입력이 완료되면 temp값 초기화
		if (BTSerial.read() == 13) {
			redTemp = 0;
			greenTemp = 0;
			blueTemp = 0;
			Serial.println("Reset");
		}
	}
}

 

 

소프트웨어 설명

 

오렌지 BLE보드에 블루투스 기능을 사용하는 방법은 오렌지 BLE보드를 이용하여 안드로이드 기초 - 1. LED깜박이기를 통해 확인하시기 바랍니다.(이 컨텐츠를 통해 BLE보드 스위치 사용하는 법과 사용하는 핀에 대해 알아두시면 문제없이 진행 할 수 있습니다.)

 * 이전 컨텐츠에서 설명했듯이 오렌지 BLE보드에서 블루투스 기능을 사용하게 되면 디지털 4, 5번 핀을 사용하실 수 없습니다.

 

우선 이번 컨텐츠에서 사용할 오렌지 BLE보드에 연결된 RGB LED를 제어하는 어플(kocoafab-smartlight.apk) 파일을 받으시고 설치하신 후 실행하면 밑의 왼쪽 사진과 같이 화면이 나옵니다. 

 

우선 왼쪽 사진을 보시면 오른쪽 상단에 연결 버튼이 있습니다. 이 버튼을 누르면 오른쪽 사진과 같이 주변의 블루투스 기기들이 검색이 되는데, 해당 기기를 선택해 주면 사진과 같이 연결이 됩니다.

 

 

연결이 된 후 다시 메인 화면으로 돌아가면 화면에 방금 연결한 기기가 나옵니다. 해당 기기를 선택하면 마지막 사진과 같이 색띠와 종료버튼이 나오는데 자신이 원하는 색을 선택하면 BLE보드에 연결된 RGB LED의 색깔도 바뀌게 됩니다.

(종료버튼을 누를시 LED가 꺼지게 됩니다.)

 

 

 

 

	if (BTSerial.available()) {
		// R000G000B000 순으로 들어오는 데이터를 각 색깔별로 값 정리       
		if (BTSerial.find("R")) {
			redTemp = BTSerial.parseInt();
		}
		if (BTSerial.find("G")) {
			greenTemp = BTSerial.parseInt();
		}
		if (BTSerial.find("B")) {
			blueTemp = BTSerial.parseInt();
		}
		
		// 입력받아 분리한 RGB 값을 시리얼 모니터로 확인합니다.
		Serial.print("R : ");
		Serial.println(redTemp);
		Serial.print("G : ");
		Serial.println(greenTemp);
		Serial.print("B : ");
		Serial.println(blueTemp); 
		
		// 각 색깔별로 입력받은 값만큼 LED 켜기
		analogWrite(RED_PIN, redTemp);
		analogWrite(GREEN_PIN, greenTemp);
		analogWrite(BLUE_PIN, blueTemp);
		
		// 입력이 완료되면 temp값 초기화
		if (BTSerial.read() == 13) {
			redTemp = 0;
			greenTemp = 0;
			blueTemp = 0;
			Serial.println("Reset");
		}
	}

 

블루투스로 전송된 데이터를 필요에 맞게 수정하는 소스 코드입니다. 안드로이드에서 색띠의 색깔 값을 R, G, B 값으로 가지고 있습니다.(범위는 0 ~ 255 까지 입니다.) 

 

안드로이드 어플을 통해 색깔이 선택이 되면 해당 R, G, B 값을 R000G000B000의 형태로 오렌지 BLE보드에 전송하게 됩니다.(000 은 임의의 숫자 값입니다.)

 

이렇게 전송된 값을 Serial.find() 함수를 통해 R, G, B 문자를 기준으로 값을 나눠 주고, 나눈 값을 parseInt() 함수를 통해 각각 Int값으로 저장해 줍니다.

(* 참고 : Serial 함수의 명령어에 대해 자세하게 알아봅시다.)

 

각 색깔별로 저장된 값들을 이용하여 RGB LED를 켜줍니다. 이 때 PWM을 사용가능한 핀을 이용하셔야지만 각 색깔별 LED를 제어하실 수 있습니다. 3개의 색이 조합이 되서 원하는 색이 나오게 됩니다.

* 다음에 이것을 응용하여 오렌지 BLE보드와 Neopixel LED Strip 스마트 무드램프를 만들어 보겠습니다.

[프로젝트]안드로이드XBLE 블루투스 통신-무드램프 만들기

 

kocoafabeditor

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

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