systemypomiarowe.pl

Zbliżenie zmontowanej płytki drukowanej P161002 z układami Microchip w obudowach SMD Wizualizacja płytki z mikrokontrolerem STM32, gniazdem karty SD i modułem GPS Trójwymiarowa wizualizacja płytki z przekaźnikiem, buzzerem i złączami Fragment schematu ideowego ze wzmacniaczem pomiarowym INA326 i przetwornikiem A/C MCP3304 Trójwymiarowa wizualizacja gęsto zmontowanej płytki modułu komunikacyjnego Płyta czołowa urządzenia z opisanymi przyciskami, pokrętłami głośności i głośnikiem Rysunek techniczny płyty czołowej z rozmieszczeniem przycisków i pokręteł Zmontowana płytka z mikrokontrolerem PIC18F2550, złączem USB i potencjometrami montażowymi Kod źródłowy interfejsu TouchGFX dla STM32 w edytorze Visual Studio Code Projekt płytki drukowanej – widok warstw i rozmieszczenia elementów
Strona główna Oferta

Raspberry Pi – aplikacja PHP

Aby móc uruchomić zdalne starowanie przez internet należy zainstalować serwer apache i php. Wykonujemy to wydając po kolei polecenia:

sudo apt-get update
sudo apt-get install git-core apache2 php5 libapache2-mod-php5

Można przy okazji zaktualizować cały system wydając polecenie:

sudo apt-get upgrade

Przy pomocy tej aplikacji będziemy mogli zdalnie zarządzać włączaniem/wyłączaniem poszczególnych oraz wszystkich diod modułu KaMODLED8, zaświeceniu odpowiedniego koloru diody RGB w module KaMODRGB czy włączaniem/wyłączaniem radia internetowego. Aplikacja pozwala na zdalne wyłączenie urządzenia Raspberry Pi.

Do sterowania wykorzystana została biblioteka wiringPi zainstalowana i wykorzystana przy okacji artykułu o GPIO i I2C (dioda RGB).

Strona WWW do sterowania wyjściami GPIO Raspberry Pi

Rys. Sterowanie przez www – okno przeglądarki.

Na początku pliku znajdują się procedury inicjujące interfejs GPIO oraz układ PCA9633 firmy NXP zawarty w module KaMODRGB.

//IO
shell_exec(‚gpio -g mode 17 out’);
shell_exec(‚gpio -g mode 27 out’);
shell_exec(‚gpio -g mode 4 out’);
shell_exec(‚gpio -g mode 22 out’);
shell_exec(‚gpio -g mode 18 out’);
shell_exec(‚gpio -g mode 23 out’);
shell_exec(‚gpio -g mode 24 out’);
shell_exec(‚gpio -g mode 25 out’);

//RGB
shell_exec(‚sudo i2cset -y 1 0×07 0×00 0×00′);
shell_exec(‚sudo i2cset -y 1 0×07 0×01 0×00′);
shell_exec(‚sudo i2cset -y 1 0×07 0×08 0xff’);

W następnej kolejności znajdują się procedury odczytujące aktualny stan linii GPIO, zawartości rejestrów układu PCA9633 oraz stan deamona mpd odpowiedzialnego za działanie radia internetowego.

$out1val = shell_exec(‚gpio -g read 17′);
$out2val = shell_exec(‚gpio -g read 27′);
$out3val = shell_exec(‚gpio -g read 4′);
$out4val = shell_exec(‚gpio -g read 22′);
$out5val = shell_exec(‚gpio -g read 18′);
$out6val = shell_exec(‚gpio -g read 23′);
$out7val = shell_exec(‚gpio -g read 24′);
$out8val = shell_exec(‚gpio -g read 25′);

//Radio
$radioval = shell_exec(‚mpc | grep playing -c’);

$redvalue = shell_exec(‚echo $(($(sudo i2cget -y 1 0×07 0×4)))’);
$greenvalue = shell_exec(‚echo $(($(sudo i2cget -y 1 0×07 0×5)))’);
$bluevalue = shell_exec(‚echo $(($(sudo i2cget -y 1 0×07 0×3)))’);
$whitevalue = shell_exec(‚echo $(($(sudo i2cget -y 1 0×07 0×2)))’);

Teraz dochodzimy do funkcji odpowiedzialnych za interakcję z użytkownikiem – klikanie poszczególnych lampek. Funkcje te po wywołaniu ustawiają stan linii wyjściowej w przypadku pojedyńczej linii GPIO na przeciwny.

if (isset($_GET['out1']))
{
if ($_GET['out1']) $out1val = 1; else $out1val = 0;
shell_exec(‚gpio -g write 17 ‚.$out1val);
}

W następnej kolejności znajduje się formularz za pomocą którego wprowadzamy wartości z zakresu 0-255 które zostaną wpisane do układu scalonego sterującego diodą RGB. Na przytoczonym listingu znajduje się też część odpowiedzialna za włączanie poszczególnych kolorów diody RGB za pomocą pojedynczych przycisków.

<b><br><br>Sterowanie I2C KAmodRGB.<br></b>
<form action=”index.php” method=”GET”>
<table width=”200″>
<tr><td width=”50%”>red: </td>
<td width=”50%”><input type=text name=redvalue value=”<?php print „$redvalue”; ?>” size=”5″ maxlength=”3″></td></tr>
<tr><td width=”50%”>green: </td>
<td width=”50%”><input type=text name=greenvalue value=”<?php print „$greenvalue”; ?>” size=”5″ maxlength=”3″></td></tr>
<tr><td width=”50%”>blue: </td>
<td width=”50%”><input type=text name=bluevalue value=”<?php print „$bluevalue”; ?>” size=”5″ maxlength=”3″></td></tr>
<tr><td width=”50%”>white: </td>
<td width=”50%”><input type=text name=whitevalue value=”<?php print „$whitevalue”; ?>” size=”5″ maxlength=”3″></td></tr>
<tr><td width=”50%”><input type=submit value=”Wyślij”></td><td width=”50%”><input type=reset></td></tr>
</table>
<table width=”200″>
<tr><td width=”20%”><input type=”button” value=”red” onClick=”document.location.href=’?redvalue=255&greenvalue=0&bluevalue=0&whitevalue=0′;” /></td>
<td width=”20%”><input type=”button” value=”green” onClick=”document.location.href=’?redvalue=0&greenvalue=255&bluevalue=0&whitevalue=0′;” /></td>
<td width=”20%”><input type=”button” value=”blue” onClick=”document.location.href=’?redvalue=0&greenvalue=0&bluevalue=255&whitevalue=0′;” /></td>
<td width=”20%”><input type=”button” value=”white” onClick=”document.location.href=’?redvalue=0&greenvalue=0&bluevalue=0&whitevalue=255′;” /></td>
<td width=”20%”><input type=”button” value=”black” onClick=”document.location.href=’?redvalue=0&greenvalue=0&bluevalue=0&whitevalue=0′;” /></td>
</table>
</form>

Rozwiązanie to ma poważną wadę polegającą na takim zjawisku, że jeżeli sterujemy Raspberrym z dwóch lub więcej urządzeń końcowych (komputery, laptopy, smartfony) to na ekranie takiego urządzenia będziemy mieć informacje o stanie linii IO z chwili uruchomienia demonstracyjnej strony www. Jeżeli w tym czasie ktoś za pomocą innego urządzenia końcowego zmienił stan linii IO włączając lub wyłączając diodę to na ekranie naszego urządzenia będziemy mieć nieaktualną informację. Ta sama uwaga dotyczy stanu rejestrów układu PCA9633 i radia internetowego. Aby zlikwidować to zjawisko należy co jakiś czas przeładować stronę www. Możemy to zrobić automatycznie dodając odpowiednią linię na stronie www.

<meta http-equiv=”Refresh” content=”5; url=index.php” />

Należy ją umieścić w sekcji Head naszej strony.

Kompletna przykładow strona www jest dostępna w postaci spakowanego pliku w załączniku.


Sterowanie urządzeniem przez przeglądarkę można wbudować bezpośrednio w sprzęt – tak działa nasz sterownik z wbudowanym serwerem HTTP. Wykonujemy takie urządzenia na zamówienie, razem z oprogramowaniem.



Copyright ©2026 systemypomiarowe.pl.