이번 시간에는 라즈베리파이와 릴레이(relay) 모듈을 이용해서 웹에서 전원 제어하는 법에 대해서 다루겠다.

개발환경은 아파치+PHP+wiringpi 이다.

 

아파치+php+mysql 환경 구축은 아래의 링크을 확인하면 되고,

http://www.ilikesan.com/entry/라즈베리파이-2-에서-APMApachePHPMysql-구축및-환경설정

 

wiringpi  설치는 아래의 정식 홈페이지를 참고하시면 된다.

http://wiringpi.com/download-and-install/

 

아래의 동영상을 보면 실제 작동되는 영상과 전체적인 연결되어 있는 모습을 확인할수 있다.

 

 

프로그램소스는 아래와 같다.

------------------ relay.php --------------------------

<?php
if(@$_GET['mode']) $mode=$_GET['mode'];
else $mode="";
if($mode=="act")
{
 $str_com2="gpio write ".$_GET['gpio']." ".$_GET['value'];
// echo $str_com2;
 $re2=exec($str_com2);
 exit;
}

//디바이스 셋업
$pi_relay =array(
 array('name' =>'전원1' ,
  'gpio' =>'0',
  ),
 array('name' =>'전원2' ,
  'gpio' =>'1',
  ),
 array('name' =>'전원3' ,
  'gpio' =>'2',
  ),
 array('name' =>'전원4' ,
  'gpio' =>'3',
  ) 
);

for($i=0; $i<count($pi_relay); $i++)
{
 $relay=$pi_relay[$i];
 //gpio mode 설정
 $str_com1="gpio mode ".$relay['gpio']." out";
 //gpio 디지털 write
 $str_com2="gpio write ".$relay['gpio']." 0";
 $re1=exec($str_com1);
 $re2=exec($str_com2);
}
?>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="utf-8">
 <title>My Page</title>
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <link rel="stylesheet" href="http://code.jquery.com/mobile/1.1.2/jquery.mobile-1.1.2.min.css" />
 <script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
 <script src="http://code.jquery.com/mobile/1.1.2/jquery.mobile-1.1.2.min.js"></script>
</head>
<body>
<script>
function relay_chg(gpio,value)
{
 $.get( "?mode=act&gpio="+gpio+"&value="+value, function( data ) {
//   alert( "Data Loaded: " + data );
 });

//$.get( "?", { mode: "act", gpio: value } );
}
</script>
<div data-role="page">

 <div data-role="header">
  <h1> 4-Channel Relay Test </h1>
 </div><!-- /header -->

 <div data-role="content"> 
<?php
for($i=0; $i<count($pi_relay); $i++)
{
 $relay=$pi_relay[$i];
?>
<div class="containing-element">
 <label for="flip-min"><?echo $relay['name']?>:</label>
 <select name="flip-min" id="flip-min" data-role="slider" onchange="relay_chg('<?echo $relay['gpio']?>', this.value);">
  <option value="0" selected="selected">Off</option>
  <option value="1">On</option>
 </select>
</div>
<?php
}
?>
 </div><!-- /content -->

</div><!-- /page -->

</body>
</html>

------------------ relay.php --------------------------

위와 같은 웹프로그램 아래와 같은 웹화면으로 나온다.

jquery + jquery mobile 기반으로 핸드폰과 PC에서 제어하기 편하도록 되어 있다.

 

 

 

 

 

 아래 ↓ 라즈베리파이+ 브레드보드 + 릴레이모듈 연결사진

 

 

 아래 ↓ 브레드보드 회로 구성 간단하다.

 

 

 아래 ↓ 5채널 릴레이 모듈 연결사진

 

 

 

 

 

아래 부터는 전기 배선에 대한 사진들이다. 220V 이므로 감전및 화재에 주의 하시기 바랍니다. 혹시 모를 사고를 위해 전기에 대한 전문적인 지식이 있는 분의 도움을 받으시기를 바란다.

 

  아래 ↓ 전원선중 하나를 짤라서 릴레이 모듈에 연결했다.

 

 

  아래 ↓ 2구 콘센트를 직접만들었다.

 

  아래 ↓ 플러그는 아래와 같이 만들었다.

 

 

이상으로 강좌를 마치겠다.

다음 강좌는 릴레이 모듈 프로그램에 스케쥴을 걸어서 정해진 시간에 전원이 on/off 되도록 하는 프로그램과

집 밖에서도 핸드폰등 웹화면에서 전원(릴레이 모듈)을 제어할 수 있는 방법에 대해서 다루겠다.

  1. 피르 2015.07.01 17:21 신고

    라즈베리파이와 릴레이모듈을 사용할 일이 생겨서 검색하다가 방문하게 되었습니다.
    저희가 주문해서 받은 T자형 확장 모듈..이라고 하나요? 그걸 사용해서 하려고 하니 전류가 안흐르는것같은데, 혹시 이걸 사용하려면 꼭 납땜을 해야만 하나요? 사진이나 동영상을 보니 납땜을 하신것 같던데...
    답변해주시면 정말 감사하겠습니다. 많은 도움 얻고 가는것 같네요.

    • Favicon of http://ilikesan.tistory.com BlogIcon 산좋아해 2015.07.02 11:45 신고

      별도의 납땜은 필요없습니다.
      접속 불량일수도 있고,
      모듈마다 필요한 전압과 전류가 달라서 생기는 문제도 있으니,
      멀티미터로 한번 체크해 보시기 바랍니다.
      도움이 되었으면 좋겠습니다.

  2. BlogIcon 신해철 2015.09.17 13:58 신고

    아 꼭 해보고싶은 작업인데요.
    우선 저 릴레이모듈은 직접 만드신거에요?
    살려고 보니까 없는것 같은데 어디서 구할 수 있는지 도움좀 주세요~

    • Favicon of http://ilikesan.tistory.com BlogIcon 산좋아해 2015.10.28 11:17 신고

      릴레이모듈은 인터넷에 팔아요.
      인터넷에 릴레이모듈 치면 되고요.
      해외쇼핑몰 알리익스프레스에서 싸게 팔아요.
      아마존도 좋구요.

  3. 공대생 2017.03.10 17:39 신고

    라즈베리파이로 릴레이모듈을 통하여 제어를 하려고하는데, 작성자님의 코딩을 이용하였습니다. 그런데 궁금한것이몇가지 생겨 이렇게 글을 남깁니다.
    1. gpio값을 지정해주지 않았는데 on/off가 되나요? 작성자님은 gpio 17,18,22,27을 사용하셨던데 코딩에는 이것을 사용하는 어떠한 글이없던데 어떻게 동작하는건가요?
    2. 인터넷 서버창 까지는 띄웠는데 인터넷 창이 형성되면 따로 실행 코딩은 필요없는것인가요? python기본 예제에서 LED 제어하는 다른 분의 글에선 sudo python relayLED.py처럼 실행을 시키면 작동이 되곤 했었는데 서버 생성하면 다른 동작없이 서버의 리모콘으로 제어가 가능한것인가요?
    현재 저희는 서버창 까지 띄웠으나 서버에 버튼을 조작하여도 특별한 변화가 없습니다. 늦게 댓글을 달았는데 혹시 기억이나신다면 부탁드리겠습니다.

+ Recent posts