For my next project, I need to get audio data into the ESP32.

The GitHub repo with the sample code for this video is here: https://github.com/atomic14/esp32_audio

If you like ESP32 audio videos - I’ve got a complete set on this playlist: https://www.youtube.com/playlist?list=PL5vDt5AALlRfGVUv2x7riDMIOX34udtKD

The ESP32 integrates two 12-bit ADCs - ADC1 has 8 channels and ADC2 has 10 channels.

If you have an I2S microphone (like the INMP441 you may want to watch this follow up video after this one - https://youtu.be/3g7l5bm7fZ8)

ADC2 is used by the Wi-Fi driver. So we can only use ADC2 when not using WiFi. In addition, some of the pins attached to ADC2 are strapping pins so cannot be used freely.

For simple low-frequency sampling, we can use the Arduino analogRead or we can use the Esspressif ADC functions directly (00:38).

If you need very accurate readings from the ADC then you can calibrate your ADC (00:46).

For chips manufactured recently, this may have been done in the factory. For instructions on how to manually calibrate your ADC please check the Espressif documentation here: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/peripherals/adc.html

There’s also a useful set of utilities here: https://github.com/tommag/ESP32_ADC_Calibration_tool

For audio we should ideally sample at 40KHz - for this, we should use the I2S (Inter-IC Sound) peripheral and DMA (03:40).

I’ve got two microphones break-out boards - the MAX4466 and the MAX9814 (05:00).

The power supply from the 3v3 line of the ESP32 is pretty noisy making the audio unusable, but we can fix this by filtering the VIN line and using a separate Low Dropout Regulator to generate the power supply for the microphone boards (6:20).

We can also filter out some of the noise by oversampling and then taking an average value as the sample value. I’m using a median filter here in these samples (09:00).

The audio is still not great but should be usable for my next project.

If you found this video useful then please do subscribe - there will be more videos coming!

UPDATE - I’ve made my own I2S Microphone board for the ESP32 - you can buy it here: https://www.tindie.com/products/21519/

Components:

MAX4466 - https://amzn.to/3cdxyGX MAX9814 - https://amzn.to/3uSVOVl ESP32 Dev board: https://amzn.to/3gb6fyc


Want to help support the channel? I’m accepting coffee on https://ko-fi.com/atomic14