5V relæ styring via web
Jeg havde et problem, vi har varmetæpper i soveværelset, men så snart sengen blev varm, faldt vi i søvn som et lys der bliver pustet ud. Det er selvfølgelig en dum idé at sove med varmetæpper tændt hele natten, så der skulle findes en måde hvorpå jeg kunne tidsindstille tæpperne til at slukke automatisk efter en forudindstillet tid. Svaret er et par 5 volts relæer, en WiFi adapter og en Raspberry Pi.
Jeg brugte
En Raspberry Pi (med tilhørende strømforsyning)
To 5V relæer (kan udvides med flere)
En WIFi adapter, der understøttes af Raspberry Pi
Guiden tager udgangspunkt i at du;
– Har en fungerende Raspberry Pi, med Raspbian installeret.
– Kan finde ud af at logge ind på den via SSH, eller tilgå terminalen og indtaste kommandoer heri.
– Har forbundet din Raspberry til internettet.
Installér nødvendige “programmer”
Først skal vi have installeret WiringPi, det gøres via GIT.
Følg de 4 enkle kommandoer herunder i rækkefølge.
sudo apt-get install git-core git clone git://git.drogon.net/wiringPi cd wiringPi ./build
Du kan teste at WiringPi virker med kommandoen:
gpio readall
For at kunne styre GPIO udgangene, dermed dit relæ, skal vi have installeret en web-server. Til det formål benytter jeg mig af Apache, jeg vil ikke uddybe andre i denne guide. For at installere Apache og PHP5 (PHP er sproget vi koder “bagsiden” af hjemmesiden i), indtaster eller kopier du følgende linje til Raspberry’en:
sudo apt-get install apache2 php5 libapache2-mod-php5
Verificér at Apache virker ved at indtaste Raspberry’ens IP-adresse i et browser vindue. Du burde se en tekst, noget lignende “It Works!”, hvis alt er gået som planlagt.
Du er allerede nu nået langt, og fortjener en pause med dertilhørende kop kaffe/te, eller andre lækkerier!
Fabrikér hjemmesiden
Lad os få lavet hjemmesiden, der tager sig af at styre relæet, først skal vi finde mappen hvor Raspberry’en viser hjemmesiden fra, der i laver vi en ny fil kaldet index.php og indsætter et stykke kode. For at komme til mappen skriver du:
cd /var/www/
Vi fjerner nu den oprindelige fil (index.html) indeholdende “It Works!” og erstatter den med index.php indeholdende PHP koden der styrer relæet:
sudo rm index.html sudo nano index.php
Der åbner nu et vindue hvor til du kopierer og indsætter:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>RPI - Relæ styring</title> </head> <body> <?php $val_array = array(0,0,0,0,0,0,0,0); for ( $i= 0; $i<8; $i++) { system("gpio mode ".$i." out"); exec ("gpio read ".$i, $val_array[$i], $return ); } $i =0; for ($i = 0; $i < 8; $i++) { if ($val_array[$i][0] == 0 ) { echo ('<a href="#" onclick="change_pin ('.$i.');">GPIO '.$i.' slukket</a><br />'); } if ($val_array[$i][0] == 1 ) { echo ('<a href="#" onclick="change_pin ('.$i.');">GPIO '.$i.' tændt</a><br />'); } } ?> </body> </html>
Gem ved at trykke CTRL og O (ikke nul) samtidigt, afslut med CTRL og X.
Nu skal vi have lavet filen der giver Raspberry’en besked på at tænde og slukke GPIO/relæ udgangen:
sudo nano gpio.php
Indsæt følgende kode
<?php if (isset ( $_GET["pic"] )) { $pic = strip_tags ($_GET["pic"]); if ( (is_numeric($pic)) && ($pic <= 7) && ($pic >= 0) ) { system("gpio mode ".$pic." out"); exec ("gpio read ".$pic, $status, $return ); if ($status[0] == "0" ) { $status[0] = "1"; } else if ($status[0] == "1" ) { $status[0] = "0"; } system("gpio write ".$pic." ".$status[0] ); exec ("gpio read ".$pic, $status, $return ); echo($status[0]); header('Location: ./index.php'); } else { echo ("Fejl"); } } else { echo ("Fejl"); } ?>
Gem med CTRL og O (stadig ikke nul), afslut med CTRL og X.
Du er nu færdig med opsætningen af Raspberry’en! Test eventuelt ved, igen at indtaste Raspberry’ens IP-adresse, i et browser vindue.
Forbind relæet til Raspberry’en
Kommer tid kommer billeder ..
Pro-tips
Indsæt kopieret tekst i Putty kommando vinduet med højreklik.