GPIO Tutorial-Reihe - Part 1: LED mit FHEM steuern
Kurzfristig habe ich mir überlegt eine neue Tutorial-Reihe zu starten. Diese wird in Zukunft neben der FHEM-Tutorial-Reihe laufen und alles rund um das Thema GPIO behandeln. Im ersten Video wird dabei einfach nur eine LED an GPIO angeschlossen und aus FHEM heraus geschaltet. Was auf den ersten Blick sehr einfach aussieht könnte aber schon helfen - immerhin könnte man so bereits sehr einfach eine Status-LED für Probleme realisieren. Oder diese Blinken lassen für Nofifications. Die Möglichkeiten in Kombination mit FHEM sind hier schon wirklich umfangreich.
Ansonsten brauche ich natürlich Feedback wie das Thema bei Euch ankommt und ob in der Hinsicht weiteres Interesse besteht. Ein zweiter Teil ist bereits aufgenommen und wird in den nächsten Tagen veröffentlicht. Natürlich gibt es auch wieder ein Freebie für meine Newsletter-Abonnenten, welches alle Pins und die wichtigsten Befehle übersichtlich darstellt. Das Eintragen in den Newsletter ist natürlich auch unter diesem Post möglich.
Was wird benötigt?
- Eine FHEM-Installation
- Ein Raspberry Pi (1, 2 oder 3)
- Ein wenig Hardware zum Spielen (LED, Widerstände, Breadboard, …)
Video
Schaltplan
»GPIO LED schalten«
Komponenten
Ich habe mir vor längerer Zeit zu dem Raspberry Pi ein Kit mit jeder Menge Spielzeug bestellt. Das ist wahrscheinlich sogar günstiger als alles einzeln zu bestellen. Natürlich wird man nicht alles brauchen, aber es ist auf jeden Fall cool zum lernen. Mit dabei ist auch ein Buch, mit welchem man dann in C weitere Programme schreiben und ausprobieren kann.
Befehle
Als erstes muss der FHEM-Benutzer der Gruppe GPIO hinzugefügt werden, damit dieser auf die Pins zugreifen darf. Danach muss FHEM unbedingt neugestartet werden, damit die Berechtigungen wirksam werden.
sudo adduser fhem gpio
sudo /etc/init.d/fhem stop
sudo /etc/init.d/fhem start
Jetzt wird noch git installiert, damit im folgenden Schritt wiringPi installiert werden kann.
sudo apt-get install git-core
Im Home-Verzeichnis wird jetzt einfach wiringPi geladen und gebaut. Dieser Vorgang dauert je nach Raspberry Pi-Version wenige Minuten. Das Ganze wird mit einem Neustart abgeschlossen.
cd
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build
sudo reboot
Um eine LED zu schalten wird jetzt in FHEM das folgende Gerät definiert. Nachdem die Richtung auf “output” gestellt wurde, kann bereits per on und off die LED geschaltet werden.
define GPIO17 RPI_GPIO 17
attr GPIO17 active_low yes
attr GPIO17 direction output
Update
Stefan hat mich in den Kommentaren darauf hingewiesen, dass ich gegen 3.3V schalte anstatt gegen 0V. Das ist natürlich richtig und auch nicht besonders elegant (auch, wenn es funktioniert). Nun ist es so, dass die GPIO auf “high” (in FHEM auf “on”) bereits ein Spannung von 3.3V bereitstellen und auf “low” gar keine Spannung anliegt. Im vorigen Beispiel oben fließt also der Strom praktisch “falsch rum” als eigentlich angedacht.
Viel intelligenter ist es also, wenn man statt 3.3V und GPIO17 lieber GND und GPIO17 nutzt. Denn dann schaltet man auch GPIO17 korrekterweise auf “high” damit die LED eingeschaltet wird. Somit kann man sich dann auch das “active_low” sparen.
define GPIO17 RPI_GPIO 17
attr GPIO17 direction output
Danke für diesen Hinweis, Stefan. Wirklich blöd von mir, dass das erste Video bereits so einen “Fehler” enthält. Auch, wenn es nur kosmetisch ist, macht es sorum natürlich viel mehr Sinn.
»GPIO LED schalten«