All parts

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 10

What you should see: Say "go" near the microphone: the green light comes on; "stop": it goes off.

▶ Try it in the IDE

What 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

  1. SCK → ESP32-S3: GPIO15SCK is the clock line (the board sets the beat the mic sends bits on).
  2. WS → ESP32-S3: GPIO16WS picks the left/right channel slot for each sample.
  3. SD → ESP32-S3: GPIO17SD is the mic's data out: the sound bits flow into the board here.
  4. VDD → ESP32-S3: 3V3Power. Use the 3.3V rail, never 5V (5V can damage the mic).
  5. GND → ESP32-S3: GNDCommon ground: this link is mandatory.
  6. 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