Funktionierendes Relais für den Raspberry Pi – direkt via GPIO schalten
Es gibt im Moment einiges an Zeit und mir ist wieder ein Relais in die Hände gefallen, aus dem ich etwas basteln wollte. Ich habe es für die Benutzung mit dem Raspberry Pi gekauft, bin aber nie zu dem Projekt gekommen. Das Projekt hat sich in der Zwischenzeit auch erledigt. Trotzdem war ich neugierig, ob das Relais auch einwandfrei funktioniert.
Wichtiger Hinweis: In meinem Beispiel schalte ich das Relais nur an und wieder aus. Es hängt kein weiteres Gerät mit hohem Stromverbrauch dran. Sei vorsichtig, wenn Du mit höheren Spannungen hantierst und triff entsprechende Sicherheitsvorkehrungen! Bei meinem Test sind maximal 3,3 V der GPIO involviert, wie Du auf den Fotos siehst.
Ich habe mir damals ein Halbleiter Relais DC 3V-32V zu AC 24V-380V (Solid State)* gekauft und es endlich an den Raspberry Pi angeschlossen. Der Eingang akzeptiert 3 V und das bedeutet, ich kann es direkt über die GPIO-Schnittstelle schalten.
Voraussetzung ist, dass gpiozero installiert ist. Bei Raspbian Full ist es automatisch installiert. Bei Raspbian Lite musst Du selbst Hand anlegen. Installierst Du selbst, musst Du zwischen Python 2 und 2 unterscheiden. Willst Du gpiozero für beiden Optionen installieren, nimm diesen Befehl:
sudo apt install python-gpiozero python3-gpiozero
Ab sofort kannst Du die GPIO-Schnittstelle recht einfach mit Python schalten. Die Dokumentation für gpiozero findest Du hier und gleich das erste Beispiel tut schon, was ich brauche.
Relais über die GPIO-Schnittstelle schalten
Frage an die Spezialisten: Gibt es einen triftigen Grund, warum man das Halbleiterrelais nicht direkt via GPIO schalten soll oder ist das unbedenklich? Eigentlich kein Problem, oder?
Schließe ich das Relais an GPIO 17 an, kann ich es einschalten und ausschalten. Zwischen den beiden Zuständen lasse ich hier 5 Sekunden verstreichen. Das hatte einfach den Grund, dass ich einfacher Fotos machen konnte.
from gpiozero import LED from time import sleep led = LED(17) while True: led.on() print("on") sleep(5) led.off() print("off") sleep(5)
Beim Anschalten hörst Du keinen Klick, weil es sich nicht um ein mechanisches, sondern ein Solid-State-Relais handelt. Ich sehe den Zustand aber trotzdem, weil es ein Licht gibt.
Nach der Wartezeit von 5 Sekunden, erlischt das Licht wieder und zeigt mir an, dass es aus ist.
Wäre ich damals zu meinem Projekt gekommen, hätte es also funktioniert. Vielleicht bastle ich damit eine Zeitschaltuhr mit einer stromsparenden Lampe, die sich am Sonnenuntergang orientiert. Oder eine Lampe, die sich nach Sonnenuntergang einschaltet, wenn ich nicht zu Hause bin. Ich könnte hier zum Beispiel abfragen lassen, ob sich mein Smartphone im LAN befindet und ist das nicht der Fall, geht das Programm davon aus, dass ich nicht da bin. Hmmm … muss ich überlegen. Es ist auch gut möglich, dass sich das Relais wieder in den Schrank verzieht und dort bleibt. Auf jeden Fall weiß ich nun, dass es funktioniert. 🙂
Für Projekte mit geringeren Ansprüchen an Spannung und Strom ist sehr wahrscheinlich ein Automation HAT* besser geeignet. Ich habe ein PiFace Digital für den ersten Raspberry Pi, würde aber heute einen Automation HAT einsetzen.
Nette Pi-Konstellation
Suchst Du ein VPN für den Raspberry Pi? NordVPN* bietet einen Client, der mit Raspberry Pi OS (32-Bit / 64-Bit) und Ubuntu für Raspberry Pi (64-Bit) funktioniert.
Ich denke, das bezieht sich auf normale Relais, da benötigt man aufgrund des höheren Strombedarfs einen Treiber (z. B. einen Transistor) und eine Schutzbeschaltung, die die Spannungsspitzen beim Schalten des Relais verhindert. Da Halbleiterrelais im Gegensatz zu klassischen mechanischen Relais keine induktiven Lasten sind, muss man folglich nur in die jeweiligen Datenblätter schauen, ob der Strombedarf des Halbleiterrelais vom GPIO-Pin gedeckt werden kann.
Cool, danke für die Erklärung – dann kann ich das Ding benutzen, weil ich es via GPIO schalten kann.