### 4.3.4 Probador de ruido inteligente #### 4.3.4.1 Descripción general ![Img](./media/top1.png) 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](./media/bottom1.png) #### 4.3.4.2 Conocimiento del componente ![Img](./media/2top.png) **Micrófono de micro:bit** ![Img](./media/j1101.png) 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](./media/j1113.png) Cuando la placa detecta sonido, el indicador LED del micrófono se enciende. ![Img](./media/j1112.png) ![Img](./media/2bottom.png) #### 4.3.4.3 Componentes requeridos | ![Img](./media/microbitV2.png)| ![Img](./media/ExpansionBoard.png) |![Img](./media/OLED.png) | | :--: | :--: | :--: | | Placa principal micro:bit V2 ×1 | Placa de expansión micro:bit ×1 | Pantalla OLED ×1 | |![Img](./media/usb.png) |![Img](./media/4pin.png)|![Img](./media/batterycase.png)| | Cable micro USB ×1 | Cable de 4 pines ×1 | Portapilas ×1 | |![Img](./media/AAbattery.png)| | | |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](./media/couj4.png) #### 4.3.4.5 Flujo de código ![Img](./media/flow-chart-04.png) #### 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](https://docs.keyestudio.com/projects/KS4050/en/latest/docs/MicroPython/MU_development_environment.html#import-library-on-mu)” . ![Img](./media/WPSA1.png) **Código completo:** ```Python # 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](./media/line1.png) **Breve explicación:** ① Importar las bibliotecas de microbit y oled_ssd1306. ```Python from microbit import * from oled_ssd1306 import * ``` ② Inicializar los píxeles del OLED, limpiar el OLED. ```Python initialize() # initialize oled clear_oled() # clear oled ``` ③ Definir una subfunción map (para mapear cualquier rango de números a otro). ```Python 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. ```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] ``` ⑤ Mapear el rango de valores de sonido de 0-255 a 0-5 para la imagen gráfica seleccionada. ```Python soundLevel = int(map(microphone.sound_level(), 0, 255, 0, 5)) display.show(allGraphs[soundLevel]) ``` ⑥ Leer el valor detectado y mostrarlo en el OLED. ```Python 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](./media/4top.png) 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](./media/A126.png) Después de cargar el código de prueba, presione el botón de reinicio en la parte posterior del micro:bit. ![Img](./media/A455.png) 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](./media/dongtu-4.gif) ⚠️ **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](./media/4bottom.png)