반응형

자기 전 침대에 누워서 전등을 원격으로 끄고 싶은 때가 있습니다. 저만 그런가요? ^^  음... 뭐 그런 목적보다는 아두이노, 블루투스 모듈, 서보모터를 조합해서 제어하는 방법을 알아보려고 합니다. 만들어서 전등 스위치 같은데 붙이면 블루투스로 스위치를 켜고 끄는것도 가능할 겁니다. 이 글을 보기 전에 제가 예전에 썼던 블루투스 모듈과 서보모터 제어에 대한 글을 참고하시면 각각의 구성에 대해서 더욱 상세히 알 수 있을 겁니다.





준비물

아두이노 우노, 블루투스 모듈(HC-06), 서보모터(SG90, 브라켓), 브레드보드, 각종 연결용 케이블들

블루투스 모듈(HC-06) 입니다. 4개의 핀이 있습니다.


RXD, TXD, GND, VCC 의 단자가 있습니다. 전원은 3.6V~6V 까지 이므로 아두이노 5V를 연결하시면 됩니다.


RC 비행기, 자동차 등에 많이 쓰이는 서보모터 SG90 입니다. 5V 에서 동작 합니다. 모터 축에 끼울 수 있는 3개의 브라켓이 같이 포함되어 있습니다. 스위치 ON/OFF 용이라면 양쪽형 브라켓을 끼우는 것이 낫겠죠?


연결

bluetooth_servo.fzz

음... 막 그리다보니 너저분하네요.  그래도 색상으로 와이어가 구분되니 연결에 참고 하시길 바랍니다. 다시 정리하자면 아래의 표와 같습니다.


블루투스 모듈 (HC-06)

아두이노 우노

VCC

5V

GND

GND

TXD

D2

RXD

D3









서보모터 (SG90)

아두이노 우노

VCC (빨간선)

5V 

GND (갈색선)

GND

Signal (노란선)

D12







실제 연결한 모습 입니다. fritzing 에는 브레드보드를 이용해서 5V 전원을 나누었는데 저의 짭두이노에는 IOREF 대신에 5V가 하나 더 있네요. 그래서 브레드보드를 사용하지 않았습니다. 각자의 상황에 맞게 사용하시면 됩니다.


소스

소스는 블루투스 모듈로 문자열을 받아서 값이 on 일 경우와 그 이외의 경우 (off일 경우) 서보의 움직이는 각도를 조절합니다. 아래의 소스에서는 초기 0도 -> ON 60도 -> OFF 0도


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <SoftwareSerial.h> //시리얼 통신 라이브러리 호출
#include "Servo.h" //서보 라이브러리
 
Servo myservo; //서보객체
int blueTx=2;   //Tx (블투 보내는핀 설정)
int blueRx=3;   //Rx (블투 받는핀 설정)
SoftwareSerial mySerial(blueTx, blueRx);  //시리얼 통신을 위한 객체선언
String myString=""//받는 문자열
 
void setup() {
  myservo.attach(12);   //서보 시그널 핀설정
  myservo.write(0);     //서보 초기각도 0도 설정
  mySerial.begin(9600); //블루투스 시리얼 개방
}
 
void loop() {
  while(mySerial.available())  //mySerial 값이 있으면
  {
    char myChar = (char)mySerial.read();  //mySerial int형식의 값을 char형식으로 변환
    myString+=myChar;   //수신되는 문자열을 myString에 모두 붙임 (1바이트씩 전송되는 것을 모두 붙임)
    delay(5);           //수신 문자열 끊김 방지
  }
  
  if(!myString.equals(""))  //myString 값이 있다면
  {
    Serial.println("input value: "+myString); //시리얼모니터에 myString값 출력
 
      if(myString=="on")  //myString 값이 'on' 이라면
      {
        myservo.write(60);     //각도 60도로 움직임
      } else {
        myservo.write(0);   //각도 0도로 움직임
      }
    myString="";  //myString 변수값 초기화
  }
}
cs



테스트는 스마트폰 앱을 이용했습니다. 'Bluetooth Controller' 라는 앱 입니다. 사용이 간단해서 테스트에 좋은것 같습니다.


Bluetooth Controller 앱 입니다. 실행하고 장치검색 버튼을 눌러서 블루투스 모듈을 연결해 주어야 합니다. 블루투스 모듈의 설정에 대해서는 맨위에 링크 건 블루투스 모듈에 대한 글을 참조해 주세요.


ON / OFF 버튼을 만들어 주었습니다.


버튼은 키설정을 눌러서 만들어 줍니다. 왼쪽이 보여지는 버튼이름, 오른쪽이 블루투스 모듈로 보낼 문자열 입니다.


실행해 보았습니다. 잘 움직이네요. 반응도 즉각적 입니다. 많은 곳에 활용이 가능해 보입니다. 물론 첫머리에 언급했던 집안의 전등 스위치에도 활용이 가능하겠네요.

반응형

+ Recent posts