ESP32 simulator, the classic one, on an Xtensa core
Mokxi models the thirty-pin DOIT ESP32 DevKit V1: an ESP32-WROOM-32 with its Xtensa LX6 at 240 MHz, the GPIO matrix, IO_MUX, UART0, timer group 0, ADC1 and the LEDC PWM controller, at the real addresses. One core, not two, and no radio (WiFi here is simulated, and says so), and the contract says exactly where every edge is.
- 9peripheral areas modeled
- 5projects ready to run
- Real timeon your own machine
What is modeled
Taken from the board's own contract document and put in plain words, with what is missing listed underneath.
Not in the model
- A radio of any kind. There is no 802.11 and no Bluetooth in the model. WiFi is simulated instead (the Arduino API over a network of ours, with no real internet behind it), and every page that mentions it says so.
- The second core. A real ESP32 has two LX6 cores; this model runs the PRO core, so anything that starts a task on core 1 will not run.
- The FPU: every floating-point instruction faults rather than returning a wrong number, and the runtime is soft float.
- The cache, flash and PSRAM, the RTC and ULP, deep sleep, ADC2, the touch and hall sensors, I2C, SPI, I2S and RMT.
- Several addresses (the IO_MUX pad order, the timer group and LEDC layouts, the SENS offsets, the interrupt matrix numbers and the GPIO matrix signal indices LEDC uses) are this model’s belief rather than something it can stand behind. Section 6 of the contract names every one.
Open one and press Run
Each of these opens in the editor exactly as it is drawn here.
Every built-in project on the ESP32 DevKit V1
Each has its own page with the circuit running, the code and a parts list.
Tutorials that use this board
Each one ends in a running circuit, on this same board.
Questions
Is it free?
Yes. Every board and every part is on the free plan, with no account needed.
Can I compile my own sketch for it?
Yes. Edit the sketch and press Run: it compiles in the tab with clang for Xtensa, and the build panel shows every step. Nothing is uploaded. Floating-point math is the one thing to avoid: this model has no FPU, so a float multiply faults rather than returning a wrong number.
Does it simulate WiFi or Bluetooth?
Bluetooth, no. WiFi, yes: simulated, and it says plainly that it is. Your sketch uses the real Arduino calls (WiFi.begin, WiFi.status, HTTPClient, WebServer), and the board joins a network, fetches a page and serves one. Underneath there is no radio, no 802.11 and no real internet: four made-up addresses under .mokxi exist and nothing a sketch does leaves this tab.
Why will pinMode(34, OUTPUT) not work?
Because it does not work on the chip either. GPIO 34 to 39 have an input buffer and no output driver at all. Mokxi refuses the write the way the silicon does, counts it, and puts a small amber mark on the board rather than letting you believe the pin is driving something.
Why does my potentiometer never reach 4095?
Because at the default 11 dB attenuation this converter’s full scale is about 3.9 V, and your rail is 3.3 V. About 3466 is the top of a 3.3 V sweep, and the knob example prints the raw number so it is not a mystery.
Is this the 30-pin or the 38-pin board?
The thirty-pin DOIT DevKit V1. The 38-pin Espressif DevKitC is a full inch between header rows and brings out six more pins: the GPIO numbers are the same chip’s, the positions are not.
Does it run both cores?
One. The PRO core runs; there is no APP CPU and no FreeRTOS to schedule across them, so a setup()/loop() sketch is fine and xTaskCreatePinnedToCore is not.
The other boards
Every one of these runs today, and every one is free.
Looking for the shorter introduction? See the ESP32 DevKit simulator page.
Try it on your own firmware
What you build here runs on the board on your desk, unchanged. Nothing to install and no account needed.