4.3.4 Intelligenter Geräuschmesser
4.3.4.1 Überblick

Der intelligente Geräuschmesser, auch bekannt als Schallpegelmesser oder Dezibelmesser, wird zur Erfassung von Lärm verwendet. Lärm wird in verschiedene Pegel eingeteilt, und das Mikrofon auf dem micro:bit erkennt dessen Intensität in der Umgebung in Echtzeit. Entsprechend den Pegeln teilt der micro:bit diese in mehrere Stufen ein.
In diesem Projekt zeigt das OLED-Display den aktuellen Geräuschpegel in Echtzeit an, und die 5×5-LED-Matrix schaltet entsprechend dem Geräuschpegel einige LEDs ein/aus.
Diese Art von Gerät hat die technische Hürde und die Kosten der Lärmüberwachung deutlich gesenkt und wird daher häufig in der Umweltlärmüberwachung, Arbeitssicherheit, auf Baustellen und in Unterhaltungsstätten eingesetzt.

4.3.4.2 Bauteilwissen

Microbit-Mikrofon

Das micro:bit V2 Board ist mit einem Mikrofon ausgestattet, das Geräusche und Audiosignale erkennt. Das Mikrofon befindet sich oben auf der Platine (das kleine Loch, das zur Aufnahme von Umgebungsgeräuschen dient; neben dem Loch befindet sich eine LED-Anzeige). Der Chip, der das Mikrofon steuert und verarbeitet, befindet sich auf der Rückseite der Platine.
Bei der Verwendung legen Sie das micro:bit-Board einfach mit der Vorderseite nach oben.

Wenn das Board Schall erkennt, leuchtet die Mikrofon-LED-Anzeige auf.


4.3.4.3 Benötigte Komponenten
|
|
|
|---|---|---|
micro:bit V2 Hauptplatine ×1 |
micro:bit shield ×1 |
OLED-Display ×1 |
|
|
|
micro USB-Kabel ×1 |
4-Pin-Kabel ×1 |
Batteriehalter ×1 |
|
||
AA-Batterien(selbst bereitgestellt) ×6 |
4.3.4.4 Schaltplan
⚠️ Achten Sie beim Verdrahten bitte auf die Drahtfarbe.
OLED-Display |
Drahtfarbe |
Pin auf micro:bit-Shield |
Pin des micro:bit-Boards |
|---|---|---|---|
GND |
black |
G |
G |
VCC |
red |
V2 |
V |
SDA |
blue |
20 |
P20 |
SCL |
green |
19 |
P19 |

4.3.4.5 Ablauf des Codes

4.3.4.6 Testcode
⚠️ Tipp 1: Bevor Sie den Code auf das micro:bit-Board herunterladen, importieren Sie bitte die Bibliotheksdatei “oled_ssd1306.py”, siehe “Bibliothek in MU importieren” .

Vollständiger Code:
# import related libraries
from microbit import *
from oled_ssd1306 import *
# initialize and clear oled
initialize() # OLED initialisieren
clear_oled() # OLED löschen
# function to map any range of numbers to another range
def map(value, fromMin, fromMax, toMin, toMax):
fromRange = fromMax - fromMin
toRange = toMax - toMin
valueScaled = float(value - fromMin) / float(fromRange)
return toMin + (valueScaled * toRange)
# set of images for simple bar chart
graph5 = Image("99999:""99999:""99999:""99999:""99999")
graph4 = Image("00000:""99999:""99999:""99999:""99999")
graph3 = Image("00000:""00000:""99999:""99999:""99999")
graph2 = Image("00000:""00000:""00000:""99999:""99999")
graph1 = Image("00000:""00000:""00000:""00000:""99999")
graph0 = Image("00000:""00000:""00000:""00000:""00000")
allGraphs = [graph0, graph1, graph2, graph3, graph4, graph5]
# ignore first sound level reading
# soundLevel = microphone.sound_level()
# sleep(100)
while True:
# map sound levels from range 0-255 to range 0-5 for choosing graph image
soundLevel = int(map(microphone.sound_level(), 0, 255, 0, 5))
display.show(allGraphs[soundLevel])
clear_oled() # OLED löschen
add_text(0, 0, "Acoustic Sound Level:") # Display the character string in the corresponding position of OLED
add_text(0, 2, str(microphone.sound_level())) # Display soundLevel in the corresponding position of OLED
sleep(200)

Kurze Erklärung:
① Importieren der Bibliotheken microbit und oled_ssd1306.
from microbit import *
from oled_ssd1306 import *
② OLED-Pixel initialisieren, OLED löschen.
initialize() # OLED initialisieren
clear_oled() # OLED löschen
③ Definieren einer Map-Subfunktion (zum Abbilden eines beliebigen Zahlenbereichs auf einen anderen).
def map(value, fromMin, fromMax, toMin, toMax):
fromRange = fromMax - fromMin
toRange = toMax - toMin
valueScaled = float(value - fromMin) / float(fromRange)
return toMin + (valueScaled * toRange)
④ Definieren eines Satzes einfacher Balkendiagramm-Bilder.
graph5 = Image("99999:""99999:""99999:""99999:""99999")
graph4 = Image("00000:""99999:""99999:""99999:""99999")
graph3 = Image("00000:""00000:""99999:""99999:""99999")
graph2 = Image("00000:""00000:""00000:""99999:""99999")
graph1 = Image("00000:""00000:""00000:""00000:""99999")
graph0 = Image("00000:""00000:""00000:""00000:""00000")
allGraphs = [graph0, graph1, graph2, graph3, graph4, graph5]
⑤ Abbilden des Schallwertbereichs von 0–255 auf 0–5 zur Auswahl des Grafikbildes.
soundLevel = int(map(microphone.sound_level(), 0, 255, 0, 5))
display.show(allGraphs[soundLevel])
⑥ Den ermittelten Wert auslesen und auf dem OLED anzeigen.
clear_oled() # OLED löschen
add_text(0, 0, "Acoustic Sound Level:") # Zeigt den Zeichenstring an der entsprechenden Position des OLED an
add_text(0, 2, str(microphone.sound_level())) # Zeigt den Schallpegel an der entsprechenden Position des OLED an
sleep(200)
4.3.4.7 Testergebnis

Nach dem Verdrahten und dem Einschalten über das micro USB-Kabel schließen Sie eine externe Stromversorgung (6 AA-Batterien) an, um eine ausreichende Stromversorgung sicherzustellen, und klicken Sie auf „Flash“, um den Code auf das micro:bit-Board herunterzuladen.

Nach dem Hochladen des Testcodes drücken Sie die Reset-Taste auf der Rückseite des micro:bit.

Pusten Sie Luft (oder erzeugen Sie sehr lauten Lärm) in das Mikrofon auf dem micro:bit-Board (⚠️ besondere Erinnerung: Luftpusten zeigt den Effekt deutlicher), und das OLED-Display zeigt in Echtzeit Informationen zur Intensität des Pustens (oder Lärms) an, sodass Benutzer die Stärke intuitiv erfassen können. Gleichzeitig erhöht oder verringert die 5×5-LED-Punktmatrix auf dem micro:bit-Board je nach Intensität des Pustens (oder Lärms) schrittweise die Anzahl der beleuchteten Zeilen und signalisiert so die Stärke.

⚠️ Hinweis: Die Bausteine im Experiment sind nicht in diesem Kit enthalten.
(Tipp: Wenn kein Ergebnis angezeigt wird, drücken Sie bitte die Reset-Taste des micro:bit-Boards.)







