프로젝트

나도 메이커! 메이커스 여러분들의 작품/프로젝트를 공유하는 공간입니다.

아두이노 릴레이를 이용하여 가전제품의 전원을 제어해 봅시다.

2014-09-04 17:48:41

개요

아두이노와 릴레이를 이용하면 선풍기나 스탠드와 같은 가전제품을 제어 할 수 있습니다.



또 추가로 안드로이드로 음성인식을 해서 명령을 입력 받고 그 명령을 블루투스로 전송해 아두이노가 제품을 제어 할 수도 있습니다.

이를 이용해서 원거리 제어나 센서같은 것을 이용하여 조건부 제어를 할 수가 있습니다.

이 컨텐츠 에서는 안드로이드 음성인식을 이용하여 명령을 입력 받아 아두이노로 보내고, 아두이노에서 릴레이를 이용하여 멀티탭의 전기를 제어해 보겠습니다.

이 컨텐츠를 보시기 전에 초음파 거리 센서 사용하기와 안드로이드와 아두이노 간의 블루투스 통신 기초를 보고 오시면 이 컨텐츠를 쉽게 하실 수 있습니다.
* 이 컨텐츠는 실제 가전 제품에 이용하는 전기를 사용하기 때문에 위험합니다. 안전에 유의 하셔서 하시기 바랍니다.
 



이 컨텐츠 에서는 멀티탭을 이용했지만 직접 가전제품 분해 해서 사용하셔도 됩니다.
(물론 멀티탭도 분해 하셔서 안에다 연결 하실 수 있습니다. 하지만 어떤 가전제품이라도 안전에 유의하시기 바랍니다.)
(밑의 사진은 스탠드를 분해해서 연결 할려고 하는 사진입니다.)
출처 : OK아두이노님의 블로그

동영상 미리 보기



시작전 개념 이해하기

 - 릴레이
 - 안드로이드와 아두이노 간의 블루투스 통신 기초
 - 초음파 센서 사용하기

부품 목록

NO  부품명 수량 상세설명
1 오렌지 보드 1 아두이노 호환보드
2 릴레이 모듈(KY-019) 1 릴레이
3 블루투스 모듈(HC-05) 1 블루투스
4 초음파 거리센서(HC-SR04) 1 초음파 거리 센서
5 브레드보드 1 브레드보드
6 점퍼케이블 1 점퍼케이블


부품명 오렌지 보드 릴레이모듈 블루투스 모듈 초음파 거리센서 브레드보드 점퍼케이블
파트  



하드웨어 Making

회로도



브레드보드 레이아웃





주의사항

 이 프로젝트는 실제 가전 제품을 사용하므로(220V) 무조건 안전하게 하셔야 합니다.

콘센트를 연결 하게 되면 그 즉시 220V의 전기가 흐릅니다. 만화에서는 이 전기쥐가 100만 볼트를 날려 사람이 맞아도 안죽는다지만, 현실은 다릅니다.

자칫 잘못 하시면 큰 부상을 입을 수 있으니 작업하실 때 절연 장갑과 콘센트가 빠져있는지 꼭 확인 하시고 전선 연결중에도 합선이 되지 않도록 하시기 바랍니다.

다시 한번 강조 하지만 무조건 안전하게 하시길 바랍니다. 작업 중 잘못된 점이 있으시면 무조건 멈추시고 확인하시기 바랍니다.

멀티탭과 릴레이 연결 방법 

 이 컨텐츠에서 사용한 릴레이 모듈입니다. 릴레이를 사용하실 경우엔 전문가가 아니시면 모듈이나 쉴드로 된 제품을 사용하는게 좋습니다.(그냥 사용하실려면 여러 부품을 추가로 연결해야 합니다.)


 멀티탭 선의 피복을 벗기시면(전선이 끊어지지 않도록 조심합니다.) 안의 전선이 3개가 나옵니다. 그중 하나를 자르고 양옆 선의 피복을 벗겨 줍니다.(혹시 전선중 녹색 선이 있으시면 그 선은 안하시는게 좋습니다. 녹색선은 전기공사시 어디에 사용하는 규칙이 있다고 합니다.) 
(선을 자르고 릴레이에 연결 하실 때 꼭 절연 장갑과 멀티탭 콘센트가 빠져있는지 확인 하시고 진행 하시기 바랍니다.)

그리고 각각의 선을 가운데, 오른쪽에 넣고 나사를 조여 꽉 연결 해줍니다.(선이 빠지게 되면 위험해 질수 있으니 꼭 세게 조여주시기 바랍니다.)


릴레이는 밑의 그림을 기준으로 왼쪽부터 Signal, +, - 순서 입니다.(이 컨텐츠에서는 13번 핀을 Signal과 연결 했습니다.)

소프트웨어 Coding

#include <SoftwareSerial.h>

SoftwareSerial BTSerial(2, 3);
int bufferPosition;

int echoPin = 6; 
int trigPin = 7;
int relay = 13;
// 초음파 거리 센서는 6, 7번핀, 릴레이는 13번 핀에 연결 했습니다.
float senVal = 0; float senDur = 0; void setup() { Serial.begin(9600); BTSerial.begin(9600); bufferPosition = 0; pinMode(relay, OUTPUT); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); } void loop() { if (BTSerial.available()) { byte data = BTSerial.read(); // 블루투스로 안드로이드에서 보내준 데이터를 받는다. if (data == '1') { // 안드로이드에서 on을 입력 했을 경우 digitalWrite(relay, HIGH); } else if (data == '2') { // 안드로이드에서 off를 입력 했을 경우 digitalWrite(relay, LOW); } else if (data == '3') { // 안드로이드에서 auto를 입력 했을 경우 while (1) { float duration, distance; digitalWrite(trigPin, HIGH); delay(10); digitalWrite(trigPin, LOW); senDur = pulseIn(echoPin, HIGH); senVal = ((float)(340 * senDur) / 10000) / 2;
// 초음파 거리 센서에서 보낸 데이터에서 거리를 측정 한다.
// 초음파 거리 센서 원리는 튜토리얼에 있습니다. Serial.println(senVal); if (senVal < 40) // 40cm내에 사람이 있을 경우 { digitalWrite(relay, HIGH); // 릴레이를 작동 } else { digitalWrite(relay, LOW); // 없을 경우 릴레이를 끔 } delay(200); // 0.2초 대기
if (BTSerial.read() == '4') { // 안드로이드에서 stop을 입력 했을 경우 break; // 초음파 거리 센서로 스탠드를 조정 하는 것을 멈춘다. } } } } }
 

소프트웨어 설명

* 이 코드는 스케치를 사용하여 작성 / 업로드 합니다. 스케치에 대한 사용법은 링크를 참고 하시기 바랍니다.

우선 아두이노를 제어 할 어플(Relay.apk)를 받으셔서 설치 하신 후, 실행 하시면 밑의 왼쪽 사진 처럼 블루투스 장치 선택화면이 나오고 HC-05를(자신이 사용한 블루투스 모듈) 선택 하시면 밑의 오른쪽 화면처럼 나옵니다.


speak 버튼을 누르면 밑의 왼쪽 처럼 음성 인식 화면이 나옵니다.(구글 SST를 사용했습니다. 출처 : Android와 교감 블로그) 화면이 나오고 말을 하면 인식된 비슷한 문자들이 나옵니다.


그 중 맞는 단어를 선택 하면 밑의 인식결과 : "선택한단어" 가 뜨면서 명령이 아두이노로 전송 됩니다.(블루투스 사용)


아두이노 소스
if (data == '1') { // 안드로이드에서 on을 입력 했을 경우
      digitalWrite(relay, HIGH);
    } else if (data == '2') { // 안드로이드에서 off를 입력 했을 경우
      digitalWrite(relay, LOW);
    } else if (data == '3') { // 안드로이드에서 auto를 입력 했을 경우
      while (1) {
        float duration, distance;
        digitalWrite(trigPin, HIGH);
        delay(10);
        digitalWrite(trigPin, LOW);

        senDur = pulseIn(echoPin, HIGH);
        senVal = ((float)(340 * senDur) / 10000) / 2;
// 초음파 거리 센서에서 보낸 데이터에서 거리를 측정 한다.
// 초음파 거리 센서 원리는 튜토리얼에 있습니다. Serial.println(senVal); if (senVal < 40) // 40cm내에 사람이 있을 경우 { digitalWrite(relay, HIGH); // 릴레이를 작동 } else { digitalWrite(relay, LOW); // 없을 경우 릴레이를 끔 } delay(200); // 0.2초 대기
if (BTSerial.read() == '4') { // 안드로이드에서 stop을 입력 했을 경우 break; // 초음파 거리 센서로 스탠드를 조정 하는 것을 멈춘다. } } }

아두이노 소스 입니다. 안드로이드에서는 on이 입력 될 경우 '1', off가 입력 될 경우 '2', auto가 입력 될 경우 '3', stop이 입력 될 경우 '4' 를 전송 합니다.

1이 왔을 경우 릴레이를 작동 시켜서 멀티탭에 전원을 넣고, 2가 입력 됬을 경우 릴레이를 꺼서 전원을 끕니다. 3일 경우는 초음파 거리 센서를 작동 시켜 초음파 거리 센서와 40cm 안에 있을 경우에 릴레이를 작동 시키는 것을 반복 합니다. 초음파 거리 센서 반복 중 4가 입력 됬을 경우 반복 하던 것을 멈추고 대기 상태로 있습니다.

초음파 센서 외에도 다양한 센서를 사용할 수 있으니 센서에 맞게 아두이노 소스를 수정해서 쓰시면 됩니다.

판다마니아

초급, 초음파 거리 센서, 블루투스, 릴레이, 아두이노, 안드로이드