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:
1 2 3 4 5 6 |
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:
1 |
sudo apt-get install apache2 |
Dodatkowo instalujemy PHP5, z wykorzystaniem którego będziemy wywoływać program gpio .
1 2 |
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:
1 |
sudo rm /var/www/index.html |
Teraz tworzymy plik index.php za pomocą polecenia:
1 |
sudo nano /var/www/index.php |
Wprowadzamy zawartość tego pliku:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
<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> |