Sparkfun MicroMod ESP32 Processor – Sparkfun WRL-16781
The MicroMod ESP32 Processor Board combines Espressif’s ESP32 with our M.2 connector interface to bring a processor board with reliable WiFi and Bluetooth capabilities into our MicroMod ecosystem. With the M.2 MicroMod connector, connecting your ESP32 Processor is a breeze. Simply match up the key on your processor’s beveled edge connector to the key on the M.2 connector and secure it with a screw (included with all Carrier Boards). If you need to swap out your processor for a strong wireless option, make sure to check out the MicroMod ESP32!
The ESP32 includes a laundry list of functionality, including the dual-core Tensilica LX6 microprocessor, 240MHz clock frequency, 520kB internal SRAM, integrated WiFi transceiver, integrated dual-mode Bluetooth, and hardware-accelerated encryption (AES, SHA2, ECC, RSA-4096). With this MicroMod processor board, you have access to 8 general use IO pins, dedicated analog, digital, and PWM pins, as well as all the fan favorites – SPI, I2C, UART, and SDIO. Add to that 16MB flash storage and sleep current of around 500µA, and you’ve got a perfect storm of versatility.
MicroMod ESP32 Features:
- Dual-core Tensilica LX6 microprocessor
- Up to 240MHz clock frequency
- 520kB internal SRAM
- 128mbit/16MB flash storage
- Integrated 802.11 BGN WiFi transceiver
- Integrated dual-mode Bluetooth (classic and BLE)
- 2.7 to 3.6V operating range
- 500µA sleep current under hibernation
- 10-electrode capacitive touch support
- Hardware-accelerated encryption (AES, SHA2, ECC, RSA-4096)
Peripherals available on MicroMod ESP32:
- 1x USB dedicated for programming and debugging
- 1x UART
- 2x I2C
- 1x SPI
- 7x GPIO
- 2x Digital Pins
- 2x Analog Pins
- 2x PWM
- Status LED
- VIN Level ADC
- Additional peripherals are available but are shared on dedicated MicroMod pins
MicroMod ESP32 Schematic:
MicroMod ESP32 Dimensions:
- Overall Width: 22mm (0.866″)
- Overall Length (Including M.2 pins): 22mm (0.866″)
Getting the MicroMod ESP32 Connected:
This tiny board is essentially an ESP32 combined with the simplicity of an M.2 connector which means that you can take advantage of the ESP32 power with any of the MicroMod carrier boards.
You’ll also want to grab a USB-C cable to connect the Carrier to your computer and if you want to add some Qwiic breakouts to your MicroMod project you’ll want at least one Qwiic cable to connect it all together.
The Arduino IDE is a great way to get your ESP32 up and running. The best way to do this is to download the Sparkfun ESP32 Arduino library in your Arduino Library Manager tool:
Then select the SparkFun ESP32 MicroMod Board from the Tools menu:
The MicroMod ESP32 Pinout:
The ESP32 MicroMod has a few quirks. The ESP32’s GPIO pins provide a lot of flexibility with what each pin can be used for. Whether it’s I2C, I2S, SPI, UART, or PWM, the ESP32 MicroMod can do just about everything! However, with that flexibility and a fixed number of GPIO pins, the ESP32 isn’t able to do it all at the same time. Below is a list of protocols the ESP32 supports, but pay close attention to the pins used because some pins are assigned to two or possibly three functions.
One of the unique aspects of the ESP32 is the strapping pins. When the ESP32 comes out of reset, or as power is supplied, there are a few pins which control the behavior of the board.
- GPIO 0
- Having GPIO 0 pulled low as the ESP32 comes out of reset will enter the serial bootloader. Otherwise, the board will run the program stored in flash. On the MicroMod Processor, this pin is pulled high externally through a 10k resistor, and is connected to the boot button on the carrier boards, which can pull the pin low.
- GPIO 2
- Having GPIO 2 pulled high as the ESP32 comes out of reset will prevent the board from entering the serial bootloader. On the MicroMod Processor, this pin is connected to the status LED (active high) and does not interfere with the board from being able to enter the serial bootloader.
- GPIO 12
- If driven high, the flash voltage (VDD_SDIO) is set to 1.8V. If unconnected or pulled low, VDD_SDIO is set to 3.3V. The flash IC used on the MicroMod Processor has a minimum voltage of 2.7V, which would create a brownout condition and might corrupt the data stored to the flash, or simply prevent the program from running. On the ESP32 MicroMod Processor, this pin is connected to PWM1.
- GPIO 15
- If driven low, the boot messages printed by the ROM bootloader (at 115200 baud) are silenced. If unconnected or driven high, the messages will be printed as they normally are. On the ESP32 MicroMod Processor, this pin is connected to G0.
We love us some I2C! We’ve broken out two I2C buses, which can be used with the Qwiic system. The main I2C bus has dedicated GPIO pins 21/22 connected to MicroMod pads 12/14, along with a dedicated interrupt pin connected to GPIO pin 4, which is connected to pad 16 of the MicroMod connector.
If you need a second I2C bus, the ESP32 uses GPIO pins 25/26 (pads 42/44 on the MicroMod) for SCL1 and SDA1.
The ESP32 Processor has two UARTs available. The primary UART has dedicated GPIO pins 1 and 3 which can be used for programming as well as printing debug messages to a terminal window. These GPIO pins aren’t directly broken out, but instead are converted to USB which is connected to MicroMod pads 3 and 5.
The second UART has connected GPIO pins 16 and 17 (pads 19 and 17 on the MicroMod) for RX1 and TX1.
The MicroMod connector supports a total of 12 general purpose IO pins, 7 of which are used on the ESP32 Processor, on top of the 6 dedicated pins. The dedicated pins are just that, and are not shared with any other pin, unlike the general purpose pins which may be shared with other pins. The pins used are:
- A0 – GPIO pin 34, pad 34 on the MicroMod (Input Only!)
- A1 – GPIO pin 35, pad 38 on the MicroMod (Input Only!)
- D0 – GPIO pin 14, pad 10 on the MicroMod
- D1 – GPIO pin 27, pad 18 on the MicroMod
- PWM0 – GPIO pin 13, pad 32 on the MicroMod
- PWM1 – GPIO pin 12, pad 47 on the MicroMod
General Purpose IO pins
- G0 – GPIO pin 15, pad 40 on the MicroMod
- G1 – GPIO pin 25, pad 42 on the MicroMod – Shared with the I2S bus, and secondary I2C bus.
- G2 – GPIO pin 26, pad 44 on the MicroMod – Shared with the I2S bus, and secondary I2C bus.
- G3 – GPIO pin 17, pad 46 on the MicroMod – Shared with the I2S bus, and secondary UART.
- G4 – GPIO pin 16, pad 48 on the MicroMod – Shared with the I2S bus, and secondary UART.
- G5 – GPIO pin 32, pad 73 on the MicroMod – Shared with the 32KHz RTC crystal.
- G6 – GPIO pin 33, pad 71 on the MicroMod – Shared with the 32KHz RTC crystal.
The ESP32 Processor supports audio using the I2S standard. The pins used are:
- AUD_OUT – GPIO pin 17, pad 56 on the MicroMod, this is the digital audio output.
- AUD_IN – GPIO pin 16, pad 54 on the MicroMod, this is the digital audio input.
- AUD_LRCLK – GPIO pin 25, pad 52 on the MicroMod. Officially called “word select”, and also known as “frame sync”.
- AUD_BCLK – GPIO pin 26, pad 50 on the MicroMod. Offically called “continuous serial clock, and also known as the “bit clock”
The MicroMod standard supports two Serial Peripheral Interface (SPI) buses, but because of the limited GPIO pins here, only the primary SPI bus is used. This primary SPI bus is dedicated to the following pins:
- SCK – This is the clock pin, which is connected to GPIO 18, or MicroMod pad 57.
- SDO – This is the serial data output of the ESP32, which is connected to GPIO 23, or MicroMod pad 59.
- SDI – This is the serial data input of the ESP32, which is connected to GPIO 19, or MicroMod pad 61.
- #CS – This is the chip select pin, which is connected to GPIO 5, or MicroMod pad 55.