고급 예제

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

(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

김남이 2015-11-03 20:42:45

안녕하세요 안드로이드를 공부하고 있는 대학생입니다. 아두이노 코드 외의 애플리케이션 소스코드를 참고 하고 싶은데요 혹시 공개 해 주시면 안될까요? 부탁드립니다. 메일 주소는 namyee94@gmail,com 구요 답변 기다리겠습니다.

이지현 2015-11-16 10:44:37

안드로이드 소스 파일 보내주실수 있으신가요? 공부할 때 참고하려구요
shah1994@naver.com

최시영 2015-11-16 18:51:23

소프트웨어 Coding과 전선연결을 하고, 블루투스 스위치도 켰는데, 어플에서 블루투스 기기를 검색할때 오렌지보드를 찾지못합니다. 안드로이드 폰 기종은 Galluxy S4 Active입니다.

기초 1번 Led깜박이기 어플에서는 오렌지 보드가 검색됬었습니다.

오렌지보드가 블루투스 기기로 검색될 수있는 다른 방법이 있는지 알고싶습니다.
tldud920@gmail.com

원기옥 2015-11-16 23:26:20

블루투스를 껐다가 다시 켜보세요.

최준환 2015-12-01 11:41:38

저도 소스 얻고싶습니다.. 부탁드립니다..
paul911014@naver.com

백승찬 2015-12-05 22:34:38

안녕하세요. 안드로이드를 공부하는 대학생입니다. 이번에 앱과 아두이노를 블루트스를 이용하여 연동시키고 싶은데 혹시 앱의 소스코드를 참고하고싶습니다. 혹시 공개 가능하시면 scfreedom31@gmail.com로 보내주시면 감사하겠습니다.

이창호 2016-01-05 17:11:19

안녕하십니까. 오렌지보드를 구매하여 BLE 통신을 직접 개통시켜보려고 하는데, 자료를 찾다 소스코드를 보유하고 계신걸 알고 참고할 수 있을까 하고 요청드립니다. 참고가 가능하다면 leech7084@naver.com으로 보내주시면 감사하겠습니다.

대식 2016-05-12 02:43:57

안녕하세여 공부하는데 알고싶은 소스같은데 혹시 알수 있을까요 ?? kimde46@naver.com 입니다

이은엽 2016-07-04 10:15:04

안녕하세요 안드로이드를 공부하는 대학생입니다. 혼자 프로젝트를 진행하다가 좋은 자료를 본거같아서 이렇게 글을 남깁니다. 앱의 소스코드를 참조하고싶습니다. 혹시 공개 가능하시면 qodlfdpdkdl@naver.com 으로 보내주신다면 감사하겠습니다. 부탁드립니다.

이은엽 2016-07-04 10:15:08

안녕하세요 안드로이드를 공부하는 대학생입니다. 혼자 프로젝트를 진행하다가 좋은 자료를 본거같아서 이렇게 글을 남깁니다. 앱의 소스코드를 참조하고싶습니다. 혹시 공개 가능하시면 qodlfdpdkdl@naver.com 으로 보내주신다면 감사하겠습니다. 부탁드립니다.

홍영진 2016-08-02 16:13:39

안녕하세요.
안드로이드공부하는 학생입니다.
혹시 어플리케이션 소스를 참고하여 공부하고 싶은데 혹시 공개 가능하신가요?
가능하시면 hyjzone@naver.com 으로 보내주시면 감사하겠습니다.

윤고산 2017-01-27 15:36:20

안녕하세요 앱개발에 관심있는 대학생입니다.
해당 어플리케이션을 참조하여 구현하고싶은 프로젝트가 있는데
소스코드 공유해주시면 감사드리겠습니다.
gosangosango@gmail.com 으로 부탁드리겠습니다 감사합니다~

위버 2017-04-23 20:19:44

어플리케이션에 평소 관심을 가지고 있는 학생입니다.
혹시 소스 공유해주실 수 있으신가요?? 너무 찾고 있던 것이라 부탁드립니다.
혹시 보내주실 수 있으면 dpswpf97@gmail.com으로 보내주세요 감사합니다:)

user 2017-05-10 11:47:15

이걸 오렌지보드랑 아두이노 블루투스 모듈을 장착을 하고 해봤는데요 오렌지보드에선 블루투스가 잡히는데 아두이노 블루투스 모듈에선 검색이 안되는데 앱에서 오렌지 보드랑만 호환이 가능한 건가요?

플래니 2017-10-23 20:29:34

혹시 LED를 직렬로 여러개 달려고하면 어떻게해야할까여?

LIM 2018-12-07 14:00:16

안녕하세요 안드로이드를 공부하는 대학생입니다. 혼자 프로젝트를 진행하다가 좋은 자료를 본거같아서 이렇게 글을 남깁니다. 앱의 소스코드를 참고 하고 싶습니다. cryatsr00@naver.com으로 보내주신다면 감사하겠습니다. 부탁드립니다.

tmddnjswjd 2019-04-25 17:01:35

안녕하세요 어플리케이션 만드는법을 참조 하고싶은데 어떤프로그램으로 만드신건지 그리고 소스코드가 궁금해서요 tmddnjswjd02@naver.com으로 보내주시면 감사하겠습니다.!!

whdgus6818 2019-06-12 12:18:45

혹시 소스 공유해주실 수 있으신가요??
혹시 보내주실 수 있으면 whdgus6818@naver.com 으로 보내주세요 감사합니다.

wjs789 2019-09-17 13:46:46

안녕하세요 관리자 선생님. 안드로이드와 iOS를 공부하고 있는 대학생입니다. 공부를 위해 애플리케이션 소스코드를 참고 하고 싶습니다. 부탁드립니다. 메일 주소는 gidal987@naver.com 입니다. 소중한 답변 기다리겠습니다! 감사합니다

워르넷 2019-09-18 10:30:58

안녕하세요 선생님. 학교에서 안드로이드 이제막 시작한 학생입니다. 아직 모른것도 많은데 혼자서 과제를 할려니 무척 힘듬니다. 만일 가능하시다면 소스를 보면서 공부를 하고싶습니다. 매일주소는 chajw1633@naver.com 으로 보내주시면 감사합니다!