LinkedIn YouTube Facebook
Szukaj

Wstecz
SoM / SBC

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>