ESP32-C6 simulator, and a straight account of it
Mokxi models the ESP32-C6-DevKitC-1: the same RISC-V core as the C3 at 160 MHz, thirty-one GPIOs, 512 KB of SRAM in one window rather than two, UART0, the SYSTIMER, ADC1 and LEDC. It is a smaller model than the C3’s, and the contract says exactly where the edges are.
- 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 beside it.
Modeled
- Core
- RV32IMC with Zicsr, machine mode, one instruction per cycle at 160 MHz
- Memory
- 512 KB of HP SRAM at 0x4080_0000, reached at one address by both buses
- GPIO and IO_MUX
- Thirty-one pins, real register offsets, pulls and input enable per pad
- 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
- The RGB LED
- GPIO 8 is a pin like any other here: wire a WS2812 to it and the colors are real
- ADC1
- Twelve bits on GPIO 0 to GPIO 6, one shot at a time, of the real voltage on the pin
- LEDC
- Four timers and six PWM channels, on any GPIO, behind analogWrite and ledcAttach
- 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
- The timer groups, RMT, the LP core and its peripherals, and the interrupt matrix.
- ADC2 and the SAR ADC’s DMA, filters and calibration; LEDC’s duty-fade hardware.
- A radio of any kind. There is no 802.11, no Bluetooth LE radio and no 802.15.4 in the model. WiFi and Bluetooth LE 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.
- Five base addresses (GPIO, IO_MUX, SYSTIMER, LEDC and the SAR ADC) are this model’s best account rather than something it can stand behind, and so are the matrix signal numbers LEDC uses. Section 7 of the contract names them.
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-C6
Each has its own page with the circuit running, the code and a parts list.
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.
Questions
Is it free?
Yes. Every board and every part is on the free plan, with no account needed.
Does it simulate WiFi 6 or Thread?
Not Thread, and not WiFi 6, but the board does WiFi, simulated, and it says plainly that it is. Your sketch uses the real Arduino calls (WiFi.begin, WiFi.status, HTTPClient, WebServer), and 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.
Can I use analogRead?
Yes, on GPIO 0 to GPIO 6, which are ADC1 channels 0 to 6. Twelve bits of the real net voltage, 0 to 4095 across the 3.3 V rail at the default attenuation. analogWrite works too, on any pin, out of the LEDC peripheral.
Will my firmware run on a real DevKitC-1?
The core and the UART will. Five base addresses in the model are believed rather than verified, and they are named in one header so you have a short list of #defines to check. Section 7 of the contract is the list.
The other boards
Every one of these runs today, and every one is free.
Looking for the shorter introduction? See the ESP32-C6 simulator page.
A RISC-V chip at 160 MHz, on the real memory map.
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.
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.