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
- Leuchtdiode, rot
- Leuchtdiode, gelb
- Leuchtdiode, grün
- Widerstände: 470 Ohm (Gelb-Violett-Braun-Gold)
- Aktiver Summer (optional)
- KY-037/KY-038 - Geräuschdetektor (Sound Sensor)
- Leuchtdiode
- Widerstand
- Summer (Buzzer)
- GPIO-Belegung (Pinout)
Raspberry Pi Pico | KY-037 | |
---|---|---|
Pin 36 | 3V3 +3,3V | + |
Pin 38 | GND | G |
Pin 31 | GPIO 26 | A0 |
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:
- Raspberry Pi Pico: Geräuscherkennung mit dem Geräuschesensor KY-037
- Raspberry Pi Pico: Klatschschalter programmieren (mit KY-037)
- Raspberry Pi Pico: Geräuscherkennung mit Zähler (mit KY-037)
- Raspberry Pi Pico: Bewegungserkennung mit PIR Motion Detector HC-SR501
- Raspberry Pi Pico: Abstandsmessung mit Ultraschallsensor (HC-SR04P)
Teilen:
Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython
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
Online-Workshop
Hardware-nahes 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.
Für Ihre Fragen zu unseren Online-Workshops mit dem Raspberry Pi Pico besuchen Sie unseren PicoTalk (Online-Meeting). (Headset empfohlen)
Elektronik-Set Pico Edition
Raspberry Pi Pico: Hardware-nahes Programmieren mit MicroPython
Leichter Einstieg mit All-in-one-Set zum sofort Loslegen, um eigene Steuerungen programmieren.
Elektronik-Set Pico WLAN Edition
Raspberry Pi Pico W: IoT und Smart Home mit WLAN und MQTT
Betreibe Deinen Raspberry Pi Pico W als drahtloser Sensor in Deinem WLAN, versende E-Mails mit Daten und kommuniziere per MQTT im Internet of Things oder Smart Home.
Elektronik-Set Sensor Edition
Erweiterung zu den Elektronik-Sets Pico Edition und Pico WLAN Edition
Elektronik-Set mit den beliebtesten Sensoren zum Messen von Temperatur, Helligkeit, Bewegung, Lautstärke und Entfernung.
Elektronik-Set Eingabe Ausgabe Edition
Erweiterung zu den Elektronik-Sets Pico Edition und Pico WLAN Edition
Damit kannst Du MP3-Dateien abspielen, eine Stoppuhr bauen, einen Servo-Motor mit Drehschalter oder Joystick steuern, Lichteffekte mit einem WS2812-LED-Lichtstreifen erzeugen, Schalten mit einem Relais und Signalisieren mit einem Vibrationsmotor.