ESP32 Simulation
The ESP32 is a popular WiFi and Bluetooth-enabled microcontroller, widely used for IoT Projects. Wokwi simulates the ESP32, ESP32-S2 and ESP32-C3 (beta).
ESP32 boardsβ
Name | Chip | Description |
---|---|---|
ESP32 DevKit v1 | ESP32 | Popular ESP32 development board |
TinyPICO | ESP32 | Small ESP32 board by UnexpectedMaker |
ESP32-S2-DevKitM-1 | ESP32-S2 | Entry-level ESP32-S2 development board |
Franzininho WiFi | ESP32-S2 | Board by the Franzininho Community |
ESP32-C3-DevKitM-1 | ESP32-C3 | Entry-level ESP32-C3 development board |
Rust Board ESP32-C3 | ESP32-C3 | ESP32-C3 board for Rust development |
You can contribute additional boards by sending a pull request to wokwi-boards.
Getting Startedβ
You can use the ESP32 simulator in three ways:
- Build projects using the ESP32 Arduino Core (including ESP-IDF projects)
- Run MicroPython projects (also CircuitPython on the ESP32-S2)
- Simulate bin application files you built on your machine (e.g. using ESP-IDF)
Arduino Coreβ
Start from the Arduino-ESP32 Project Template, or from the ESP32 Blink Example.
If you want to use third-party Arduino libraries, add a libraries.txt file with the list of libraries that you use.
MicroPythonβ
Start from the MicroPython ESP32 Project Template, or from the MicroPython ESP32 Blink Example.
Note: While the simulation is running, press Ctrl+C inside the Serial Terminal to get into the MicroPython REPL. Alternatively, you can edit the Blink Example code and remove the while loop. For more information, check out the MicroPython Guide.
Custom Application (.bin) Fileβ
Open the ESP32 custom application project template, and press "F1" in the code editor. Then choose "Load HEX File and Start Simulationβ¦". Choose any .bin file from your computer and the simulation will start.
Simulator Examplesβ
Arduino Examplesβ
MicroPython Examplesβ
ESP-IDF Examplesβ
The following examples use the ESP-IDF functions. They are compiled using Arduino ESP32 Core:
Simulation Featuresβ
Peripheral | ESP32 | S2 | C3 | Notes |
---|---|---|---|---|
Processor core(s) | βοΈ | βοΈ | βοΈ | |
GPIO | βοΈ | βοΈ | βοΈ | Interrupts supported |
IOMUX | π‘ | π‘ | π‘ | |
PSRAM | βοΈ | βοΈ | β | 4MB of external SRAM |
UART | βοΈ | βοΈ | βοΈ | |
USB | β | βοΈ | β | Support for UART over USB (CDC) |
I2C | βοΈ | βοΈ | βοΈ | Master only. 10-bit addressing not supported. |
I2S | β | β | β | Open for voting |
SPI | βοΈ | βοΈ | βοΈ | |
TWAI | β | β | β | |
RMT | π‘ | π‘ | π‘ | Transmit-only, use to control NeoPixels |
LEDC PWM | βοΈ | βοΈ | βοΈ | Used by analogWrite(), Servo, Buzzer, etc. |
MCPWM | β | β | β | |
DMA | π‘ | π‘ | β | |
WiFi | βοΈ | βοΈ | βοΈ | See the ESP32 WiFi Guide |
Bluetooth | β | β | β | Open for voting |
Timers | π‘ | βοΈ | βοΈ | |
Watchdog | β | β | β | |
RTC | π‘ | π‘ | π‘ | Only RTC Pull-up / Pull-down resistors |
ADC | βοΈ | βοΈ | β | Note: analogRead() returns values up to 4095 |
RNG | βοΈ | βοΈ | β | Random Number Generator |
AES Accelerator | βοΈ | βοΈ | βοΈ | |
SHA Accelerator | βοΈ | βοΈ | βοΈ | |
RSA Accelerator | βοΈ | βοΈ | βοΈ | |
Hall Effect Sensor | β | β | β | |
ULP Processor | β | β | β | |
GDB Debugging | π‘ | π‘ | π‘ | Only through wokwi-gdbserver |
Legend:
βοΈ - Simulated
π‘ - Partial implementation/work in progress
β - Not implemented (but if you need it, please open a feature request)
β - Not available on this chip
WiFi Simulationβ
See the ESP32 WiFi Guide.