Skip to content

INMP441

reichart edited this page Jun 15, 2026 · 12 revisions

8 dépôts github : exemples-de-montages festisol CROUS-micro-python piano visio anumby jouets developpement-voiture raspberry-pico Blog ateliers numériques Repair Café d'Orsay

micro Bluetooth

micro Bluetooth avec une ProMicro nRF52840 + INMP441. C’est le combo classique pour un micro BLE audio.

  1. Câblage nRF52840 ProMicro <-> INMP441 I2S INMP441 nRF52840 ProMicro Note VDD 3V3 3.3V uniquement GND GND Masse SD P0.25 I2S DIN WS P0.24 I2S LRCLK SCK P0.23 I2S SCLK L/R GND Canal gauche. Mets à VDD pour droit
  2. Code Arduino avec Bluefruit nRF52 Installe le core Adafruit nRF52 dans l’IDE Arduino. #include <bluefruit.h> #include <PDM.h>

BLEDis bledis; BLEUart bleuart;

void setup() { Serial.begin(115200);

Bluefruit.begin(); Bluefruit.setName("Micro-nRF52");

bledis.setManufacturer("DIY"); bledis.setModel("INMP441"); bledis.begin();

bleuart.begin();

Bluefruit.Advertising.addFlags(BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE); Bluefruit.Advertising.addTxPower(); Bluefruit.Advertising.addService(bleuart); Bluefruit.ScanResponse.addName(); Bluefruit.Advertising.restartOnDisconnect(true); Bluefruit.Advertising.setInterval(32, 244); Bluefruit.Advertising.setFastTimeout(30); Bluefruit.Advertising.start(0);

PDM.onReceive(onPDMdata); PDM.setBufferSize(512); // P0.23 = CLK, P0.25 = DOUT, P0.24 = WS PDM.setPins(23, 25, 24); if (!PDM.begin(1, 16000)) { Serial.println("PDM fail"); while (1); } }

void onPDMdata() { int bytesAvailable = PDM.available(); char sampleBuffer[512]; PDM.read(sampleBuffer, bytesAvailable); if (Bluefruit.connected()) { bleuart.write(sampleBuffer, bytesAvailable); } }

void loop() { } 3. Points clés

I2S vs PDM : L’INMP441 sort en I2S. Le nRF52840 gère I2S mais la lib PDM est plus simple. Ça marche car PDM = I2S 1-bit. Qualité OK pour voix
Débit BLE : 16kHz mono 16-bit = 256kbit/s. Le BLE 4.2 du nRF52 tient ∼200kbit/s réel. Donc 16kHz c’est le max fiable. Pour 32kHz passe en BLE 5.0 2M PHY
Buffer : Envoie par paquets de 20 à 512 octets via BLEUart. Au-delà ça fragmente
Conso : ∼8mA en streaming. Une LiPo 500mAh = 60h
  1. Côté réception App nRF Connect ou appli custom qui lit le service Nordic UART. Tu récupères du PCM 16kHz 16-bit brut.

Clone this wiki locally