Pierwsze kroki z Raspberry Pi: zdalne sterowanie urządzeń przez Ethernet i Internet
W przykładzie pokażemy aplikację komputera Rapsberry Pi, w której spełnia on rolę zdalnego sterownika urządzeń elektrycznych przez Internet. W przykładowej aplikacji pokażemy jak skonfigurować komputer do sterowania dwoma urządzeniami zasilanymi napięciem 230 VAC, na poniższym filmie pokazano wykorzystanie jednej z tych linii do sterowania lampką za pośrednictwem strony internetowej oglądanej przez przeglądarkę telefonu komórkowego.
Przygotowanie
Do sterowania liniami GPIO użyję pakietu wiringPi , część jego funkcji jest opisana w artykule Raspberry Pi – pierwsze kroki: obsługa GPIO z wiersza poleceń , a jego instalację proponuję wykonać w następujący sposób:
cd /home/pi sudo apt-get install git-core git clone git://git.drogon.net/wiringPi cd wiringPi git pull origin ./build
Zakładam, że komputer ma ustawiony statyczny adres IP (opis tej czynności znajduje się tu), będzie to potrzebne, aby strona WWW umożliwiająca sterowanie lampką była widoczna zawsze pod tym samym adresem w domowej sieci, daje to ponadto możliwość udostępnienia strony w Internecie (trzeba do tego dodatkowo odpowiednio skonfigurować router).
Do wykonania aplikacji niezbędny będzie serwer HTTP, skorzystamy z serwera Apache2, aby go zainstalować wykonujemy polecenie:
sudo apt-get install apache2
Dodatkowo instalujemy PHP5, z wykorzystaniem którego będziemy wywoływać program gpio .
sudo apt-get install php5 sudo apt-get install libapache2-mod-php5
Domyślnie pliki stron internetowych serwera Apache2 znajdują się w katalogu /var/www , po instalacji serwera jest tam plik index.html , usuwamy go za pomocą polecenia:
sudo rm /var/www/index.html
Teraz tworzymy plik index.php za pomocą polecenia:
sudo nano /var/www/index.php
Wprowadzamy zawartość tego pliku:
<html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>Raspberry Pi remote control</title> <style> body {font-family: arial;} td {text-align: center;} </style> </head> <body> <center> <img src="logo.jpg"> <br> <br> <?php function TglControl($val, $name) { if ($val == 1) echo '<a href="?'.$name.'=0"><img src="on.jpg"></a>'; else echo '<a href="?'.$name.'=1"><img src="off.jpg"></a>'; } shell_exec('gpio -g mode 0 out'); shell_exec('gpio -g mode 1 out'); $out1val = shell_exec('gpio -g read 0'); $out2val = shell_exec('gpio -g read 1'); if (isset($_GET['out1'])) { if ($_GET['out1']) $out1val = 1; else $out1val = 0; shell_exec('gpio -g write 0 '.$out1val); } if (isset($_GET['out2'])) { if ($_GET['out2']) $out2val = 1; else $out2val = 0; shell_exec('gpio -g write 1 '.$out2val); } ?> <table width="350"> <tr><td width="50%"><b>Linia 1</b></td><td width="50%"><b>Linia 2</b></td></tr> <tr><td><?php TglControl($out1val, "out1"); ?></td><td><?php TglControl($out2val, "out2"); ?></td></tr> </table> </center> </body> </html>