Raspberry Pi Pico: Lärmampel programmieren (mit KY-037)

Geräusche zu erkennen ist mit einem Geräuschsensor vom Typ KY-037 oder KY-038 nicht schwer. Dank eines analogen Ausgangs kann sogar die Lautstärke eines Geräuschs zahlenmäßig erfasst und ausgewertet werden. So ist es möglich, zu definieren, was zu laut ist. Und dann kann man sich das anzeigen lassen.

Einen Geräuschsensor vom Typ KY-037 oder KY-038 könnte man zum Beispiel einsetzen um eine Lärmampel zu programmieren. Dazu verwenden wir ein herkömmliche Ampel aus drei LEDs in den Farben Rot, Gelb und Grün.

  • Wenn die grüne LED leuchtet, dann ist die Lautstärke in Ordnung (OK).
  • Wenn die gelbe LED leuchtet, dann herrscht eine erhebliche Lautstärke, die aber noch in Ordnung ist (OK).
  • Wenn die rote LED leuchtet, dann herrscht eine Lautstärke, die nicht mehr in Ordnung ist (NOK). Zusätzlich geht hier noch ein Summer an.

Aufbau und Bauteile

Raspberry Pi Pico: Lärmampel programmieren (mit KY-037)

  • Leuchtdiode, rot
  • Leuchtdiode, gelb
  • Leuchtdiode, grün
  • Widerstände: 470 Ohm (Gelb-Violett-Braun-Gold)
  • Aktiver Summer (optional)
Raspberry Pi Pico KY-037
Pin 36 3V3 +3,3V +
Pin 38 GND G
Pin 31 GPIO 26 A0

Schnell und einfach alle Bauteile zusammen bestellen

Programmcode

Im Programmcode ermitteln wir mit Hilfe eines ADC-Eingangs die aktuelle Lautstärke. Innerhalb des Programmcodes sind zwei Schwellwerte definiert, die individuell eingestellt werden müssen. Der Schwellwert „value_ok“ ist der Wert bis zu dem die Lautstärke in Ordnung ist (OK). Es leuchtet die grüne LED. Über diesem Wert kommt die Lautstärke in einen Grenzbereich, der noch in Ordnung ist. Hier leuchtet die gelbe LED. Über dem Schwellwert „value_nok“ ist es dann zu laut, weshalb dann die rote LED leuchtet.

# Bibliotheken laden
from machine import Pin, ADC
from time import sleep

# Lautstärke-Werte (0 - 65535)
value_ok = 34000
value_nok = 36000

# Initialiserung der GPIOs für die Ampel
red = Pin(13, Pin.OUT, value=0)
yellow = Pin(14, Pin.OUT, value=0)
green = Pin(15, Pin.OUT, value=0)

# Initialiserung der GPIOs für den Summer
buz = Pin(8, Pin.OUT, value=0)

# Initialisierung des ADC0 (GPIO26)
sensor = ADC(0)

# Funktion, wenn Lautstärke OK
def sound_ok():
    red.off()
    yellow.off()
    green.on()

# Funktion, wenn Lautstärke nicht OK
def sound_nok():
    red.off()
    yellow.on()
    green.off()

# Funktion, wenn Lautstärke zu laut
def sound_alarm():
    red.on()
    yellow.off()
    green.off()
    buz.on()
    sleep(1)
    buz.off()

# Wiederholung (Endlos-Schleife)
while True:
    value = sensor.read_u16()
    print(value)
    if (value < value_ok):
        sound_ok()
    elif (value < value_nok):
        sound_nok()
    else:
        sound_alarm()
    sleep(1)

Die im Programmcode verwendeten Schwellwerte, ab wann welche Lärmstufe gilt, sind willkürlich gewählt. Sie gelten nur für einen bestimmten Testfall. Für einen konkreten Anwendungsfall muss der Geräuschsensor kalibriert und die Schwellwerte für eine bestimmte Lärmstufe ermittelt werden. Die ermittelten Schwellwerte müssen dann im Programmcode hinterlegt werden.

Kalibrierung der Geräuscherkennung

Auf dem Geräuschsensor befindet sich ein Potentiometer mit dem man die Empfindlichkeit für die digitale Geräuscherkennung einstellen kann. Dieses Potentiometer hat allerdings auch Einfluss auf das analoge Signal.
Wie das Potentiometer stehen muss, muss in der Praxis ermittelt werden. Nach der Ermittlung der Schwellwerte darf die Stellung des Potentiometers nicht mehr verändert werden. Wenn doch, dann müssen die Schwellwerte erneut ermittelt werden.

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Entprellen und Zustände anzeigen
  • LED mit Taster einschalten und ausschalten
  • Ampel- und Lauflicht-Steuerung
  • Elektronischer Würfel
  • Eigene Steuerungen programmieren

Elektronik-Set jetzt bestellen Online-Workshop buchen

Online-Workshop: Programmieren mit dem Raspberry Pi Pico

Programmieren mit dem Raspberry Pi Pico

Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.

Online-Workshop buchen

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

 

Elektronik-Sets für das Hardware-nahe Programmieren