Skip to content

Banc de test microphone MEMS

reichart edited this page Jun 16, 2026 · 4 revisions

8 dépôts github : exemples-de-montages avec les ateliers et projets réalisés au repair café festisol animations et projets réalisés pendant FESTISOL et à la MJC ; CROUS-micro-python animations et projets commencés au CROUS et poursuivis pendant les ateliers numériques ; piano une nouvelle passion réalisée à coup de marteau visio et communication ; jouets réparations, récréations mathématiques, création de nouveaux jouets developpement-voiture robot, intelligence artificielle ; raspberry-pico et micro-python ; Repair Café d'Orsay Blog Mots clés

INMP441 avec un module bluetooth

amplificateur

pour réaliser une boucle pour écouter le micro et sortir sur un haut parleur : je réalise une boucle de lecture du micro vers l'ampli MAX9837 en reliant la sortie SD est reliée à l'entrée Din de l'ampli, MAX LRC <> WS INMP, MAX B <> SCK

image

la boucle

image

la bibliothèque "pschatzmann" est bien documentée https://github.com/pschatzmann/arduino-audio-tools

microphone INMP441 sur prise jack

Comment enregistrer ou transmettre avec un microphone ? il existe des micros de très grande fidélité ; pour tester je branche un microphone sur une sortie jack PCM5100 en utilisant un esp32c3 "super mini"

image
  • I2S_BCK_IO 0 // Serial clock (SCK)
  • I2S_WS_IO 1 // Word select (WS)
  • I2S_DATA_IN_IO 2 // Serial data (SD)

Pour microphone

L/R mis à Vcc

Pour jack PCM5100 l'entree DIN est branchée sur la sortie microphone SD ; le code affiche les données

CODE

Réception bluetooth

image

Pour comprendre le fonctionnement, voici un montage avec 2 composants esp32 et un lecteur PCM5100 soudé sur un connecteur femelle

image

le montage est réalisé en montant mal <> femelle

image

ESP Pin I2S Signal PCM5102 Pin

  • GPIO15 LRCK LRCK
  • GPIO2 DATA DIN
  • GPIO4 BCK BCK

CODE

https://github.com/pschatzmann/arduino-audio-tools

réglage du son

avec la bibliothèque audio

audio.setVolume(6); // 0...21

le réglage n'est pas linéaire ; pschatzmann propose un réglage exponentiel ; le wiki est très bien fait

image

https://github.com/pschatzmann/ESP32-A2DP/wiki/Volume-Control

Transmission de la voix

image

utilisation du micro INMP441

image

https://www.instructables.com/ESP32-Mic-Testing-With-INMP441-and-DumbDisplay/

génération de code avec IA

Solution : ESP32 en périphérique Bluetooth (BLE ou A2DP)

  1. Configurer l'ESP32 :
    • Lire l'audio de l'INMP441 (I2S).
    • Transmettre l'audio via Bluetooth (BLE ou A2DP).
  2. Smartphone :
    • Recevoir l'audio et le lire.

Exemple avec ESP32 et Bluetooth Classic (A2DP) L'ESP32 envoie l'audio en Bluetooth vers le smartphone (comme un microphone Bluetooth).

Code Exemple (ESP32 + A2DP)

#include <BluetoothA2DPSource.h> #include <driver/i2s.h>

BluetoothA2DPSource a2dp_source; const char* ssid = "ESP32-Audio";

void setup() { // Config I2S (INMP441) i2s_config_t i2s_config = { .mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_RX), .sample_rate = 44100, .bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT, .channel_format = I2S_CHANNEL_FMT_ONLY_LEFT, .communication_format = I2S_COMM_FORMAT_I2S, .intr_alloc_flags = ESP_INTR_FLAG_LEVEL1, .dma_buf_count = 8, .dma_buf_len = 1024, };

i2s_pin_config_t pin_config = { .bck_io_num = GPIO_NUM_18, // SCK .ws_io_num = GPIO_NUM_25, // WS .data_out_num = GPIO_NUM_26, // SD };

i2s_driver_install(I2S_NUM_0, &i2s_config, 0, NULL); i2s_set_pin(I2S_NUM_0, &pin_config);

// Config A2DP a2dp_source.start(ssid, i2s_read); }

void loop() { // L'audio est transmis en Bluetooth }

Smartphone

  1. Active le Bluetooth.
  2. Recherche "ESP32-Audio" et connecte-toi.
  3. Utilise une app audio (ex : "SoundSource" sur iOS/Android) pour écouter.

Alternative : BLE avec app dédiée Si A2DP ne fonctionne pas, utiliser BLE pour envoyer l'audio à une app spécifique (ex : "BLE Microphone" sur Play Store).

Comprendre le bus I2S

Il faut disposer d'un oscilloscope ; pour les 3 signaux SD ( serial data ) SCK ( horloge ) et WS ( mots transmis ) le signal a une fréquence de 174 KHz et seulement de 17 KHz pour WS

image

Lire comprendre-le-fonctionnement

Clone this wiki locally