고급 예제

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

(3)안드로이드x아두이노 블루투스 통신- 서보모터 제어

2015-03-20 10:19:41

개요

 

* 이 컨텐츠를 보시기 전에 안드로이드와 아두이노 간의 블루투스 통신 기초를 보고 오시기 바랍니다.

 

안드로이드와 아두이노 간의 블루투스 통신 기초에서 아두이노 블루투스 모듈을 이용하여 안드로이드와 블루투스 통신을 해보았습니다. 이제부터 간단한 예제들을 통해서 아두이노의 각 부품들을 제어해 보겠습니다.

 

지난번 컨텐츠에서는 아두이노에 3색 LED를 연결하여 안드로이드에서 3가지 색을 각각 제어하는 예제를 실습해 보았습니다. 이번 컨텐츠에서는 아두이노에 서보모터를 연결하여 안드로이드의 기울기 센서와 버튼을 통해 제어해보는 예제를 실습해 보겠습니다.

 

 

미리보기 동영상

 

 

 

부품 목록

 

NO 부품명 수량 상세설명
1 오렌지 보드 1  
2 블루투스 모듈 1 HC-05
3 서보 모터 1 SG90
4 브레드보드 1  
5 점퍼케이블 9  

 

부품명 오렌지 보드 블루투스 모듈 서보 모터 브레드보드 점퍼케이블
파트

 

 

 

하드웨어 Making

 

회로도

 

브레드보드 레이아웃

 

 

 

소프트웨어 Coding

 

#include  // 블루투스 통신을 위한 SoftwareSerial 라이브러리를 불러온다.
#include   // 서보모터를 이용하기 위한 Servo 라이브러리를 불러온다.

SoftwareSerial BTSerial(2, 3); // SoftwareSerial(RX, TX)
byte buffer[1024]; // 데이터 수신 버퍼
int bufferPosition; // 버퍼에 기록할 위치

Servo servo;

int motorAngle = 0;
int servoVal = 0;
int servoAngle = 90;

void setup () {
  servo.attach(9);

  BTSerial.begin(9600);
  Serial.begin(9600);
  bufferPosition = 0;
}

void loop () {
  if (BTSerial.available()) {
    byte data = BTSerial.read();
    buffer[bufferPosition++] = data; 

    Serial.println(data);


    switch(data){      
    case 'w':
      angleSet(0);
      break;

    case 'e':
      angleSet(1);
      break;

    case 'j':
      angleWrite(0);
      break;

    case 'i':
      angleWrite(45);
      break;

    case 'k':
      angleWrite(90);
      break;

    case 'o':
      angleWrite(135);
      break;

    case 'l':
      angleWrite(180);
      break;

    case '\n':
      bufferPosition = 0;
      break;
    }
  }
}

void angleSet(boolean flag){ // 안드로이드 기울기값을 통해 서보모터를 제어하는 함수
  if(buffer[0] != 10){
    if (bufferPosition == 4) {
      motorAngle = (buffer[0]-48)*100 + (buffer[1]-48)*10 + (buffer[2]-48);
    } 
    else if (bufferPosition == 3) {
      motorAngle = (buffer[0]-48)*10 + (buffer[1]-48);
    } 
    else if (bufferPosition == 2) {
      motorAngle = buffer[0] - 48;
    }

    if(flag){
      motorAngle *= -1;
    }

    Serial.print("motorAngle = ");
    Serial.println(motorAngle);

    motorAngle = map(motorAngle, 150, -150, 30, 150);
    servo.write(motorAngle);
  }
}

void angleWrite(int angle){  // 버튼을 통해 서보모터를 제어하는 함수
  servo.write(angle); 
}

 

 

소프트웨어 설명

 

아두이노에 블루투스 모듈을 연결하고 안드로이드에서 블루투스 페어링 하는 방법은 이전 컨텐츠 '안드로이드와 아두이노 간의 블루투스 통신 기초 - 1. LED불 깜박이기' 에서 소프트웨어 설명을 보시기 바랍니다.

 

안드로이드에서 블루투스 모듈과 페어링 하시고, 안드로이드 어플(BT_Servo.apk)을 받으셔서 설치 / 실행 하신 후 블루투스 연결까지 하시면 밑의 사진과 같이 화면이 나옵니다.

 

0, 45, 90, 135, 180 버튼은 서보모터를 각각 해당하는 숫자 만큼 움직이는 버튼이고, 밑의 SensorMode 버튼은 스마트폰의 기울기 센서를 이용한 서보모터 각도 제어를 On / OFF 하는 버튼입니다.

 

 

 

    switch(data){      
    case 'w':
      angleSet(0);
      break;

    case 'e':
      angleSet(1);
      break;

    case 'j':
      angleWrite(0);
      break;

    case 'i':
      angleWrite(45);
      break;

    case 'k':
      angleWrite(90);
      break;

    case 'o':
      angleWrite(135);
      break;

    case 'l':
      angleWrite(180);
      break;

    case '\n':
      bufferPosition = 0;
      break;
    }

 

Switch~case문을 이용하여 안드로이드에서 보낸 명령에 맞는 동작을 하는 코드입니다. j, i, k, o, l 이 5개 명령은 어플에 각도 버튼 5개에 해당하는 명령이고, w, e 는 기울기 센서를 사용할 경우 오른쪽, 왼쪽에 해당하는 명령입니다.

 

각도 버튼에 해당하는 명령어들은 해당 각도에 맞게 이동하도록 write해주시면 되고, 기울기 센서를 이용하실 경우 이전 컨텐츠 블루투스를 이용하여 3색 LED를 제어하는 것을 보시고 안드로이드에서 보낸 숫자를 확인하는 방법을 참고하시면 됩니다.

 

이 컨텐츠를 응용하여 아두이노의 다른 부품을 제어하실 경우 기울기 센서를 이용할 경우 w(오른쪽), e(왼쪽) 값이 들어가고, 버튼을 이용할 경우 j, i, k, o, l 을 사용하니(왼쪽부터) 코드를 참고 하셔서 문자값(명령어)를 이용하여 제어하시면 됩니다.

(안드로이드 어플을 수정하실 수 있으셔서 어플에 대한 코드가 필요하신 분은 댓글로 문의 남기시면 직접 보내드립니다.)

* 다음 컨텐츠에서는 아두이노에 모터쉴드와 DC모터를 연결하여 안드로이드에서 방향 + 속도를 제어해 보겠습니다.

 

kocoafabeditor

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

블루투스모듈 ,서보모터, 아두이노, 오렌지보드

원종섭 2015-03-22 20:08:11

안녕하세요? 올려 놓으신 내용 잘 보고 있습니다. 안드로이드와 아두이노 간의 블루투스 통신 기초 포스팅에 있는 안드로이드 어플 코드들 (기초-1 ,2, 3) 보내 주실 수 있을런지요? (이메일은 wjsdw@dreamwiz.com)

전민석 2015-05-22 11:15:58

저 서보모터 제어어플를 약간 수정해서 사용하고 싶은데... apk파일이라서 수정이 안되네요. 혹시 메일로좀 보내
주실 수 있으신지요??(이메일 : lateinos12@naver.com)

김요한 2015-05-25 16:47:39

안녕하세요 저는 이런 어플을 통해 쿼드콥터를 제어하려고 하는 전자공학과 학생입니다.
어플을 조금 수정해서 만들어보고 싶어서 문의 드립니다.
시간되시면 메일로 보내주시면 감사하겠습니다.
(skdmlwlq100@naver.com)

김민식 2015-05-28 21:33:52

안녕하세요? 좋은 자료 잘 보고 있습니다 이번 블루투스모듈을 이용해서 제어하는 서보모터 코드를 받을 수 있나 해서 글 올려 봅니다. 감사합니다 (music6842@naver.com)

강동우 2015-06-01 14:26:14

안녕하세요 좋은 정보 잘 보고 있습니다. 이번에 서보 모터 제어를 이용해서 작품을 하나 만들려고 하는데 안드로이드 소스를 참고하고 싶은데, 안드로이드 소스를 받을 수 있나 싶어 문의 드립니다.
메일로 보내주시면 감사하겠습니다.(jaep17@naver.com)

김현호 2015-06-02 13:03:22

안녕하세요. 좋은 정보 잘 봤습니다. 저도 이번에 서보 모터 제어를 이용해서 작품을 만드려고 하는데 안드로이드 소스를 받을수 있을까요? 부탁드립니다.. 시간되시면 보내주세요
(zipqwer2000@hanmail.net)

권태영 2015-07-16 15:46:21

학생들 교육하는데 apk 파일의 수정이 필요하네요. 안드로이드 소스 부탁드립니다.

(crom7954@nate.com)

서상은 2015-08-19 16:36:42

작성자님 혹시 저 코드 그대로 사용하고 블루투스 모듈 이랑 서보모터가 위에 기재된 것과 다른 것을 사용했을때도 그대로 작동가능한가요??

김석현 2015-08-25 10:07:54

판다마니아님 좋은 정보 잘 보고 있습니다. 서보 모터를 원격으로 제어하는 작품을 제작중에 있습니다. 괜찮으시면 안드로이드 소스를 얻을 수 있을까요? 감사합니다. (bruno.kim02@gmail.com)

김태원 2015-09-04 10:55:43

아두이노를 활용하여 스마트원격 도어락 제어를 사용하기위해 서보모터를 사용하고있는데요
안드로이드 코딩 소스좀 알수 있을까요?
(uzoayoe@gmail.com)

박수정 2015-10-06 16:00:05

안녕하세요! 안두이노로 문 잠금장치 제어 설계하고싶은 전기공학부 학생입니다. 안드로이드 앱을 처음 접하는데요. 코딩을 참고하고싶어서 문의 남깁니다. 서보모터 코딩과 함께 다른 블루투스 앱 코딩도 공부해보고 싶습니다~ psj911122@naver.com 부탁드립니다~

지구정복 2015-10-28 20:56:23

안녕하세요? 올려주신 내용으로 공부하는 학생입니다. 안드로이드와 아두이노 간의 블루투스 통신 기초 포스팅에 있는 안드로이드 스튜디오 어플 코딩보내 주실 수 있으신가요? (이메일은 spfhstidls@gmail.com)

정상훈 2015-11-11 15:33:44

안녕하세요? 아두이노로 RC카를 만드려는 학생입니다. BT_Servo.apk 어플 소스를 보내주시면 감사하겠습니다. (radon99@naver.com)

임태호 2015-11-30 16:39:52

안녕하세요 좋은글 잘봤습니다. 제가 아두이노 센서값들을 안드로이드 edittext 뷰에 받아오려고하는 작업을 하려는데 우선적으로 센서값을 안드로이드에서 확인해보고 싶은데 안드로이드 기본 소스좀 보내주실수있으신지요 ?? 조도나 온도센서같은 일정한 값을 확인해보고 싶습니다 블루투스를 이용해서요 ㅠ 안드로이드쪽 소스를 모르곘어서 부탁드리겠습니다 thid89@naver.com 입니다

박승용 2016-01-12 12:50:03

안녕하세요 저도 안드로이드 어플 공부중인데 소스 알수있을까요
seungyeng@hanmail.net 으로 보내주시면 정말로 감사하겠습니다.

권영훈 2016-02-10 19:33:59

안녕하세요, 이 강좌를 통해 많은 도움을 받고 있는 학생입니다. 저희 이번 프로젝트에 BT_Servo.apk 어플리케이션 이 많은 도움이 되는데요, 어떻게 구성되어있는지 소스를 보내주실 수 있나요? yhkk2585@naver.com 입니다. 감사합니다.!

이웅원 2016-02-15 15:27:44

안녕하세요! 안드로이드어플로 드론을 조종하고 싶은데 이 어플을 참고하려합니다. BT_Servo.apk 어플 소스를 보내주시면 도음이 많이 될 것 같습니다. dnddnjs11@naver.com 으로 보내주시면 감사할 것 같습니다!

이정안 2016-02-24 03:34:06

안녕 하세요.. 공부를 하고 싶어서요..~~^^ BT_Servo.apk 어플 소스를 보내주신다면 많은 도움이 될 것 같습니다.
jacomyl@gmail.com 감사 합니다.

우리나라 2016-03-22 13:34:19

안녕하세요
스마트 폰 거치대 컨트롤러 [PART 1] 이것을 조이스틱 대신 블루투스 통신을 이용하여 만들어 보고싶습니다.
지식이 너무 부족해서 교육도 보고 대략적으로 구상은 되는데 서보모터 두개 코딩과 어플만드는 쪽에서 막혔는데
도움좀 받을수 있을까요..
jjangpkk@naver.com 부탁드립니다..

김국회 2016-05-17 11:46:23

자료 잘보고 있습니다 감사합니다. 부탁이 있습니다. BT_Servo.apk 어플 소스나 안드로이드와 아두이노 간의 블루투스 통신 기초 포스팅에 있는 안드로이드 어플 코드들 (기초-1 ,2, 3) 보내 주실 수 있을런지요? (이메일은 kgh4803@nate.com)

탁혜진 2016-05-27 16:54:03

안드로이드 어플 소스코드 얻을 수 있을까요?
thj0905@naver.com

네파리안 2016-06-01 11:02:24

안녕하세요 좋은 정보 정말 잘 보고 있습니다. 저희가 BT_Servo.apk를 이용하려고 하는데 안드로이드와 아두이노 블루투스 모듈 간의 연결하는 법을 잘 몰라 댓글 올립니다. 제가 알기론 그 둘을 연결하고 통신하는데 필요한 코드가 필요하다고 하던데 제 메일로 보내주실 수 있을런지요?? (이메일은 hankspark@naver.com)

네파리안 2016-06-01 16:42:42

윗 댓글과 똑같은 사람인데요 안드로이드 어플 소스 코드도 얻을 수 있을까요?? (hankspark@naver.com)

김현나 2016-06-30 14:20:40

안녕하세요 자료잘보았습니다. 혹시 안드로이드 어플 소스코드좀 공유가능할까요?
(hyunna7044@naver.com)

오렌지 2016-07-08 11:14:25

안녕하세요 좋은 정보 잘 봤습니다. 이번에 블루투스를 이용한 서보 모터 제어하는 방법으로 작품을 하나 만들려고 하는데 안드로이드 소스를 참고하고 싶은데, 안드로이드 소스를 받을 수 있나 싶어 문의 드립니다.
메일로 보내주시면 감사하겠습니다.(yej3618@naver.com)

김정욱 2016-07-19 10:21:27

안녕하십니까! 좋은 글 감사합니다!!
저도 어플 소스를 좀 보내주시면 도움이 많이 될 것 같습니다!!
kimmail93@naver.com 로 시간이 가능하실 때 보내주시길 바랍니다!
감사합니다!!!

한상준 2016-08-16 14:56:26

pulseoximeter 제작중입니다.
어플소스 보내주시면 도움이 많이 되겠습니다.
sjhahn@kaist.ac.kr

최원준 2016-09-04 15:23:18

안녕하세요 좋은글 잘 보았습니다
어플소스 받고 싶어서 댓글답니다~
안드로이드 스튜디오로 하신건가요??
wonjun1014@naver.com

강상호 2016-09-12 14:15:44

안녕하세요
이번에 아두이노 관련 프로젝트를 하고 있습니다.
이번 예제의 안드로이드 소스코드를 보면서 공부하고 싶습니다.
sh21kang@naver,com 으로 안드로이드 소스좀 부탁드립니다.

이장후 2016-11-20 22:10:07

이상하게 블루투스만 연결하면 안 되네요;

노길우 2016-12-14 16:54:20

안녕하세요 저도 안드로이드 어플 공부중인데 소스 알수있을까요
ndak899@gmail.com 으로 보내주시면 정말로 감사하겠습니다.

김도현 2017-01-20 16:24:24

안녕하세요 저 안드로이드 스튜디오 공부중인데 소스좀 알수있을까요
메일은 jjangalvin@naver.com 입니다
보내주시면 정말 감사하겠습니다

최준영 2017-04-05 01:05:19

안녕하세요 안드로이드 스튜디오 공부중에 찾아왔습니다.
소스 파일좀 받고싶습니다.
메일은 ckckckgfd5@naver.com 인데 보내주시면 정말 감사드리겠습니다..ㅠㅠ

은수짱 2017-05-14 16:27:52

대학생 작품에 안드로이드로 아두이노를 블루투스 통신하여 안드로이드를 제어하는것을 연구중인데 잘 안되서 소스를 참고하고 싶습니다 소스좀 보내주세요 dmstn1124@naver.com입니다 부탁드립니다~

아두이노공부 2017-05-25 15:04:23

안녕하세요. 저는 현재 직장인이면서 야간대학교를 다니고 있는 사람입니다. 제가 이번 대학교 졸업작품으로
아두이노와 블루투스를 통해서 자동차를 제어하려고 합니다. 기울기를 통해 핸드폰을 기울이면 서보모터가 같이 움직이는 장면이 인상적이었습니다. 안드로이드 어플을 조금 수정해서 사용하고 싶은데
소스좀 받아볼 수 있을까요..ㅠ frree@naver.com 입니다. 많은 도움이 될 것 같습니다. 감사합니다!

안드로이드 2017-05-25 16:41:21

안녕하십니가 안드로이드 스튜디오 를 이용하여 아두이노를 제어하는 것을 실습하는중인데
소스 참고 하고싶습니다.
메일은 wjsrnrgussla@naver.com 입니다. 부탁드리겠습니다.

안드로이드공부중 2017-09-12 17:37:49

안녕하세요 이번에 학교 작품 준비하는 과정에서 안드로이드를 이용한 모터제이거가
필요한 상황인데 소스를 좀 보내주실 수 있으신가요....
zkqtoa@naver.com 과제를 하는데 있어 큰 도움이 될 것 같습니다....ㅜㅜ

안드 2017-09-28 16:38:12

안녕하세요 이것과 관련하여 공부중인데 도움을 받고 싶어서 소스코드를 참고하고 싶습니다
rmsdud3539@naver.com입니다. 감사합니당 ㅜㅜ

아두이노열공 2017-10-06 19:20:58

어플로 모터제어 하는 것을 공부 중인데 안드로이드 어플 소스를 참고하고싶은데 보내 주실수있나요??
yjung987@naver.com 입니다 보내주시면 감사하겠습니다!!

김혜리 2017-10-22 20:09:59

안드로이드 어플 소스 보내주실수 있을까요? 부탁드립니다....
harry5948@naver.com

종즈 2017-10-24 11:29:19

안드로이드 어플소스 보내주실수있을까요 ㅜㅜ 공부중인데 어려워서 부탁드립니다
yjh950724@gmail.com

lyanny 2018-05-11 12:18:06

hyerim6902@naver.com
안드로이드 어플 소스 부탁드립니당!

하무지누 2018-05-12 13:48:36

안녕하세요. 안드로이드 어플 소스를 조금 더 수정하고 개발해서 사용하고 싶은데요. 혹시 소스를 좀 보내 주실 수 있을까요? gkawlsdn12@naver.com 으로 보내 주시면 감사하겠습니다!

유정 2018-05-21 01:43:19

안녕하세요 혹시 안드로이드 어플 소스를 이용해서 공부를 하고 싶은데 혹시 소스를 보내주실 수 있을까요? yuyu413@naver.com으로 부탁드립니다!

오늘의주인공은나야나윤문식 2018-07-05 15:45:23

안녕하세요 안드로이드앱 소스 좀 받을 수 있을까요 ? 변형해서 실습 한 번 해보려구요! 이메일은 tjddnjsaa@naver.com 입니다 ㅎ

라라라라라 2018-07-12 15:51:29

안녕하세요!개발하는데 어려움이 있어 그런데 안드로이드 소스 공유 해주실 수 있나요? graduate8282@gmail.com으로 부탁드려요!

dlskawo 2018-08-08 17:01:15

저도 안드로이드 앱 소스 좀 부탁 드려도 될까요..
dlskawo0409@naver.com 입니다.

콩쥐 2018-11-01 11:25:04

안드로이드 앱 소스좀 부탁드려도 드려요 congge1@naver.com

빠끼 2019-04-29 20:30:51

안녕하세요, 졸업작품만드는데 어플소스를 참고하고싶은데 혹시 부탁드려도 될까요..?
메일주소는 jungjhoo@naver.com입니다.

갓두이노 2019-05-06 23:06:55

자료들 잘보고있습니다. 이번에 블루투스로 서보모터를 제어해서 작동시키는 졸업작품을 만들고있는데 안드로이드 앱 소스좀 부탁드려도될까요? lsm9483@naver.com 입니다.

좋은사람 2019-05-10 20:03:09

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

yeji 2019-05-15 13:40:34

안녕하세요! 안드로이드 어플 소스좀 부탁드려도 될까요...?? byj629@naver.com 입니다! 항상 감사드려요!!

소심킹 2019-07-19 15:09:59

아두이노 코드의 analogSet 함수에서 아스키 코드를 이용해 버퍼를 읽는것보단 문자열을 실수형으로 바꿔주는 함수(atoi 같은)를 사용하는 것도 좋은 선택이라고 생각합니다.

적분이싫어요 2019-07-23 17:34:47

안녕하세요! 이번에 대회준비에 어플소스를 참고하고싶습니다. 어플소스를 보내주시면 감사하겠습니다!
ymyhjh2@naver.com
감사합니다!

슈슈 2019-10-17 14:44:58

안녕하세요. apk 소스 공유 받을 수 있을까요? pakssu7@naver.com 입니다. 감사합니다.

아두이노잘하고싶다 2020-11-11 01:54:50

안녕하세요! 어플 소스 코드 받고 싶습니다. ophelia156@naver.com입니다. 감사합니다.

꼬마 2021-07-13 10:41:09

안녕하세요!!
apk소스 참고하고 싶습니다. ㅠㅠ
kyh030504@naver.com으로 보내주시면 감사합니다.

손지민 2021-07-28 22:18:22

안녕하세요!
apk 소스 참고하고 싶습니다.
thswlals0704@naver.com
부탁드립니다.