🛠 Acquitter un microphone PDM externe
Objetivos
Adquirir un flujo de audio PDM (Modulación de Densidad de Pulsos) desde un micrófono MEMS externo conectado a los pines expuestos del Nicla Sense ME, y transferir las muestras decodificadas al puerto serie. El nRF52832 incorpora un periférico PDM por hardware, y el core mbed lo expone en principio a través de la biblioteca PDM/arPDM utilizada en las placas nRF de Arduino. Este tutorial sirve también como advertencia documental: la base oficial de la ABX00050 no referencia ningún micrófono integrado, a diferencia de otras placas de la familia.
Material
- Placa Arduino Nicla Sense ME (ABX00050) y cable micro-USB
- Micrófono MEMS PDM (tipo INMP441 o equivalente con pines VDD, GND, CLK, DATA)
- > s soldados tampoco están documentados: validar antes de cualquier montaje definitivo.
- >
Código completo
#include <PDM.h>
short buffer[256];
volatile size_t echantillonsLus = 0;
void onDonneesPDM {
int octets = PDM.available;
PDM.read(buffer, octets);
echantillonsLus = octets / 2;
}
void setup {
Serial.begin(115200);
while (!Serial);
PDM.onReceive(onDonneesPDM);
PDM.setGain(30);
if (!PDM.begin(1, 16000)) { // 1 canal, 16 kHz
Serial.println("Aucun micro PDM detecte");
while (1);
}
}
void loop {
if (echantillonsLus) {
for (size_t i = 0; i < echantillonsLus; i++) {
Serial.println(buffer[i]);
}
echantillonsLus = 0;
}
}
Verificación esperada
Si el periférico PDM está disponible y el micrófono está correctamente cableado, la consola serie (115200 baudios) volcará muestras PCM de 16 bits; aplaudir produce picos visibles. Sin micrófono, PDM.begin falla y se muestra el mensaje de error, lo cual ya es una verificación útil del montaje.
Errores frecuentes
- Confundir PDM e I²S: un micrófono PDM no emite PCM clásico con marca de tiempo; el reloj CLK debe permanecer continuo, so pena de obtener ceros o ruido blanco.
- Alimentación del micrófono inadecuada: el núcleo de la placa funciona a 1,8 V y los pines externos están traducidos (VDDIO_EXT 1,8-3,3 V); verificar la compatibilidad del nivel de CLK del micrófono elegido.
- Invertir CLK y DATA: síntoma típico, una señal constante en cero o un ruido perfectamente aleatorio.
- Olvidar que el flujo es exigente para la CPU: a 16 kHz, un envío serie muestra por muestra no mantiene el ritmo; enviar por paquetes o reducir la tasa de visualización.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
led_rgb.inoArduinoimu_bhi260.inoArduinorotation_fusion.inoArduinopression_bmp390.inoArduinonose_electronique.inoArduinoboussole_bmm150.inoArduino