4.3.4 Tester di Rumore Intelligente

4.3.4.1 Panoramica

Img

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

4.3.4.2 Informazioni sui componenti

Img

Microbit Microfono

Img

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

Quando la scheda rileva suono, si accende l’indicatore LED del microfono.

Img

Img

4.3.4.3 Componenti necessari

Img

Img

Img

Scheda principale micro:bit V2 ×1

shield per micro:bit ×1

Display OLED ×1

Img

Img

Img

Cavo micro USB ×1

cavo a 4 pin ×1

portabatterie ×1

Img

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

4.3.4.5 Flusso del Codice

Img

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” .

Img

Codice completo:

# 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

Breve spiegazione:

① Importare le librerie di microbit e oled_ssd1306.

from microbit import *
from oled_ssd1306 import *

② Inizializzare i pixel dell’OLED, cancellare l’OLED.

initialize()  # initialize oled
clear_oled()  # clear oled

③ Definire una sotto-funzione map (per mappare qualsiasi intervallo di numeri su un altro).

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.

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.

soundLevel = int(map(microphone.sound_level(), 0, 255, 0, 5))
display.show(allGraphs[soundLevel])

⑥ Leggere il valore rilevato e visualizzarlo sull’OLED.

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

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

Dopo aver caricato il codice di test, premere il pulsante di reset sul retro del micro:bit.

Img

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

⚠️ 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