ESP32-C3 simulator, on the real memory map
Mokxi models the ESP32-C3-DevKitM-1. A RISC-V core at 160 MHz, with GPIO, IO_MUX, UART0, the SYSTIMER and ADC1 at their real addresses. Firmware runs at real time here; test the finished build on the physical board too.
- 7peripheral areas modeled
- 42projects 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 beside it.
Modeled
- Core
- RV32IMC with Zicsr, machine mode, one instruction per cycle at 160 MHz
- GPIO and IO_MUX
- Real register offsets, input enable on every pad at reset
- UART0
- Paced at the configured baud rate, wired to the serial monitor
- SYSTIMER
- Alarms, which park the core during delay() rather than spinning on it
- ADC1
- One-shot conversions on GPIO 0 to 4: twelve bits, with the four attenuations
- Memory map
- The real one for everything above, so a build is not Mokxi-specific
- WiFi, simulated
- WiFi.h, HTTPClient.h and WebServer.h over a network written in software: no radio, no 802.11, and real internet only when you sign in and switch it on
Not modeled
- A radio of any kind. There is no 802.11 and no Bluetooth radio in the model. WiFi and Bluetooth are simulated instead (the Arduino API over a network of ours which reaches the real internet only when you sign in and switch it on, and a phone in the editor’s Bluetooth pane), and every page that mentions them says so.
- ADC2, the ADC's DMA and digital controller, and the eFuse calibration curve. ADC1 one-shot is the path analogRead takes.
- Other outlines on this page: the XIAO ESP32-C3 and the SuperMini are the same chip and have pages of their own.
- Vendor ESP-IDF binaries. The firmware runtime here is ours.
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-C3
Each has its own page with the circuit running, the code and a parts list.
- ESP32-C3 blinkBeginner
- ESP32-C3 buttonBeginner
- ESP32-C3 serialBeginner
- ESP32-C3 PWM fadeBeginner
- ESP32-C3 servoBeginner
- ESP32-C3 SimonAdvanced
- Blink, with a breakpointBeginner
- Knight RiderBeginner
- Morse senderBeginner
- Breathing LEDIntermediate
- Dice on an ESP32-C3Intermediate
- OLED diceIntermediate
- ESP32-C3 thumb stickIntermediate
- Two boards, one wireAdvanced
- Two barometersIntermediate
- Current and voltageIntermediate
- WiFi: join the networkBeginner
- WiFi: fetch the weatherIntermediate
- API lab: fetch JSONIntermediate
- WiFi: a lamp on a web pageIntermediate
- Smart home hubAdvanced
- OLED on an ESP32-C3Intermediate
- Binary clockIntermediate
- Rainbow stripIntermediate
- Plasma panelAdvanced
- Ring SimonAdvanced
- OLED pong on an ESP32-C3Advanced
- Pong, two buttonsAdvanced
- Desk buddy robotAdvanced
- StackerAdvanced
- Tic-tac-toe vs minimaxAdvanced
- Chiptune playerAdvanced
- TypewriterAdvanced
- ConsoleAdvanced
- Handheld game consoleAdvanced
- Sound-reactive LED stripIntermediate
- Arcade button lightingIntermediate
- Home Assistant multisensorIntermediate
- Radar hallway sensorIntermediate
- Garage door openerIntermediate
- LED strip controllerIntermediate
- Plant sensor for Home AssistantBeginner
Parts wired to the ESP32-C3, step by step
Each page has the wiring with the ESP32-C3’s own pin names, the code, the common mistakes and the circuit running.
Arduino libraries that compile as they are
Paste a tutorial that includes one of these and it builds. For any other library, the build names the Mokxi header that does the same job.
And 16 more, 24 in all: DHT.h; OneWire.h and DallasTemperature.h; Adafruit_BME280.h, Adafruit_BMP280.h and SparkFunBME280.h; RTClib.h; Adafruit_SHT31.h; Adafruit_PCF8591.h; Adafruit_ADXL345_U.h; LedControl.h; Adafruit_LEDBackpack.h; Adafruit_TCS34725.h; Adafruit_SGP30.h; Adafruit_INA219.h; Adafruit_ADS1X15.h; Adafruit_MCP23X17.h; Bounce2.h; HX711.h.
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.
Does it simulate WiFi?
Yes, and it says plainly that it is simulated. 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 and no 802.11. Four made-up addresses under .mokxi answer inside this tab. Signed in, you can switch on Real internet in the Cloud panel, and HTTP and HTTPS requests to real hosts go out through Mokxi’s gateway.
Will my firmware run on a real board?
Firmware for the modeled peripherals targets the DevKitM-1 register offsets. Test the finished build on the physical board before relying on it.
Do I need an account?
Only to save projects to the cloud and share them by link.
The other boards
Every one of these runs today, and every one is free.
Looking for the shorter introduction? See the ESP32 simulator page.
The classic Arduino, with an ATmega328P running at 16 MHz.
The Uno’s chip on a small board that fits a breadboard.
The big Arduino, with 54 digital pins and four serial ports.
An Uno-shaped board whose chip does its own USB serial.
A second RISC-V board, with 31 pins and simulated WiFi.
The classic ESP32 at 240 MHz, with simulated WiFi.
The ESP32-S3 at 240 MHz, with USB serial and an RGB LED.
The NodeMCU’s ESP8266 at 80 MHz, with simulated WiFi.
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.