Microcontrollers & firmware
Five real chips, three ways to program them: bundled examples, your own compiled firmware, and live MicroPython.
The chips
- ATmega328P / Arduino Uno: 16 MHz AVR, 5 V logic. Runs bundled bare-metal examples or any Intel HEX you export from the Arduino IDE (Sketch → Export Compiled Binary), pasted or uploaded in the Inspector.
- Raspberry Pi Pico: RP2040, Cortex-M0+ at 125 MHz, 3.3 V logic with a real onboard regulator. Takes UF2 uploads (MicroPython included) and bundled examples.
- ESP32 (classic): dual-core Xtensa LX6 at 240 MHz. Boots unmodified ESP-IDF apps, MicroPython, and compiled Arduino-ESP32 sketches from
.binimages, through the genuine Espressif boot ROM. - ESP32-C3: RISC-V at 160 MHz. Same firmware formats as the classic ESP32, single RISC-V core.
- ESP32-S3: dual-core Xtensa LX7 at 240 MHz, validated instruction-by-instruction against Espressif's QEMU. Same firmware formats as the C3, with FreeRTOS scheduling across both cores.
- ESP32-C6: single RISC-V RV32IMAC core at 160 MHz with 512 KB SRAM. Same firmware formats as the C3; the radio is not modeled.
The serial monitor
The Serial panel opens itself the moment a board prints. Multi-board benches get a tab per board; the input row types to the active tab or to all boards (toggle next to it). This is a real UART (start bits, baud timing and all), so a MicroPython board gives you its actual REPL prompt to type at.
The Code tab: whole scripts
The Code tab runs complete MicroPython scripts on the board: write (or load an example's prefilled script), press Run on board, and the script is injected through the REPL. The run status tracks completion, and a traceback anywhere surfaces as an error banner with the offending line. Scripts re-run automatically on every boot: restart the sim and your program starts with it, exactly like flashed firmware.
from machine import Pin, I2C import time led = Pin(2, Pin.OUT) for n in range(10): led.value(n % 2) print('blink', n) time.sleep_ms(250)
Powering a board
Boards are electrical citizens: an ESP32 needs ~5 V on vin (its onboard LDO makes the 3.3 V rail, which can power your sensors), the Pico wants vsys, the Uno takes vin or 5v. Undervolt a board and it browns out; the en pin really resets the chip.