반응형

사실 이 글을 쓸까 말까 하다가 결국은 써 봅니다. 이유는 저번에 올린 블루투스 모듈로 서보모터를 제어하는 글과 비슷한 유형이기 때문 입니다. 그런데 댓글로 블루투스 모듈을 통해서 릴레이(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 가 잘 제어되네요.

 


반응형

+ Recent posts