자기 전 침대에 누워서 전등을 원격으로 끄고 싶은 때가 있습니다. 저만 그런가요? ^^ 음... 뭐 그런 목적보다는 아두이노, 블루투스 모듈, 서보모터를 조합해서 제어하는 방법을 알아보려고 합니다. 만들어서 전등 스위치 같은데 붙이면 블루투스로 스위치를 켜고 끄는것도 가능할 겁니다. 이 글을 보기 전에 제가 예전에 썼던 블루투스 모듈과 서보모터 제어에 대한 글을 참고하시면 각각의 구성에 대해서 더욱 상세히 알 수 있을 겁니다.
준비물
아두이노 우노, 블루투스 모듈(HC-06), 서보모터(SG90, 브라켓), 브레드보드, 각종 연결용 케이블들
블루투스 모듈(HC-06) 입니다. 4개의 핀이 있습니다.
RXD, TXD, GND, VCC 의 단자가 있습니다. 전원은 3.6V~6V 까지 이므로 아두이노 5V를 연결하시면 됩니다.
RC 비행기, 자동차 등에 많이 쓰이는 서보모터 SG90 입니다. 5V 에서 동작 합니다. 모터 축에 끼울 수 있는 3개의 브라켓이 같이 포함되어 있습니다. 스위치 ON/OFF 용이라면 양쪽형 브라켓을 끼우는 것이 낫겠죠?
연결
음... 막 그리다보니 너저분하네요. 그래도 색상으로 와이어가 구분되니 연결에 참고 하시길 바랍니다. 다시 정리하자면 아래의 표와 같습니다.
블루투스 모듈 (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 버튼을 만들어 주었습니다.
버튼은 키설정을 눌러서 만들어 줍니다. 왼쪽이 보여지는 버튼이름, 오른쪽이 블루투스 모듈로 보낼 문자열 입니다.
실행해 보았습니다. 잘 움직이네요. 반응도 즉각적 입니다. 많은 곳에 활용이 가능해 보입니다. 물론 첫머리에 언급했던 집안의 전등 스위치에도 활용이 가능하겠네요.
'아두이노' 카테고리의 다른 글
[아두이노] 불쾌지수에 따라 자동으로 켜지는 선풍기 (DHT11 온습도센서, 릴레이 이용) (25) | 2016.06.09 |
---|---|
[아두이노] 블루투스 모듈(HC-06)과 릴레이를 이용해서 220V 전원을 무선으로 제어하기 (12) | 2016.05.30 |
[아두이노] 6축 자이로/가속도 센서 MPU-6050 의 사용 (19) | 2016.05.17 |
[아두이노] GPS 모듈의 사용 2편 - GPS 추적기 만들기 (GPS Tracker) (16) | 2016.05.13 |
[아두이노] GPS 모듈의 사용 1편 - GPS 로그 찍어보기 (58) | 2016.05.12 |