ESP32 simulator is open-source software, which simulates many of the features of the ESP32 microcontroller. It is a great tool for testing your code before getting started with the hardware aspects. The software also provides various templates, with provision for customization. It also has all the benefits of open-source software. Don’t find something, create a pull request. What’s more, you can also vote for whichever features you would like to prioritize development.
The features of the ESP32 microcontroller are quite significant before focusing on the ESP32 simulation. So, below is a consolidated glimpse of ESP32 and its features.
Features of ESP32
ESP32 is a series of low-cost, low-power system-on-chip microcontrollers with integrated Wi-Fi and dual-mode Bluetooth. It shares many functionalities with the Arduino and can be programmed with the Arduino IDE. ESP32 is basically an easy upgrade path to wireless communications for seasoned Arduino users.
The ESP32 supports many peripherals such as capacitive touch, ADC, DAC, I2C, SPI, UART, I2S, PWM. It is appropriate for IoT Projects and enables Bluetooth communications for Smartphone applications.
The ESP32 peripherals include 10 Capacitive sensing GPIOs. They can detect variations in any medium carrying an electric charge. Hence, these capture the variation induced when touching the GPIOs with a finger. You can remove the need for mechanical buttons by integrating these pins into capacitive pads to provide touchscreen functionality.
You can generate variable PWM signals by configuring the 16 channels provided by the ESP32 LED PWM controller. To set a PWM signal, signal frequency, duty cycle, PWM channel, and PWM output GPIOs must be configured in the code. Also, ESP32 has 18 Analog-to-Digital Converter (ADC) channels, 3 SPI interfaces, 3 UART interfaces, 2 I2C interfaces, 2 Digital-to-Analog Converters (DAC), and 2 I2S interfaces.
The ESP32 also features a built-in hall effect sensor that detects changes in the magnetic field in its surroundings.
ESP32 Simulator
ESP32 is open-source software that can simulate the behavior of an ESP32 microcontroller. You can test your code in this software to avoid any unexpected behavior during real-time execution on the actual ESP32 chip.
The ESP32 Simulator software is currently in beta. There are two ESP32 boards as of now:
- ESP32 DevKit v1
- TinyPico
You can use the ESP32 simulator in 3 ways: Build projects using the ESP32 Arduino Core, Run MicroPython projects, or Simulate bin application files you built on your machine (e.g. using ESP-IDF). Some of the features of ESP32 implemented in the ESP32 simulator software are Processor Core – both cores are simulated, GPIO with interrupts supported, PSRAM – 4MB external SRAM, UART, I2C, WiFi, ADC, Random Number Generator, and AES/SHA/RSA accelerator.
- Features like IOMUX, RMT, Timers, and RTC are partially implemented.
- Features like I2S, SPI, PWM, DMA, Bluetooth, Watchdog and Hall-Effect Sensor have not been simulated yet.
Since the software is open-source, you can also contribute to any feature you might by creating a pull request.
Also for many of the above non-simulated features, there is provision to vote. Based on the results of the vote, the existing community would prioritize the development of the simulation of the most voted-for features.
Getting Started
You can use the ESP32 simulator to run different kinds of applications:
- ESP32 Arduino Core projects (including ESP-IDF projects)
- MicroPython and CircuitPython projects (examples at https://wokwi.com/micropython)
- Rust projects (see https://wokwi.com/rust)
- Custom application firmware files (e.g. applications built using the ESP-IDF)
- Start from the Arduino-ESP32 Project Template, or from the ESP32 Blink Example.
For more details, please visit ESP32 Simulation | Wokwi Docs
a link to the simular would be helpfuk
We added the getting started details above.
This sounds great, is it possible to develop ESP32 code in VS Code / platform IO, “upload” and run that code on the simulator?
Is “Jtag style” debugging with breakpoints possible?
edit – think i just answered my own question by reading the great documentation! https://docs.wokwi.com/guides/esp32
Thanks!