고급 예제

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

(3)안드로이드XBLE 블루투스통신-서보모터

2015-10-16 13:40:26

개요

 

 

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

 

이번 컨텐츠에서는 스마트 폰의 기울기 센서를 이용하여 오렌지 BLE보드와 연결된 서보모터를 스마트폰의 기울기에 따라 움직이도록 해보겠습니다.

 

 

 

 

부품 목록

 

NO 부품명 수량 상세설명
1 오렌지 BLE보드 1 블루투스 4.0(BLE) 내장 보드
2 서보 모터 1 SG90
3 점퍼케이블 3  

 

부품명 오렌지 BLE보드 서보 모터 점퍼케이블
파트

 

 

 

하드웨어 Making

 

브레드보드 레이아웃

 

 

 

회로도

 

 

 

 

소프트웨어 Coding

// Bluetooth를 사용하기 위해 SoftwareSerial과 서보모터를 사용하기 위한 Servo 라이브러리를 불러옵니다.
#include <SoftwareSerial.h>
#include <Servo.h>

// BLE보드는 디지털 4, 5번 핀에 연결되어 있습니다.
SoftwareSerial BTSerial(4, 5); 
Servo servo;
// 기본 서보모터 값을 90도로 세팅해줍니다.
int angle = 90; 
   
void setup() {
	Serial.begin(9600);
	BTSerial.begin(9600);
	// 서보모터는 9번핀에 연결해줍니다.
	servo.attach(9);  
}

void loop() {
	// 블루투스를 통해 데이터가 들어오면
	if (BTSerial.available()){  
		// 해당 데이터를 읽어서 char값으로 저장해 줍니다.
		char data = BTSerial.read(); 
		// 데이터가 'w' 일 경우
		if (data == 'w') {  
			int temp = BTSerial.parseInt();
			// 서보모터의 각도를 90~180도로 세팅해줍니다.
			angle = map(temp, 0, 180, 90, 180);
			
		// 데이터가 'e' 일 경우
		} else if (data == 'e') { 
			int temp = BTSerial.parseInt();
			// 서버모터의 각도를 0~180도로 세팅해줍니다.
			angle = map(temp, 180, 0, 0, 90); 
		
		// 데이터가 다 들어왔을 경우
		} else if (data == '\n') { 
			// 세팅한 각도로 서보모터를 움직입니다.
			servo.write(angle);
		}
	} 
}

 

 

 

소프트웨어 설명

 

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

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

 

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

 

 

왼쪽 상단에 Connect 버튼을 누르면 주변의 블루투스 기기들이 검색이 되는데, 해당 오렌지 BLE보드를 선택하시면 밑의 화면과 같이 버튼이 Disconnect로 바뀌면서 Device가 연결됩니다.

 

 

연결이 되셧으면 바로 스마트폰을 기울여서 서보모터가 움직이는지 확인하시면 됩니다.

 

	// 블루투스를 통해 데이터가 들어오면
	if (BTSerial.available()){  
		// 해당 데이터를 읽어서 char값으로 저장해 줍니다.
		char data = BTSerial.read(); 
		// 데이터가 'w' 일 경우
		if (data == 'w') {  
			int temp = BTSerial.parseInt();
			// 서보모터의 각도를 90~180도로 세팅해줍니다.
			angle = map(temp, 0, 180, 90, 180);
			
		// 데이터가 'e' 일 경우
		} else if (data == 'e') { 
			int temp = BTSerial.parseInt();
			// 서버모터의 각도를 0~180도로 세팅해줍니다.
			angle = map(temp, 180, 0, 0, 90); 
		
		// 데이터가 다 들어왔을 경우
		} else if (data == '\n') { 
			// 세팅한 각도로 서보모터를 움직입니다.
			servo.write(angle);
		}
	} 

 

위에 소스 코드가 블루투스를 통해 데이터가 들어오면 들어온 데이터를 처리하는 부분입니다.

 

스마트폰에서 블루투스를 통해 현재 기울기를 e180~e0 / w0~w180으로 보냅니다.(밑의 그림참고)

이 값에 맞게 e, w를 이용하여 서보모터의 방향(90도 기준 왼쪽, 오른쪽) 을 정해주고 그 다음 값을 map함수를 통해 각도값을 재분배해서 나온 값으로 서보모터를 움직여 줍니다.

 

 

kocoafabeditor

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

서보모터, 아두이노, 오렌지보드, BLE

변한빈 2015-11-06 17:03:25

죄송합니다만, 어플개발하고 있는 초급자라서, 혹시 블루투수 어플 소스 좀 보내주실 수 있을련지요???
byh2674@naver.com

이상선 2015-11-12 10:35:23

혹시 관련 소스좀 받아 볼 수 있을까요? lsszz210@naver.com

권영훈 2016-02-10 19:41:37

안녕하세요, 새해복 많이 받으시구요~ 이번에 프로젝트로 위와 관련된 어플을 제작중인데 여기있는 강의가 정말 도움이 됩니다. 이 프로젝트에서 참고를 하고 싶은데요 혹시 가능하시면 어플리케이션 소스를 보내주실수 있으신가요? 감사합니다. 메일은 yhkk2585@naver.com 입니다.

유영민 2016-03-21 17:10:24

좋은 글 감사합니다. 죄송하지만 소스 공유 가능하신가요? casiz@hanmail.net

우리나라 2016-03-22 13:52:28

안녕하세요..^^
블루투스를 이용하여 서보모터 두개를 따로따로 작동 시키는 것을 만들고 싶은데 정보좀 얻을수 있을까요..ㅠ
jjangpkk@naver.com

박준호 2016-04-03 19:15:15

덕분에 배워갑니다

김진만 2016-04-13 13:14:33

잘 보고 갑니다.

keti 2016-04-17 01:53:14

안녕하세요,
강의가 정말 도움이 됩니다.
위 내용들을 참고 하여 장난감 ㅋ만들고 싶은데요
가능하시다면 안드로이드 소스제공 받을수 있을까요?
감사합니다.
메일은 pylon83@naver.com 입니다.

문형준 2016-04-23 16:47:11

갤럭시노트5(마쉬맬로우)를 사용하고 있고 오렌지보드 BLE 사용하고 있습니다.
블루투스 연결시 스마트폰상에서 페어링이 거부 됫다는 메시지가 나오는데요.
이건 어떤 경우인지 궁금합니다.

이동진 2016-04-27 00:17:19

안드로이드 소스코드는 어디서 받을수 있나여??

이동진 2016-04-27 00:17:24

안드로이드 소스코드는 어디서 받을수 있나여??

정유성 2016-08-29 18:45:47

프로젝트에 참고하고 싶습니다. 혹시 앱 소스는 받을 수 없나요?

도라에몽 2016-08-30 17:24:19

안드로이드 소스코드는 프로젝트 포인트로 받을 수 있더군요

비상 2017-04-10 14:21:34

혹시 관련 소스좀 받아 볼 수 있을까요? lovernwnsgus@naver.com

카라볼트 2017-04-26 09:50:17

BLE 감사합니다

GloNet 2017-09-05 11:40:31

혹시 안드로이드 소스좀 받아 볼 수 있을까요? nyh9000@naver.com

시노 2018-11-23 22:02:29

감사합니다

tmd512 2019-04-28 22:22:28

안드로이드 소스좀 받을수있을까요?? dudrmf1@naver.com

좋은사람 2019-05-10 19:59:31

안드로이드 블루투스 소스좀 메일 보내주시면 감사하겠습니다..^^ . lanking@naver.com 안드로이드 공부중이라 절실히.. 필요해서요..

쭈꾸짱 2019-06-14 23:08:21

오렌지보드BLE 가지고 있는데요. 여기다가 서보모터를 두개 따로 연결해서 스마트폰으로 조작하는 방법과 소스 좀 알려주세요ㅠㅠㅠㅠ 저희 동아리가 고등학교 마지막 졸업 작품을 만들고 있는데, 이게 너무 어렵네요ㅠㅠㅠㅠ kj010103@naver.com 에다가 보내주세요.

수송 2020-03-27 22:17:14

안녕하세요 하계방학특강으로 아두이노 기초특강을 수강했었습니다. kocoa어플을 이용해서 교육을 해주시더라구요.
혹시 본 어플의소스를 받아볼수있을까요? thdgustn9@gmail.com
감사합니다.

흑전 2020-04-24 15:54:29

안녕하세요 소개하신 글 잘 읽고 댓글 남김니다 저희가 아두이노를 이용해서 모터를 조작해야하는데 혹시 소스코드 참고하면 개발하는데 도움될거 같아서 혹시 소스코드를 받을 수 있을까요..??
zkfn1@naver.com 입니다!