🛠 Acquitter un microphone PDM externe

Arduino Nicla Sense ME · intermediaire · Schéma : IMG-nicla-sense-me-intermediaire-1-niclasense-micro-pdm.svg — Petit microphone MEMS au format boîtier avec deux fils horloge et données rejoignant les broches numériques du Nicla Sense ME, onde sonore stylisée au-dessus du micro

Objectifs

Acquitter un flux audio PDM (Pulse Density Modulation) depuis un microphone MEMS externe connecté sur les broches exposées du Nicla Sense ME, puis transférer les échantillons décodés vers le port série. Le nRF52832 embarque un périphérique PDM matériel, et le core mbed l'expose en principe via la bibliothèque PDM/arPDM utilisée sur les cartes nRF d'Arduino. Ce tutoriel sert aussi d'avertissement documentaire : la base officielle de l'ABX00050 ne référence aucun microphone embarqué, contrairement à d'autres cartes de la famille.

Matériel

Code complet

#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;
  }
}

Vérification attendue

Si le périphérique PDM est disponible et le micro correctement câblé, la console série (115200 bauds) déverse des échantillons PCM 16 bits ; taper dans les mains produit des pics visibles. Sans micro, PDM.begin échoue et le message d'erreur s'affiche, ce qui est déjà une vérification utile du montage.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels