Eine LED Blinkt
Nachdem ich in der vergangenen Woche meinen Raspberry Pi mit einem LCD-Touchdisplay in Betrieb genommen habe, ging es in dieser Woche daran einmal eine LED zum blinken zu bekommen.
[atkp_product id=’1408′ template=’1390′][/atkp_product]
[atkp_product id=’1409′ template=’1390′][/atkp_product]
Als erstes habe ich festgestellt, dass es ich das Display wieder entferne und den Raspberry pi ersteinmal ohne dieses weiter benutzen werde.
Digitale Ein- und Ausgänge über GPIO
Der Raspberry hat bereits ein und Ausgänge an Bord diese Schnittstelle wird GPIO genannt. Über die Programmierung wird entschieden ob ein Pin auf der Leiste als Ausgang oder Eingang fungiert. Die Ein- und Ausgänge müssen Lastfrei gescahlten werden. Zudem sollte auf die jeweilige Eingangsspannung geachtet werden um den Raspberry nicht zu zerstören.
Auf die Beschaltung werde ich später nochmals eingehen.
Ein wichtiger Hinweis sei noch vorweg geschoben – die GPIO – Leiste kann nur Digitale Signale verarbeiten.
I2C-Bus
Nein ich rede nicht von einer Zug oder Buslinie. Der I2C-Bus ist ein Bussystem welches ebenfalls über die Pinleiste des Raspberry Pi läuft. Für diesen Bus gibt es spezielle Sensoten welche an diesen Bus angeschlossen werden und anschließend im in der Software abgefragt werden können. Ich habe mir jetzt zum Testen zwei entsprechende Senosren bestellt um euch darüber in einem meiner nächsten Beträge zu berichten.
Ein- und Ausgänge über WLAN steuern
Der von mir genutzte Raspberry hat ein WLAN an Bord bei der suche nach einer Möglichkeit Aktoren zu steuern und Sensoren auszulesen, bin ich über eine WLAN Schnittstelle mit Digitalen Ein- uns Ausgängen stolpert. Vom lesen in -einschlägigenen Foren klingt das System nicht schlecht aus diesem Grunde habe ich mir auch hier einen Satz zum Programieren bestellt. Über die Benutzung dieser werde ich ebenfalls berichten.
[atkp_product id=’1410′ template=’1390′][/atkp_product]
GPIO die erste LED leuchtet
Wie bereits oben beschrieben, werde ich nun erst einmal auf dem Schreibtisch kleinere Versuchsaufbauten machen um diese anschließend mit den Sensoren und entsprechenden Schaltern im Wohnwagen umzusetzen.
Aus diesem Grunde habe ich als erstes mit der GPIO Leiste eine LED angesteuert. Das Ein- und Ausschalten habe ich über zwei Schaltflächen auf dem Monitor verwirklicht.
Der Elektrische Anschluss
Wenn man einen GPIO schaltet liefert dieser eine Spannung von 3,3V und darf mit ca. 50mA belastet. werden. Dies hat zur Folge, dass ich später Relais oder über entsprechende Optokoppler schalten werde. Für eine LED wird ein entsprechender Vorwiderstand benötigt.
Um Eingänge einzulesen muss ebenfalls darauf geachtet werden, dass nicht zu viel Spannung auf die GPIO Pins kommt, da diese die Pi zerstören können.
Die LED an und abschalten
In meinem Ersten Programm möchte ich eine LED an und Ausschalten. Hierzu schließe ich eine LED an den GND PIN und an einen zuvor von mir ausgedachten Ausgang. Den Vorwiderstand nicht vergessen. Die von mir verlinkten Experimentierbords enthalten diese entsprechend.
Alternativ könnte man auch einen Eingang beschalten um ein Digitales Signal abzufragen. Dieses wird zum Beispiel nötig um den Magnetschalter der Toilette später abzufragen.
Um das Programm zu starten und zu testen benutze ich die mit dem Raspberry mitgelieferte Software Tommy.
Der Programmcode
In einem ersten Schritt müssen die benötigten Bibliotheken geladen werden:
Kommentierungen im Programm werden durch einen # angezeigt. Diese Kommentierungen helfen sehr gut um die Übersicht zu behalten.
Quellcode schreibe ich zukünftig in grüner Farbe:
from tkinter import * #Bibliothek für Grafische Oberfläche
import RPi.GPIO as GPIO #Bibliothek für die Nutzung der GPIO laden
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(23, GPIO.OUT) #PIN 4 als Ausgang gesetzt
def anzeige(lb):
if GPIO.input(4):
lb.config(text=“GPIO 23 high“)
else:
lb.config(text=“GPIO 23 low“)
lb.after(100, anzeige, lb)
def an():
GPIO.output(23, 1) #Pin 4 einschalten
def aus():
GPIO.output(23, 0) #Pin 4 ausschalten
root = Tk()
root.title(„Output GPIO 23“)
Label(root, text=“——————„).pack()
lb = Label(root, text=“Licht schalten“)
lb.pack()
Label(root, text=“——————„).pack()
Button(root, text=“an“, width=40,command=an).pack()
Button(root, text=“aus“,width=40, command=aus).pack()
anzeige(lb)
mainloop()