### 4.3.4 Intelligenter Geräuschmesser #### 4.3.4.1 Überblick ![Img](./media/top1.png) 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. ![Img](./media/bottom1.png) #### 4.3.4.2 Bauteilwissen ![Img](./media/2top.png) **Microbit-Mikrofon** ![Img](./media/j1101.png) 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. ![Img](./media/j1113.png) Wenn das Board Schall erkennt, leuchtet die Mikrofon-LED-Anzeige auf. ![Img](./media/j1112.png) ![Img](./media/2bottom.png) #### 4.3.4.3 Benötigte Komponenten | ![Img](./media/microbitV2.png)| ![Img](./media/ExpansionBoard.png) |![Img](./media/OLED.png) | | :--: | :--: | :--: | | micro:bit V2 Hauptplatine ×1 | micro:bit shield ×1 | OLED-Display ×1 | |![Img](./media/usb.png) |![Img](./media/4pin.png)|![Img](./media/batterycase.png)| | micro USB-Kabel ×1 | 4-Pin-Kabel ×1 | Batteriehalter ×1 | |![Img](./media/AAbattery.png)| | | |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 | ![Img](./media/couj4.png) #### 4.3.4.5 Ablauf des Codes ![Img](./media/flow-chart-04.png) #### 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](https://docs.keyestudio.com/projects/KS4050/en/latest/docs/MicroPython/MU_development_environment.html#import-library-on-mu)” . ![Img](./media/WPSA1.png) **Vollständiger Code:** ```Python # 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) ``` ![Img](./media/line1.png) **Kurze Erklärung:** ① Importieren der Bibliotheken microbit und oled_ssd1306. ```Python from microbit import * from oled_ssd1306 import * ``` ② OLED-Pixel initialisieren, OLED löschen. ```Python initialize() # OLED initialisieren clear_oled() # OLED löschen ``` ③ Definieren einer Map-Subfunktion (zum Abbilden eines beliebigen Zahlenbereichs auf einen anderen). ```Python 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. ```Python 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. ```Python soundLevel = int(map(microphone.sound_level(), 0, 255, 0, 5)) display.show(allGraphs[soundLevel]) ``` ⑥ Den ermittelten Wert auslesen und auf dem OLED anzeigen. ```Python 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 ![Img](./media/4top.png) 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. ![Img](./media/A126.png) Nach dem Hochladen des Testcodes drücken Sie die Reset-Taste auf der Rückseite des micro:bit. ![Img](./media/A455.png) 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. ![Img](./media/dongtu-4.gif) ⚠️ **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.) ![Img](./media/4bottom.png)