아두이노2016. 5. 30. 15:44

사실 이 글을 쓸까 말까 하다가 결국은 써 봅니다. 이유는 저번에 올린 블루투스 모듈로 서보모터를 제어하는 글과 비슷한 유형이기 때문 입니다. 그런데 댓글로 블루투스 모듈을 통해서 릴레이(Relay)를 어떻게 제어하냐고 물어본 분이 계셔서 질문에 답하고자 글을 올립니다. 릴레이는 작은 전압(5V 등)으로 큰 전압(220V 등) 을 제어할 수 있도록 해 주는 부품 입니다. 이 부품을 가전제품(여기서는 선풍기) 전원선에 연결해서 전원을 ON/OFF 해 주는 것입니다. 다만 그것을 아두이노와 블루투스 모듈을 통해서 스마트폰으로 무선제어할 수 있게 해 주는 것이죠. 이 글을 보기전에 아두이노에서 릴레이와 블루투스를 어떻게 다루는지 궁금한 분들은 아래의 글을 참고하면 됩니다.

 

 

주의: 이 글 에서는 전압과 전류가 높은 위험한 가정용 220V 전원을 다룹니다. 감전되면 위험하므로 만약 따라하실 경우 상당한 주의를 요합니다. 또한 릴레이 규격은 작은 전압 제어용부터 큰 전압용까지 매우 다양하므로 반드시 용도에 맞는 정격용량의 제품을 이용해야 합니다.

 

릴레이는 위와 같이 생겼습니다. 오른쪽이 아두이노와 연결되어서 릴레이 작동 전류인 5V를 흘려주거나 끊어주는 역할을 하게 되며 그 컨트롤은 Signal 단자(HIGH/LOW)에서 하게 됩니다.  왼쪽은 제어하고자 하는 전류가 연결되는 부위 입니다. 여기에 220V 가 연결됩니다. 단자는 3개가 있는데 제가 가지고 있는 릴레이의 경우 가운데는 공통단자 이므로 교류의 경우 아무 쪽이나 한가닥 연결하면 됩니다. 직류일 경우에는 - 쪽을 연결하면 되겠죠. 그리고 위의 그림에서 1번 단자에 나머지 한 가닥의 전선을 연결하게 되면 릴레이가 ON 되었을때 전원도 ON 이 됩니다. 3번 단자에 연결할 경우는 그 반대가 됩니다. 자신의 용도에 맞게 연결하시면 됩니다.


그래서 이런 방식으로 전원 콘센트를 만들어 주었습니다. 220V 전원선의 한쪽을 끊어서 릴레이를 달아주었습니다. 릴레이는 아두이노로 ON/OFF 제어가 되어서 전원을 끊어주거나 이어주게 됩니다.



■ 연결

bluetooth_relay.fzz


릴레이 모듈

아두이노 우노

S (Signal)

D10 

+

5V

-

GND

 

블루투스 모듈 HC-06

아두이노 우노

VCC

5V

GND

GND

TXD

D2

RXD

D3


위와 같이 연결해 주었습니다. 외부전원으로는 9V 배터리를 이용해 주었습니다. 블루투스 모듈이나 릴레이나 모두 5V 전원을 이용하므로 아두이노에 5V 단자가 하나 밖에 없는 경우 브레드보드 등을 이용해서 5V 를 나누어서 사용해야 합니다. 저의 아두이노 우노의 경우엔 복제품이라 5V 단자가 2개가 있어서 브레드보드 없이 바로 연결해 주었습니다. 위의 그림과 같이 오리지널 아두이노 우노의 경우엔 5V 가 하나 밖에 없습니다.

 

그림에 보이는 릴레이 ON 과 C 단자에 직접 만든 콘센트를 연결해 주었습니다. 만약 릴레이 OFF 상태에서 콘센트의 전원이 켜지도록 하려면 NC 와 C 에 콘센트를 연결을 해 주면 됩니다.

 

간단한 원리를 설명하자면 스마트폰과 페어링된 블루투스 모듈로 'on' 또는 'off' 라는 문자열을 블루투스 모듈로 보냅니다. 블루투스 모듈은 받은 문자열을 아두이노로 보냅니다. 아두이노에서는 이 문자열이 'on' 인지 다른 문자열인지 판단하여 프로그램 소스에 의해서 릴레이를 ON 또는 OFF 하게 되는 것입니다. 릴레이가 ON 되면 차단되었던 전원이 연결되고 콘센트에 연결된 가전제품이 전원을 공급받게 되어 작동하게 됩니다.

 

  

■ 소스


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> //시리얼 통신 라이브러리 호출
 
int blueTx=2;   //Tx (블투 보내는핀 설정)
int blueRx=3;   //Rx (블투 받는핀 설정)
int relay = 10//릴레이 Signal 핀 설정
 
SoftwareSerial mySerial(blueTx, blueRx);  //시리얼 통신을 위한 객체선언
String myString=""//받는 문자열
 
void setup() {
  mySerial.begin(9600); //블루투스 시리얼 개방
  pinMode (relay, OUTPUT); // relay를 output으로 설정
}
 
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' 이라면
      {
        digitalWrite (relay, HIGH); // 릴레이 ON
      } else {
        digitalWrite (relay, LOW); // 릴레이 OFF
      }
    myString="";  //myString 변수값 초기화
  }
}
 
cs

 

소스는 블루투스 서보모터 제어에 관한 글에서 사용한 소스를 조금 수정해 주었습니다. 제어를 위한 스마트폰 앱은 Bluetooth Controller 앱을 이용하였습니다.


 

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


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


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

 

이 앱 말고도 여러가지 블루투스 앱이 있으므로 취향에 따라 선택하시면 됩니다. 어차피 블루투스로 on 또는 off 라는 문자열만 전송할 수 있으면 됩니다.

 

 

스마트폰앱을 이용해서 블루투스로 릴레이를 제어하는 모습 입니다. 선풍기 ON/OFF 가 잘 제어되네요.

 


반응형
Posted by 대네브 (deneb)

댓글을 달아 주세요

  1. 아두이노 초보자

    안녕하세요!!포스팅 잘 봤습니다!!
    다름이 아니고 위 포스팅에서 블루투스음성으로 pc의 전원을 제어 할수 있을까요??
    전원이 들어간 상태에서 음성으로 부팅을 시킬수 있는지에 대해 궁금점이 생겨서 글을 올립니다.

    2016.09.04 11:24 [ ADDR : EDIT/ DEL : REPLY ]
    • 관건은 제어할 스마트폰? PC? 의 응용프로그램(앱)을 잘 만드는 것 이겠네요. 예를들어 스마트폰의 블루투스 제어앱에 음성이 들어오면 그것이 켜라는 것인지 끄라는 것인지 판단해서 그에 맞는 신호를 아두이노의 블루투스 모듈에 보내면 님이 말한 기능도 충분히 가능 합니다.

      2016.09.04 13:00 신고 [ ADDR : EDIT/ DEL ]
  2. 아두이노 초보자

    감사합니다. 신경써주셔서 답변해주셔서 고맙습니다.
    그런데 궁금한점이 또 생겨서 여쭤봅니다..ㅠ
    컴퓨터나 tv같은 경우에 전원이 공급 되어 있는 상태에서 버튼이나 리모컨을 눌러서 on시키는 것인데 그 부분을 프로그래밍으로 작동시키나요?아니면 그 부분도 선으로도 연결을 해주어야 할까요..?

    2016.09.06 10:35 [ ADDR : EDIT/ DEL : REPLY ]
    • 음... 글쎄요. 릴레이의 기능이 단순히 전원을 온오프하는 기능인데 티비나 컴퓨터나 전원을 넣는다고 켜지진 않죠. 티비는 적외선 센서 달아서 켤 수 있거나 온오프 스위치쪽을 개조하면 가능할 것이고 컴퓨터는 네트워크 부팅을 이용하거나 이것도 보드쪽에 스위치 신호를 받는 쪽에 릴레이를 연결해도 가능하겠네요

      2016.09.06 18:53 신고 [ ADDR : EDIT/ DEL ]
  3. 옹스

    안녕하세요 질문이 있습니다
    비슷한 시스템구성을 구성하려고 알아보던 차에 릴레이 코일을 구동하기 위한 TR도 필요하다고 하는내용을 읽었는데 본내용에서는 없는것 같아서요
    혹시 해당내용에 대해 아시는 바 있으시면 답변을 좀 부탁드립니다

    2016.11.14 08:31 [ ADDR : EDIT/ DEL : REPLY ]
    • 릴레이 코일? 구동에 tr이 필요하다면 달아야겠죠. 제가 사용한 릴레이는 5v 로 동작하는 릴레이라 tr 필요 없습니다.

      2016.11.14 15:52 신고 [ ADDR : EDIT/ DEL ]
  4. 니모

    위 릴레이를 구동하려면 재료가 뭐뭐 잇어야되는건가요

    2016.11.30 14:24 [ ADDR : EDIT/ DEL : REPLY ]
    • 아두이노, 블루투스모듈,릴레이모듈,회로 케이블,전선,220v콘센트&플러그 등이 필요 합니다.

      2016.11.30 15:38 신고 [ ADDR : EDIT/ DEL ]
  5. 현우

    저도 거의 저렇게 똑같이 했는데
    아두이노 전원으로 usb를 사용했을 때는 괜찮은데
    9V 배터리를 전원으로 사용하면 배터리가 조금 달면
    릴레이모듈만 작동되고 블루투스 모듈은 꺼지더라고여
    혹시 해결책 없을까요..??

    2017.05.06 23:14 [ ADDR : EDIT/ DEL : REPLY ]
    • 9V 건전지도 좀 비싼 알카라인 건전지를 써 보세요. 시중에서 개당 5000원 정도 하는데 다이소 같은데 가면 알카라인 9V 건전지를 2000원에 살 수 있어요.

      2017.05.08 16:09 신고 [ ADDR : EDIT/ DEL ]
  6. 안녕

    감사합니다!!! 찾고있었는데 이게 가장 도움돼네요ㅎㅎ
    광고하나 눌러드렸습니다~

    2020.09.11 17:34 [ ADDR : EDIT/ DEL : REPLY ]