본문 바로가기

컴퓨터 프로그래밍/라즈베리파이

라즈베리파이와 릴레이(relay) 모듈을 이용해 전원 제어하기

이번 시간에는 라즈베리파이와 릴레이(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 되도록 하는 프로그램과

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