Voice commands: INMP441 microphone
A microphone and an AI model on the board that recognises a few words, with no internet: today go, left, right and stop.
The test program
Test this part on its own before you build the rest: if it works alone, the rest is built on something you know works.
10 IF VOICE() = "go" THEN LED green, on
20 IF VOICE() = "stop" THEN LED green, off
30 WAIT 100
40 GOTO 10What you should see: Say "go" near the microphone: the green light comes on; "stop": it goes off.
▶ Try it in the IDEWhat to buy
- INMP441 microphone (I2S)Power it at 3.3V (VDDIO), never 5V. On a moving robot, solder the header pins (friction-fit shakes loose).
How to wire it to an ESP32-S3
- SCK → ESP32-S3: GPIO15SCK is the clock line (the board sets the beat the mic sends bits on).
- WS → ESP32-S3: GPIO16WS picks the left/right channel slot for each sample.
- SD → ESP32-S3: GPIO17SD is the mic's data out: the sound bits flow into the board here.
- VDD → ESP32-S3: 3V3Power. Use the 3.3V rail, never 5V (5V can damage the mic).
- GND → ESP32-S3: GNDCommon ground: this link is mandatory.
- L/R → ESP32-S3: GNDL/R to GND selects the left channel.
If it does not work
- The program runs but nothing happens
- The microphone is not powered at 3.3 V, or the SCK, WS and SD wires are swapped. VDD to 3.3 V (never 5 V), GND and L/R to GND, then SCK, WS and SD as in the diagram.
What you can adjust
- The words it understands: today English only, go, left, right and stop (also up and down on the Nordic board).
Which boards it works on
- ESP32-S3 Freenove: yes
- Nordic nRF54LM20 DK: yes
- Arduino UNO R4 WiFi: no, no AI