sonometre.ino

M5Stack Core (ESP32) — famille Basic / Gray (K001 / K002) · Fichier : sonometre.ino · Langage : Arduino · Usage : Mesurer le niveau sonore avec le micro interne

Le micro MEMS du boîtier (GPIO34) fournit un flux 8 bits : la racine moyenne quadratique transforme le bruit en un niveau 0-100 % affiché en barre. Le sonomètre d'appoint est à trois fonctions mathématiques.

Matériel requis

Un M5Stack Core Basic/Gray (ESP32 dans un boîtier avec écran TFT 320×240, 3 boutons A/B/C, haut-parleur, micro SD, batterie 110 mAh). Aucun (micro dans le boîtier) ; une source sonore pour tester.

Branchement

Aucun câblage. Le micro est derrière les trous du capot : ne pas boucher.

Fonctionnement

Mic.readPixels échantillonne ~8 kHz sur le bus PDM interne ; la RMS (somme des carrés / N, racine) est la mesure d'énergie du signal. Le mapping 0-64 → 0-100 % est calibré à l'oreille. Dans l'Arduino IDE (paquet esp32), carte « M5Stack-Core-ESP32 » ; installez la bibliothèque « M5Stack » (ou M5Unified) via le gestionnaire, puis Téléverser.

Pour aller plus loin

Déclenchez le buzzer au-dessus d'un seuil (avertisseur de niveau), ou journalisez les pics sur la SD.

sonometre.ino

// Microphone PDM interne : RMS -> barre de niveau + clignotement.
#include <M5Stack.h>

const int N = 2048;
uint8_t tampon[N];
unsigned long precedent = 0;

void setup() {
  M5.begin();
  M5.Mic.begin();
  M5.Lcd.setTextSize(2);
}

void loop() {
  if (millis() - precedent < 100) return;
  precedent = millis();

  M5.Mic.readPixels(tampon, N);          // 2048 echantillons 8 bits
  long somme = 0;
  for (int i = 0; i < N; i++) {
    long e = tampon[i] - 128;            // recentre autour de zero
    somme += e * e;
  }
  float rms = sqrtf((float)somme / N);
  int niveau = constrain(map((int)rms, 0, 64, 0, 100), 0, 100);

  M5.Lcd.fillRect(10, 60, 300, 40, TFT_BLACK);
  M5.Lcd.fillRect(10, 60, 3 * niveau, 40,
                  niveau > 80 ? TFT_RED : TFT_GREEN);
  M5.Lcd.setCursor(10, 110);
  M5.Lcd.printf("RMS %.1f -> %d %%\n", rms, niveau);
}

← Retour à la fiche