아두이노프로세싱 프로그래밍

GPIO LED ON OFF BLINKING 라즈베리 파이 php HTML 와이파이 코딩

coding art 2017. 7. 13. 18:37
728x90























_____________________________________________________________________________________Up to here, Advertization Area


라즈베리 파이에서 GPIO LED on/OFF/BLINKING이 가능하도록 php 와 HTML 로 구성된  코드를 작성하자. 

코드의 실행은 웹브라우저 url 창에 라즈베리 파이의 가상 IP를 입력 실행한다.
물론 라즈베리에서도 가능하지만 와이파이이기 때문에 무선 공유기가 연결된 PC 에서도 실행이 가능하다.

코드 도입부에  CSS 스타일 태그를 넣어 배경과 버튼 색을 조절하도록 하자.

배경 색은 lightblue  연한 하늘색이며 버튼 배경색은 초록색으로 설정하였다.




웹브라우저에서 버튼에 의한 입력 부분 코딩은 <form>태그 틀안에서 <input>  태그를 사용한다. CSS의 .button을 사용할 수 있도록 속성 중에서 class=“button”을 설정해 둔다.









서버에서 GPIO 제어를 위한 php 코드 부분을 도입한다.  wiringPI 가 지원되는 라즈베리 Terminal에서 GPIO 제어를 위해서는 gpio –g mode pin# I  또는 out 명령을 실행해야 한다. -g는 가장 익숫한 BCM 넘버링 체계 즉 GPIO 넘버링 체계를 설정한다. LED 제어를 위해서 mode 는 out 으로 설정한다.



버튼 클릭에 의해 url 창에 입력되는 버튼 데이터는 변수 $_POST[‘⚫⚫⚫’]에 의해 포착되어 서버로 보내진다. 한편 POST 대신 GET 도 코딩이 되어야 하나 GET을 사용할 경우에는 코드 실행이 되질 않으므로 반드시 POST를 사용하도록 하자. POST는 8비트 한 바이트 데이터를 취급하는데 GET와는 달리 실제로 url 창에서 확인이 불가능하다.

POST에 의해 버튼 데이터들 중에 on, OFF, BLINK 중에 하나가 포착이 되어 즉 isset 되면 echo 명령에 의한 출력과 system 명령에 의한 gpio –g write 명령이 실행된다.
BLINK를 위해서는 깜빡이는 시간 간격 여기서는 1초 와 on OFF 명령이 일정 횟수 즉 4회 교차 실행되어야 한다.





코드를 실행하려면 무선 공유기가 설치된 또는 핫스팟으로 와이파이가 연결되어 있는 스마트폰 웹브라우저에서 인터넷 url 주소 창에 라즈베리 파이의 가상 IP를 입력하여 request를 보내도록 한다.



아래와 같은 웹브라우저에서 LED를 on OFF BLINKING 해보자.더블클릭을 하시면 이미지를 수정할 수 있습니다









index.php


<html>

<head>

<meta name="viewport" content="width=device-width" />

<title>WIFI Controlled LED</title>

</head>

<style>

body { background-color: lightblue; }

p { color:red; font-size:250%; }

.button { background-color: green;

     border: none; color: white;

     padding: 15px 32px;text-align: center;

     text-decoration: none; display: inline-block;

     font-size: 20px; margin: 14px 20px;

     cursor: pointer;}

</style>


   <body>

   <center><b><font size = '20'>PHP+HTML Control LED:</b>       

     <form method="post">               

       <input type="submit" class="button" value="OFF" name="OFF">

       <input type="submit" class="button" value=on" name=on">

       <input type="submit" class="button" value="BLINK" name="BLINK">

                 

     </form>

     <?php

         system("gpio -g mode 17 out");

         if(isset($_POST['OFF']))   {

echo "LED is OFF";

system("gpio -g write 17 0");

         }

else if(isset($_POST['on']))    {

echo "LED is on ";

system("gpio -g write 17 1"); 

        }

else if(isset($_POST['BLINK'])) {

echo "LED is BLINKING";

for($x = 0;$x<=4;$x++)

{

system("gpio -g write 17 1");

sleep(1);

system("gpio -g write 17 0");

sleep(1);

}

}



        ?>

   </center></font>

   </body>

 </html>