Impressum Startseite Grund Installation Grundlagen Hilfreiches Projekte Querschläger Meckerecke

Grundlagen: Ein Relais mit dem Raspberry Pi Schalten.

Ich habe selber sehr lange als Anfänger nach einer möglichkeit gesucht um ein Relais mit dem Raspberry Pi zu schalten. Wie fast jeder hat man wohl als erstes die Idee eine per Internet Schaltbare Steckdose zu kontruieren.

Wie muss ich es anschließen und wie wird es angesprochen ?

Zuerst habe ich gegoogelt um dann eine 8fach Relais Platine für den Arduino bei Amazon zu kaufen. Die war preiswert (damals um die 5 Euro) und ideal zum ausprobieren. Ausserdem war die 230V Spannungsfest ( bei 10 A) und bot mir so die möglichkeit eine eigene schaltbare Steckdosen Leiste selber zu basteln. (Hier kommt der Standardspruch: Achtung bei Arbeiten unter Spannung).

Die Platine benötigt als Grundspannung 5 V und die Eingänge arbeiten mit 3,3 Volt.... Ideal für den Raspberry Pi (Sofern das Netzteil groß genug gewählt ist, denn das Relais zieht ja auch Strom!) - pro Relais ca 20 - 30 mA...

Die Hardware:

Von Raspberry PI Pin 2 (5V) geht es zu der Relais Platine auf VCC
Von Raspberry PI Pin 6 (GND) geht es zu der Relais Platine auf GND
Von Raspberry PI Pin13 (GPIO27, Wiring Pi 2) geht es zu der Relais Platine auf IN 1

Das ist schon alles an Hardware. (im Bild ist ein Banana Pi, die Pin Belegung ist aber die selbe.)

Die Software:

Wenn der Raspberry Pi hochgebootet ist und man eingeloggt ist, die Grundinstallation vorhanden ist (Wiring Pi!!), dann sollte man mittels folgender Befehle im Terminal eine Veränderung feststellen können:

gpio mode 2 out -> Schaltet den GPIO 27 auf Ausgang
gpio write 2 1 -> Schaltet das Relais AUS
gpio write 2 0 -> Schaltet das Relais AN
gpio read 2 -> fragt den Zustand des Relais ab 0 = AN, 1 = AUS

Genau so kann man weitere Ausgänge defenieren, verkabeln und ansprechen. z.b. Pin 15, wird mit "gpio mode 3 out" auf Ausgang geschaltet und mit gpio write 3 1 oder gpio write 3 0 , aus und eingeschaltet.

Wenn man das ganze jetzt nicht per BASH machen möchte, der kann das ganze auch per PHP ansprechen:

<?php  
shell_exec("gpio mode 2 out");  
shell_exec("gpio write 2 1");  
?>  

oder man legt sich ein BASH Script an wo drin ein Relais geschaltet wird und ruft dieses dann per PHP auf:

<?php  
shell_exec("bash /var/www/Relais1Schalten.sh");  
?>  

Dabei wäre dann der Inhalt von Relais1Schalten.sh:

#!/bin/sh

#Pin13 GPIO27 auf Ausgang setzen
sudo gpio mode 2 out

#Zustand des Ausgangs in Variable lesen
Zustand2="$( sudo gpio read 2 )"

#Abfrage wie der Zustand ist und entsprechend ändern
if [ "$Zustand2" = "0" ] ; then
sudo gpio write 2 1
else
sudo gpio write 2 0
fi

Dieses kleine Bash Script schaltet beim jeweiligen Aufruf das Relais An oder Aus, je nachdem welcher Zustand vorher war.

 

Grundlagen: Ein Relais mit dem Raspberry Pi Schalten.

Um mal von dem 8 Port Relais weg zu kommen, hier mal ein 2 Port Relais an einem Raspberry Pi A+, an anderen GPIO Ports:

Vom Raspberry PI Pin 2 (5V) geht es zu der Relais Platine auf VCC
Vom Raspberry PI Pin 6 (GND) geht es zu der Relais Platine auf GND
Vom Raspberry PI Pin 8 (GPIO14, Wiring Pi 15) geht es zu der Relais Platine auf IN 1
Vom Raspberry PI Pin 10 (GPIO15, Wiring Pi 16) geht es zu der Relais Platine auf IN 2

Wenn der Raspberry Pi hochgebootet ist und man eingeloggt ist, die Grundinstallation vorhanden ist (Wiring Pi!!), dann sollte man mittels folgender Befehle von der Shell aus eine Veränderung feststellen können:

gpio mode 15 out Schaltet den GPIO 14 / Wiring Pi 15 auf Ausgang
gpio write 15 1 Schaltet das Relais AUS
gpio write 15 0 Schaltet das Relais AN
gpio read 15 fragt den Zustand des Relais ab 0 = AN, 1 = AUS

Hier noch mal das ansprechen des zweiten Relais:

gpio mode 16 out Schaltet den GPIO 15 / Wiring Pi 16 auf Ausgang
gpio write 16 1 Schaltet das Relais AUS
gpio write 16 0 Schaltet das Relais AN
gpio read 16 fragt den Zustand des Relais ab 0 = AN, 1 = AUS

Wie man sieht ist die ansteuerung eines kleinen Relais mittels WiringPi gar nicht so schwer - lediglich die Port zuordnung ist manchmal etwas verwirrend

 

 

Praxisübung: Ein Relais mit einem Taster über den Raspberry Pi Schalten.

Wie man oben gesehen hat ist das eigentliche schalten eines Relais recht einfach. Jetzt geht es mal zu einer Kombination von Taster und Relais:

Hier mal eine Tasterschaltung (Taster auf GPIO 27/Pin13) welche ein Relais schaltet ( Relais auf GPIO1/Pin11). Der Taster wird über einen 10 KOhm Widerstand angeschlossen und die Relaisplatine direkt am GPIO. Durch Tasten wird das Relais angeschaltet und durch ein weiteres Tasten wird das Relais ausgeschaltet. Weiterhin ist gesperrt das durch einen Dauerkontakt das Relais an und aus geht.

Vom Raspberry PI Pin 2 (5V) geht es zu der Relais Platine auf VCC
Vom Raspberry PI Pin 6 (GND) geht es zu der Relais Platine auf GND
Vom Raspberry PI Pin11 (GPIO17, Wiring Pi 0) geht es zu der Relais Platine auf IN 1
Vom Raspberry PI Pin 13 (GPIO27, Wiring Pi 2) geht es an den Taster
Von gleichen Tasterport geht es an den 10 KOhm Widerstand, vom anderen Ende des 10KOhm Wiederstandes geht es an Pin1 (+3,3V)
Vom anderen Tasterport geht es zur Masse(GND Pin 9).

Hier das passende Bash Script dazu:

#!/bin/sh

#Wichtige Variablen Setzen
gpio mode 2 in
gpio mode 0 out

#Feststellen ob beim starten der Taster gerückt ist und entsprechend den Merker setzen
taster="$( gpio read 2 )"
if [ "$taster" = "1" ] ; then
merker="AUS"
else
merker="AN"
fi

#Hier die eigentliche Abfrage Schleife
while true
do

#Abfragen ob der Taster nicht gedrück ist und der Merker AN ist, dann setze den Merker auf AUS
taster="$( gpio read 2 )"
if [ "$taster" = "1" ] && [ "$merker" = "AN" ]; then
merker="AUS"
fi

#Abfragen ob der Taster gedrückt ist und der Merker AUS ist, dann setze den Merker auf AN, anschließend Schalte das Relais um.
if [ "$taster" = "0" ] && [ "$merker" = "AUS" ]; then
merker="AN"

relais="$( gpio read 0 )"
if [ "$relais" = "1" ]; then
gpio write 0 0
else
gpio write 0 1
fi

fi

sleep 0.2
done

Wenn das Bash Script gestartet wird läuft es so lange bis es angehalten wird, z.b. durch CTRL+C. Wenn man es stattdessen als Hintergrund Prozess aufrufen lässt kann man den PI noch anderweitig nutzen...

Impressum Startseite Grund Installation Grundlagen Hilfreiches Projekte Querschläger Meckerecke