5V relæ styring via web

Udgivet af Sims den

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.