### 4.3.4 Tester di Rumore Intelligente #### 4.3.4.1 Panoramica ![Img](./media/top1.png) Il tester di rumore intelligente, noto anche come sound level meter o decibel meter, viene usato per rilevare il rumore. Il rumore è classificato in diversi livelli e il microfono sul micro:bit rileverà la sua intensità nell'ambiente in tempo reale. In base ai livelli, il micro:bit lo suddivide in più fasce. In questo progetto il display OLED mostrerà il livello di rumore corrente in tempo reale, e la matrice LED 5×5 accenderà/spegnerà alcuni LED in base al livello di rumore. Questo tipo di dispositivo ha ridotto significativamente la soglia tecnica e il costo del monitoraggio del rumore, pertanto è ampiamente applicato al monitoraggio del rumore ambientale, alla salute e sicurezza sul lavoro, ai cantieri e ai locali di intrattenimento, ecc. ![Img](./media/bottom1.png) #### 4.3.4.2 Informazioni sui componenti ![Img](./media/2top.png) **Microbit Microfono** ![Img](./media/j1101.png) La scheda micro:bit V2 è dotata di un microfono che rileva suoni e segnali audio. Il microfono è posizionato nella parte superiore della scheda (il piccolo foro, usato per captare i segnali sonori ambientali, e un indicatore LED è accanto al foro). Il chip che controlla e gestisce il microfono si trova sul retro della scheda. Quando in uso, basta posizionare la scheda micro:bit con il lato frontale rivolto verso l'alto. ![Img](./media/j1113.png) Quando la scheda rileva suono, si accende l'indicatore LED del microfono. ![Img](./media/j1112.png) ![Img](./media/2bottom.png) #### 4.3.4.3 Componenti necessari | ![Img](./media/microbitV2.png)| ![Img](./media/ExpansionBoard.png) |![Img](./media/OLED.png) | | :--: | :--: | :--: | | Scheda principale micro:bit V2 ×1 | shield per micro:bit ×1 | Display OLED ×1 | |![Img](./media/usb.png) |![Img](./media/4pin.png)|![Img](./media/batterycase.png)| | Cavo micro USB ×1 | cavo a 4 pin ×1 | portabatterie ×1 | |![Img](./media/AAbattery.png)| | | |Batterie AA(**auto-fornite**) ×6| | | #### 4.3.4.4 Diagramma di collegamento ⚠️ **Quando esegui i collegamenti, presta attenzione al colore dei fili.** | OLED display | wire color | micro:bit shield pin | micro:bit board pin | | :----------: | :--------: | :------------------: | :-----------------: | | GND | nero | G | G | | VCC | rosso | V2 | V | | SDA | blu | 20 | P20 | | SCL | verde | 19 | P19 | ![Img](./media/couj4.png) #### 4.3.4.5 Flusso del Codice ![Img](./media/flow-chart-04.png) #### 4.3.4.6 Codice di test ⚠️ **Consiglio 1: Prima di scaricare il codice sulla scheda Microbit, importa il file di libreria “oled_ssd1306\.py” facendo riferimento a ** “[Importa libreria su MU](https://docs.keyestudio.com/projects/KS4050/en/latest/docs/MicroPython/MU_development_environment.html#import-library-on-mu)” . ![Img](./media/WPSA1.png) **Codice completo:** ```Python # importa le librerie correlate from microbit import * from oled_ssd1306 import * # inizializza e cancella OLED initialize() # initialize oled clear_oled() # clear oled # funzione per mappare un qualsiasi intervallo di numeri su un altro intervallo def map(value, fromMin, fromMax, toMin, toMax): fromRange = fromMax - fromMin toRange = toMax - toMin valueScaled = float(value - fromMin) / float(fromRange) return toMin + (valueScaled * toRange) # insieme di immagini per un semplice grafico a barre 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] # ignora la prima lettura del livello sonoro # soundLevel = microphone.sound_level() # sleep(100) while True: # mappa i livelli sonori dall'intervallo 0-255 a 0-5 per scegliere l'immagine del grafico soundLevel = int(map(microphone.sound_level(), 0, 255, 0, 5)) display.show(allGraphs[soundLevel]) clear_oled() # cancella OLED 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) **Breve spiegazione:** ① Importare le librerie di microbit e oled_ssd1306. ```Python from microbit import * from oled_ssd1306 import * ``` ② Inizializzare i pixel dell'OLED, cancellare l'OLED. ```Python initialize() # initialize oled clear_oled() # clear oled ``` ③ Definire una sotto-funzione map (per mappare qualsiasi intervallo di numeri su un altro). ```Python def map(value, fromMin, fromMax, toMin, toMax): fromRange = fromMax - fromMin toRange = toMax - toMin valueScaled = float(value - fromMin) / float(fromRange) return toMin + (valueScaled * toRange) ``` ④ Definire un insieme di immagini per un semplice grafico a barre. ```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] ``` ⑤ Mappare il valore del suono dall'intervallo 0-255 a 0-5 per la selezione dell'immagine grafica. ```Python soundLevel = int(map(microphone.sound_level(), 0, 255, 0, 5)) display.show(allGraphs[soundLevel]) ``` ⑥ Leggere il valore rilevato e visualizzarlo sull'OLED. ```Python clear_oled() # cancella OLED add_text(0, 0, "Acoustic Sound Level:") # Visualizza la stringa di caratteri nella posizione corrispondente dell'OLED add_text(0, 2, str(microphone.sound_level())) # Visualizza soundLevel nella posizione corrispondente dell'OLED sleep(200) ``` #### 4.3.4.7 Risultato del test ![Img](./media/4top.png) Dopo aver effettuato i collegamenti e alimentato via cavo micro USB, collegare l'alimentazione esterna (6 batterie AA) per garantire una fornitura di energia sufficiente, e cliccare “Flash” per scaricare il codice sulla scheda micro:bit. ![Img](./media/A126.png) Dopo aver caricato il codice di test, premere il pulsante di reset sul retro del micro:bit. ![Img](./media/A455.png) Soffia aria (o produci un rumore molto forte) nel microfono sulla scheda Microbit (⚠️ **promemoria speciale: Soffiare sul microfono produce un effetto più evidente**), e il display OLED mostrerà informazioni in tempo reale relative all'intensità del soffio d'aria (o del rumore), permettendo agli utenti di comprendere in modo intuitivo l'intensità del soffio d'aria (o del rumore). Nel frattempo, lo schermo a matrice di punti 5×5 LED sulla scheda Microbit aumenterà o diminuirà gradualmente il numero di righe di LED sullo schermo in base all'intensità del soffio d'aria (o del rumore), ottenendo l'effetto di segnalare l'intensità del soffio d'aria (o del rumore). ![Img](./media/dongtu-4.gif) ⚠️ **Nota: I blocchi da costruzione utilizzati nell'esperimento non sono inclusi in questo kit.** (**Suggerimento:** Se non si osserva alcun risultato, premi il pulsante di reset della scheda micro:bit.) ![Img](./media/4bottom.png)