Mithilfe einer RGB-LED und einem Buzzer soll der aktuelle Status des Systems dargestellt werden. Die RGB-LED soll rot leuchten, bis ein RFID-Chip registriert wird. Die Registrierung des RFID-Chips wird anschließend mit einem Ton bestätigt und die RGB-LED schaltet von rot auf blau. Sobald ein GPS-Signal erkannt wird und der RFID-Chip registriert ist, soll die RGB-LED auf grün umschalten. Befindet sich der Raspi im Datenübertragungsmodus zum Webserver (Übermittlung der Wegpunkte) soll die RGB-LED grün blinken.
Zu Testzwecken wird die,s wie bei den anderen Modulen, zunächst losgelöst vom restlichen Programmcode getestet. Der Test wurde unter Verwendung des Betriebssystems Raspbian Stretch Lite durchgeführt.
Die nachfolgende Abbildung enthält den Schaltplan für den Versuchsaufbau:
Wie aus dem Schaltplan entnommen werden kann, wird eine RGB-LED mit drei Anoden und einer Kathode verwendet. Den Anoden werden Widerstände vorgeschalten, um die RGB-LED vor Überhitzung zu schützen. Da die RGB-LED ohne ein Datenblatt ausgeliefert wurde, konnten die notwendigen Werte für die Widerstände nicht genau bestimmt. Sicherheitshalber werden deshalb 220 Ohm Widerstände verwendet.
Der folgende Programmcode zeigt die Ansteuerung der RGB-LED und des Buzzers:
import RPi.GPIO as GPIO import time GPIO.setwarnings(False) pins = {'pin_R':11, 'pin_G':12, 'pin_B':13} # Belegung der Pins GPIO.setmode(GPIO.BOARD) #Verwendung des Raspi GPIO-Boardschema (physikalische Pin-Belegung) for i in pins: # Alle Pins vorbereiten GPIO.setup(pins[i], GPIO.OUT) # Pin-Modus: ausgehend GPIO.output(pins[i], GPIO.HIGH) # Pin-Output: +3.3V p_R = GPIO.PWM(pins['pin_R'], 9999) # Pulsweiten-Modulation wird für das Blinken der RGB-LED benötigt, zunächst p_G = GPIO.PWM(pins['pin_G'], 9999) # sollen die Farben aber durchgängig leuchten, weshalb die Frequenz auf 9999 p_B = GPIO.PWM(pins['pin_B'], 9999) # gesetzt wird def startLED(red, green, blue): # Funktion zum Setzen der Werte, Übergabe von numerischen Werten zwischen 0 und 1 p_R.start(red) p_G.start(green) p_B.start(blue) try: startLED(1,0,0) # RGB-LED leuchtet rot time.sleep(5) startLED(0,1,0) # RGB-LED leuchtet grün time.sleep(5) startLED(0,0,1) # RGB-LED leuchtet blau time.sleep(5) p_G.ChangeFrequency(3) # Änderung der Frequenz von 9999 auf 3 und ermögliche so das Blinken der RGB-LED startLED(0,1,0) # RGB-LED blinkt grün time.sleep(5) # Buzzer ansteuern GPIO.setup(37, GPIO.OUT) # Pin 37 als Ausgang definieren GPIO.output(37, 1) # Ausgang auf High setzen und damit Ton auslösen time.sleep(0.3) # Kurze Zeit warten, Ton halten GPIO.output(37, 0) # Ausgang auf Low setzen und Ton ausschalten except KeyboardInterrupt: # Druecke CTRL+C zum Abbrechen print("Keyboard interrupt") except: # Fehlerbehandlung print("Error") finally: print("Clean up") GPIO.cleanup()
Alle gewünschten Funktionen zur Darstellung des aktuellen Status konnten mit diesem Programmcode erfolgreich getestet werden. Die verwendete RGB-LED erwies sich als nicht besonders leuchtstark, weshalb ein bereits vorkonfektioniertes RGB-LED-Modul erworben wurde.
Und wie steuert Ihr den Lautsprecher an? 😉
Ist nur ein Buzzer, habs korrigiert. Der Ausgang des Pin 39 wird auf High gesetzt, dies löst die Wiedergabe eines Tons aus. Anschließend wird der Ausgang auf Low gesetzt und der Ton verstummt.