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.

Fahrtenbuch (6): RGB-LED und Buzzer

2 Kommentare zu „Fahrtenbuch (6): RGB-LED und Buzzer

    • 29. Juni 2018 um 14:52 Uhr
      Permalink

      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.

Kommentare sind geschlossen.