이번 시간에는 라즈베리파이와 릴레이(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.03 |
---|---|
라즈베리파이와 릴레이(relay) 모듈을 이용해 전원 제어하기 (5) | 2015.06.10 |
라즈베리파이2에서 php을 이용하여 온도 저장으로 그래프로 출력하기. (0) | 2015.06.02 |
라즈베리파이 에서 php 에러 출력하기 (0) | 2015.05.24 |
라즈베리파이 2 DS18B20 온도센서 PHP 프로그램, MySQL DB 저장 (9) | 2015.05.14 |
라즈베리파이 2에서 APM(Apache,PHP,Mysql) 구축및 환경설정 (6) | 2015.05.13 |
아두이노 라즈베리파이 온도센서 방수형 DS18B20 사용법 (4) | 2015.05.09 |
라즈베리파이 아두이노 온도센서 방수형 DS18b20 상품 설명과 구매 (0) | 2015.05.09 |
라즈베리파이2 시간(timezone) 설정하기 (0) | 2015.05.09 |
라즈베리파이 2 무선랜 아이피 고정하기 (2) | 2015.05.03 |
-
피르 2015.07.01 17:21
라즈베리파이와 릴레이모듈을 사용할 일이 생겨서 검색하다가 방문하게 되었습니다.
저희가 주문해서 받은 T자형 확장 모듈..이라고 하나요? 그걸 사용해서 하려고 하니 전류가 안흐르는것같은데, 혹시 이걸 사용하려면 꼭 납땜을 해야만 하나요? 사진이나 동영상을 보니 납땜을 하신것 같던데...
답변해주시면 정말 감사하겠습니다. 많은 도움 얻고 가는것 같네요. -
신해철 2015.09.17 13:58
아 꼭 해보고싶은 작업인데요.
우선 저 릴레이모듈은 직접 만드신거에요?
살려고 보니까 없는것 같은데 어디서 구할 수 있는지 도움좀 주세요~ -
공대생 2017.03.10 17:39
라즈베리파이로 릴레이모듈을 통하여 제어를 하려고하는데, 작성자님의 코딩을 이용하였습니다. 그런데 궁금한것이몇가지 생겨 이렇게 글을 남깁니다.
1. gpio값을 지정해주지 않았는데 on/off가 되나요? 작성자님은 gpio 17,18,22,27을 사용하셨던데 코딩에는 이것을 사용하는 어떠한 글이없던데 어떻게 동작하는건가요?
2. 인터넷 서버창 까지는 띄웠는데 인터넷 창이 형성되면 따로 실행 코딩은 필요없는것인가요? python기본 예제에서 LED 제어하는 다른 분의 글에선 sudo python relayLED.py처럼 실행을 시키면 작동이 되곤 했었는데 서버 생성하면 다른 동작없이 서버의 리모콘으로 제어가 가능한것인가요?
현재 저희는 서버창 까지 띄웠으나 서버에 버튼을 조작하여도 특별한 변화가 없습니다. 늦게 댓글을 달았는데 혹시 기억이나신다면 부탁드리겠습니다.