4.3.4 Probador de ruido inteligente

4.3.4.1 Descripción general

Img

El probador de ruido inteligente, también conocido como medidor de nivel de sonido o medidor de decibelios, se utiliza para detectar el ruido. El ruido se clasifica en diferentes niveles, y el micrófono del micro:bit detectará su intensidad en el entorno en tiempo real. Según los niveles, micro:bit lo divide en varios grados.

En este proyecto, la pantalla OLED mostrará el nivel de ruido actual en tiempo real, y la matriz LED 5×5 encenderá/apagará algunos LED según el nivel de ruido.

Este tipo de dispositivo ha reducido significativamente el umbral técnico y el costo del monitoreo de ruido, por lo que se aplica ampliamente al monitoreo de ruido ambiental, salud y seguridad laboral, obras de construcción y locales de entretenimiento, etc.

Img

4.3.4.2 Conocimiento del componente

Img

Micrófono de micro:bit

Img

La placa micro:bit V2 está integrada con un micrófono que detecta sonidos y señales de audio. El micrófono está colocado en la parte superior de la placa (el pequeño agujero, que se usa para captar las señales de sonido ambiente, y un indicador LED está junto al agujero). El chip que controla y gestiona el micrófono se encuentra en la parte posterior de la placa.

Al usarlo, simplemente coloque la placa micro:bit con la cara hacia arriba.

Img

Cuando la placa detecta sonido, el indicador LED del micrófono se enciende.

Img

Img

4.3.4.3 Componentes requeridos

Img

Img

Img

Placa principal micro:bit V2 ×1

Placa de expansión micro:bit ×1

Pantalla OLED ×1

Img

Img

Img

Cable micro USB ×1

Cable de 4 pines ×1

Portapilas ×1

Img

Pilas AA (preparadas por el usuario) ×6

4.3.4.4 Diagrama de cableado

⚠️ Al cablear, por favor preste atención al color del cable.

OLED display

wire color

micro:bit shield pin

micro:bit board pin

GND

black

G

G

VCC

red

V2

V

SDA

blue

20

P20

SCL

green

19

P19

Img

4.3.4.5 Flujo de código

Img

4.3.4.6 Código de prueba

⚠️ Consejo 1: Antes de descargar el código en la placa Microbit, por favor importe el archivo de biblioteca “oled_ssd1306.py” haciendo referencia a Importar biblioteca en MU” .

Img

Código completo:

# importar las bibliotecas relacionadas
from microbit import *
from oled_ssd1306 import *

# inicializar y limpiar oled
initialize()  # initialize oled
clear_oled()  # clear oled

# función para mapear cualquier rango de números a otro rango
def map(value, fromMin, fromMax, toMin, toMax):
    fromRange = fromMax - fromMin
    toRange = toMax - toMin
    valueScaled = float(value - fromMin) / float(fromRange)
    return toMin + (valueScaled * toRange)

# conjunto de imágenes para gráfico de barras simple
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() # borrar OLED
    add_text(0, 0, "Acoustic Sound Level:")  # Muestra la cadena de caracteres en la posición correspondiente del OLED
    add_text(0, 2, str(microphone.sound_level()))  # Muestra el nivel de sonido en la posición correspondiente del OLED
    sleep(200)

Img

Breve explicación:

① Importar las bibliotecas de microbit y oled_ssd1306.

from microbit import *
from oled_ssd1306 import *

② Inicializar los píxeles del OLED, limpiar el OLED.

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

③ Definir una subfunción map (para mapear cualquier rango de números a otro).

def map(value, fromMin, fromMax, toMin, toMax):
    fromRange = fromMax - fromMin
    toRange = toMax - toMin
    valueScaled = float(value - fromMin) / float(fromRange)
    return toMin + (valueScaled * toRange)

④ Definir un conjunto de imágenes de gráfico de barras simple.

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]

⑤ Mapear el rango de valores de sonido de 0-255 a 0-5 para la imagen gráfica seleccionada.

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

⑥ Leer el valor detectado y mostrarlo en el OLED.

clear_oled() # borrar OLED
add_text(0, 0, "Acoustic Sound Level:")  # Muestra la cadena de caracteres en la posición correspondiente del OLED
add_text(0, 2, str(microphone.sound_level()))  # Muestra el nivel de sonido en la posición correspondiente del OLED
sleep(200)

4.3.4.7 Resultado de la prueba

Img

Después de cablear y encender con el cable micro USB, conecte la alimentación externa (6 pilas AA) para asegurar un suministro de energía suficiente, y haga clic en “Flash” para descargar el código a la placa micro:bit.

Img

Después de cargar el código de prueba, presione el botón de reinicio en la parte posterior del micro:bit.

Img

Sople aire (o haga un ruido muy fuerte) en el micrófono de la placa Microbit (⚠️ recordatorio especial: soplar aire tiene un efecto más evidente), y la pantalla OLED mostrará información en tiempo real relacionada con la intensidad del soplo de aire (o del ruido), permitiendo a los usuarios entender de forma intuitiva la intensidad del soplo de aire (o ruido). Mientras tanto, la pantalla de matriz de puntos LED 5×5 en la placa Microbit aumentará o reducirá gradualmente el número de filas de LED encendidas en la pantalla según la intensidad del soplo de aire (o ruido), logrando el efecto de advertencia sobre la intensidad del soplo de aire (o ruido).

Img

⚠️ Nota: Los bloques del experimento no están incluidos en este kit.

(Consejo: Si no se observa ningún resultado, por favor presione el botón de reinicio de la placa micro:bit.)

Img