Skip to content
wquguruPublic

About

๐Ÿค– Run your real ESP32 firmware in the browser before you buy the board โ€” instruction-level ESP32-C3/S3 simulator with a 3D workbench

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Latest commit

ย 

History

803 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
TryBoard

TryBoard

Run your real ESP32 firmware in the browser before you buy the board.

English ยท ็ฎ€ไฝ“ไธญๆ–‡ ยท ๆ—ฅๆœฌ่ชž ยท ํ•œ๊ตญ์–ด

Rust Chips ESP-IDF three.js Languages License


TryBoard lab: an ESP32 board, breadboard and parts on the 3D workbench

TryBoard is an instruction-level ESP32 simulator with a 3D workbench. Drop in the flash.bin that ESP-IDF or Arduino produced, wire parts on a breadboard, and watch the same binary blink LEDs, drive servos, draw on displays and talk Wi-Fi or BLE โ€” deterministically, so every run of the same firmware gives the same result and can be checked like a test.

It is built for people who write firmware with AI: the site gives you a task brief and pass criteria, your AI writes the code, and TryBoard tells you whether it works, which chip and parts to buy, and which risks only real hardware can rule out.

Three layers

Core โ€” runs the real binary. A from-scratch RV32IMC and Xtensa LX6/LX7 emulator in Rust, compiled to wasm. It boots unmodified ESP-IDF images against the original mask ROM, with FreeRTOS scheduling, dual-core S3, PSRAM, and peripheral models checked against QEMU and ESP-IDF test output.

World โ€” sensors read the scene. A three.js workbench (WebGPU first, WebGL2 fallback) with boards, breadboard, parts and a room. Ultrasonic sensors cast rays, IMUs read physics, displays render the framebuffer, buzzers play through Web Audio, and a virtual phone scans, connects to and subscribes to your BLE peripheral.

Decision โ€” what to buy. A selection advisor turns a project into chip, board, BOM, pin map and power estimate. Every conclusion carries a trust label:

Label Meaning
Simulated Real firmware runs on the instruction-level core; the peripheral model has acceptance tests
Behavioural The outside world is modelled at behaviour level (virtual phone, virtual Wi-Fi network)
Estimated Power, timing margins, wiring loss from datasheets and calibrated models
Needs hardware RF range, antennas, analog noise, strict timing โ€” verify on a real board

What runs today

Area ESP32-C3 ESP32-S3 ESP32
CPU, interrupts, timers, FreeRTOS โœ… RV32IMC โœ… LX7, dual core, PSRAM โœ… LX6, dual core
GPIO, UART, LEDC (PWM) โœ… โœ… โœ…
I2C with virtual SSD1306 / BME280 โœ… โœ… (+ MPU6050, QMI8658, touch panels) โœ…
ADC, RMT (WS2812, ultrasonic), SPI LCD, I2S โœ… โœ… (+ PCNT encoder) โ€”
USB HID keyboard / CDC โ€” โœ… โ€”
Wi-Fi (open, WPA2-PSK, HTTP) โœ… โœ… init only
BLE peripheral (NimBLE) + virtual phone โ— behavioural โ€” โ€”

Full matrix with acceptance evidence: docs/STATUS.md. 244 acceptance cases, 72 examples and a 7-level learning path run on every batch (tools/accept.sh).

Quick start

tools/fetch_third_party.sh          # ROM ELFs (Apache-2.0) and riscv-tests, into third_party/
tools/build_web.sh                  # wasm core + web assets
cd web && npm install && npm run dev   # http://localhost:5180

Run firmware from the command line, with parts attached:

cd core
cargo run -p tryboard-cli --release -- run ../firmware/build/blink/flash.bin
cargo run -p tryboard-cli --release -- run ../firmware/build/weather/flash.bin \
  --i2c ssd1306@0x3c,bme280@0x76 --env 23.5,45,101325 --oled
tools/check.py ../firmware/build/blink/flash.bin --level 01   # pass/fail against a level

Building the acceptance firmware needs ESP-IDF v5.5 (tools/build_fw.sh). Requirements: Rust with wasm32-unknown-unknown, Node 22.18+, Python 3.11+.

Layout

core/       Rust workspace: rv32, xtensa, soc, esp32c3, esp32s3, esp32, elec, cli, wasm
web/        Vite + TypeScript + React + three.js front end; i18n in web/src/i18n
firmware/   ESP-IDF acceptance firmware, examples.json, levels.json
tools/      build, acceptance, QEMU oracle, web regression tests
docs/       architecture, plan, design, licensing decisions

Contributions are welcome: read CONTRIBUTING.md first (coding agents also follow AGENTS.md). Please report security issues privately as described in SECURITY.md.

Status and roadmap

TryBoard is alpha (v0.1.0): the core runs real firmware and the acceptance suite is green, but APIs, file formats and the web UI still change between releases. Release notes are in CHANGELOG.md.

Milestone State
ESP32-C3 core, GPIO, web workbench โœ… done
Common peripherals (LEDC, RMT, I2C, SPI, ADC, timers) โ— most models done
ESP32-S3 (LX7) and classic ESP32 (LX6) โ— boots IDF, most peripherals
USB OTG (HID / CDC done, network adapter next) โ—
Wi-Fi and BLE against virtual networks / phones โ—
Audio and camera (I2S, Web Audio, camera reads the 3D scene) โ˜ planned
Selection advisor, learning path, launch โ—

Item-level plan with acceptance criteria: docs/PLAN.md.

Acknowledgements

TryBoard stands on the work of many open projects:

Per-file sources, copyright lines and licence texts are generated into THIRD_PARTY_NOTICES.txt and the /licenses page; the rules behind them are in docs/LICENSING.md.

Notes

TryBoard is an independent project and is not affiliated with or endorsed by Espressif Systems. "ESP32" names the chip family it simulates; 3D boards are illustrations, not official Espressif models. Compatible with Arduino-built firmware. Simulation results are not calibrated against real silicon unless stated.

License

TryBoard is licensed under the Apache License 2.0; see also NOTICE. Third-party 3D models (CC BY-SA 4.0 / MIT), fonts (SIL OFL 1.1) and the inputs fetched into third_party/ keep their own licences, listed in assets/models/*/SOURCES.md and THIRD_PARTY_NOTICES.txt.

About

๐Ÿค– Run your real ESP32 firmware in the browser before you buy the board โ€” instruction-level ESP32-C3/S3 simulator with a 3D workbench

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages