SkillAgentSearch skills...

Velxio

Emulate Arduino, ESP32 & Raspberry Pi. in your browser. Write code, compile, and run on 19 real boards — Arduino Uno, ESP32, ESP32-C3, Raspberry Pi Pico, Raspberry Pi 3, and more. No hardware, no cloud, no limits.. Discord: https://discord.gg/3mARjJrh4E

Install / Use

/learn @davidmonterocrespo24/Velxio
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Velxio: Arduino & Embedded Board Emulator

Live at velxio.dev

A fully local, open-source multi-board emulator. Write Arduino C++ or Python, compile it, and simulate it with real CPU emulation and 48+ interactive electronic components — all running in your browser.

19 boards · 5 CPU architectures: AVR8 (ATmega / ATtiny), ARM Cortex-M0+ (RP2040), RISC-V RV32IMC/EC (ESP32-C3 / CH32V003), Xtensa LX6/LX7 (ESP32 / ESP32-S3 via QEMU), and ARM Cortex-A53 (Raspberry Pi 3 Linux via QEMU).

Visitors Live Demo Docker Image GitHub stars Discord License: AGPLv3 Commercial License


Product Hunt


Support the Project

Velxio is free and open-source. Building and maintaining a full multi-board emulator takes a lot of time — if it saves you time or you enjoy the project, sponsoring me directly helps keep development going.

| Platform | Link | | --- | --- | | GitHub Sponsors (preferred) | github.com/sponsors/davidmonterocrespo24 | | PayPal | paypal.me/odoonext |

Your support helps cover server costs, library maintenance, and frees up time to add new boards, components, and features. Thank you!


Try it now

https://velxio.dev — no installation needed. Open the editor, write your sketch, and simulate directly in the browser.

To self-host with Docker (single command):

docker run -d -p 3080:80 ghcr.io/davidmonterocrespo24/velxio:master

Then open http://localhost:3080.


Screenshots

Raspberry Pi Pico ADC simulation with Serial Monitor

Raspberry Pi Pico simulation — ADC read test with two potentiometers, Serial Monitor showing live output, and compilation console at the bottom.

ILI9341 TFT display simulation on Arduino Uno

Arduino Uno driving an ILI9341 240×320 TFT display via SPI — rendering a real-time graphics demo using Adafruit_GFX + Adafruit_ILI9341.

Library Manager with full library list

Library Manager loads the full Arduino library index on open — browse and install libraries without typing first.

Component Picker with 48 components

Component Picker showing 48 available components with visual previews, search, and category filters.

Raspberry Pi 3 connected to Arduino on the same canvas

Multi-board simulation — Raspberry Pi 3 and Arduino running simultaneously on the same canvas, connected via serial. Mix different architectures in a single circuit.

ESP32 with HC-SR04 ultrasonic sensor

ESP32 simulation with an HC-SR04 ultrasonic distance sensor — real Xtensa emulation via QEMU with trigger/echo GPIO timing.


Supported Boards

<table> <tr> <td align="center"><img src="docs/img/boards/pi-pico.png" width="140" alt="Raspberry Pi Pico"/><br/><b>Raspberry Pi Pico</b></td> <td align="center"><img src="docs/img/boards/pi-pico-w.png" width="140" alt="Raspberry Pi Pico W"/><br/><b>Raspberry Pi Pico W</b></td> <td align="center"><img src="docs/img/boards/esp32-devkit-c-v4.png" width="140" alt="ESP32 DevKit C"/><br/><b>ESP32 DevKit C</b></td> <td align="center"><img src="docs/img/boards/esp32-s3.png" width="140" alt="ESP32-S3"/><br/><b>ESP32-S3</b></td> </tr> <tr> <td align="center"><img src="docs/img/boards/esp32-c3.png" width="140" alt="ESP32-C3"/><br/><b>ESP32-C3</b></td> <td align="center"><img src="docs/img/boards/xiao-esp32-c3.png" width="140" alt="Seeed XIAO ESP32-C3"/><br/><b>Seeed XIAO ESP32-C3</b></td> <td align="center"><img src="docs/img/boards/esp32c3-supermini.png" width="140" alt="ESP32-C3 SuperMini"/><br/><b>ESP32-C3 SuperMini</b></td> <td align="center"><img src="docs/img/boards/esp32-cam.png" width="140" alt="ESP32-CAM"/><br/><b>ESP32-CAM</b></td> </tr> <tr> <td align="center"><img src="docs/img/boards/xiao-esp32-s3.png" width="140" alt="Seeed XIAO ESP32-S3"/><br/><b>Seeed XIAO ESP32-S3</b></td> <td align="center"><img src="docs/img/boards/arduino-nano-esp32.png" width="140" alt="Arduino Nano ESP32"/><br/><b>Arduino Nano ESP32</b></td> <td align="center"><img src="docs/img/boards/Raspberry_Pi_3.png" width="140" alt="Raspberry Pi 3B"/><br/><b>Raspberry Pi 3B</b></td> <td align="center">Arduino Uno &middot; Nano &middot; Mega 2560<br/>ATtiny85 &middot; Leonardo &middot; Pro Mini<br/>(AVR8 / ATmega)</td> </tr> </table>

| Board | CPU | Engine | Language | | ----- | --- | ------ | -------- | | Arduino Uno | ATmega328p @ 16 MHz | avr8js (browser) | C++ (Arduino) | | Arduino Nano | ATmega328p @ 16 MHz | avr8js (browser) | C++ (Arduino) | | Arduino Mega 2560 | ATmega2560 @ 16 MHz | avr8js (browser) | C++ (Arduino) | | ATtiny85 | ATtiny85 @ 8 MHz (int) / 16 MHz (ext) | avr8js (browser) | C++ (Arduino) | | Arduino Leonardo | ATmega32u4 @ 16 MHz | avr8js (browser) | C++ (Arduino) | | Arduino Pro Mini | ATmega328p @ 8/16 MHz | avr8js (browser) | C++ (Arduino) | | Raspberry Pi Pico | RP2040 @ 133 MHz | rp2040js (browser) | C++ (Arduino) | | Raspberry Pi Pico W | RP2040 @ 133 MHz | rp2040js (browser) | C++ (Arduino) | | ESP32 DevKit V1 | Xtensa LX6 @ 240 MHz | QEMU lcgamboa (backend) | C++ (Arduino) | | ESP32 DevKit C V4 | Xtensa LX6 @ 240 MHz | QEMU lcgamboa (backend) | C++ (Arduino) | | ESP32-S3 | Xtensa LX7 @ 240 MHz | QEMU lcgamboa (backend) | C++ (Arduino) | | ESP32-CAM | Xtensa LX6 @ 240 MHz | QEMU lcgamboa (backend) | C++ (Arduino) | | Seeed XIAO ESP32-S3 | Xtensa LX7 @ 240 MHz | QEMU lcgamboa (backend) | C++ (Arduino) | | Arduino Nano ESP32 | Xtensa LX6 @ 240 MHz | QEMU lcgamboa (backend) | C++ (Arduino) | | ESP32-C3 DevKit | RISC-V RV32IMC @ 160 MHz | RiscVCore.ts (browser) | C++ (Arduino) | | Seeed XIAO ESP32-C3 | RISC-V RV32IMC @ 160 MHz | RiscVCore.ts (browser) | C++ (Arduino) | | ESP32-C3 SuperMini | RISC-V RV32IMC @ 160 MHz | RiscVCore.ts (browser) | C++ (Arduino) | | CH32V003 | RISC-V RV32EC @ 48 MHz | RiscVCore.ts (browser) | C++ (Arduino) | | Raspberry Pi 3B | ARM Cortex-A53 @ 1.2 GHz | QEMU raspi3b (backend) | Python |


Features

Code Editing

  • Monaco Editor — Full C++ / Python editor with syntax highlighting, autocomplete, minimap, and dark theme
  • Multi-file workspace — create, rename, delete, and switch between multiple .ino / .h / .cpp / .py files
  • Arduino compilation via arduino-cli backend — compile sketches to .hex / .bin files
  • Compile / Run / Stop / Reset toolbar buttons with status messages
  • Compilation console — resizable output panel showing full compiler output, warnings, and errors

Multi-Board Simulation

AVR8 (Arduino Uno / Nano / Mega / ATtiny85 / Leonardo / Pro Mini)

  • Real ATmega328p / ATmega2560 / ATmega32u4 / ATtiny85 emulation at native clock speed via avr8js
  • Full GPIO — PORTB, PORTC, PORTD (Uno/Nano/Mega); all ATtiny85 ports (PB0–PB5)
  • Timer0/Timer1/Timer2millis(), delay(), PWM via analogWrite()
  • USART — full transmit and receive, auto baud-rate detection
  • ADCanalogRead(), voltage injection from potentiometers on canvas
  • SPI — hardware SPI peripheral (ILI9341, SD card, etc.)
  • I2C (TWI) — hardware I2C with virtual device bus
  • ATtiny85 — all 6 I/O pins, USI (Wire), Timer0/Timer1, 10-bit ADC; uses AttinyCore
  • ~60 FPS simulation loop via requestAnimationFrame

RP2040 (Raspberry Pi Pico / Pico W)

  • Real RP2040 emulation at 133 MHz via rp2040js — ARM Cortex-M0+
  • All 30 GPIO pins — input/output, event listeners, pin state injection
  • UART0 + UART1 — serial output in Serial Monitor; Serial input from UI
  • ADC — 12-bit on GPIO 26–29 (A0–A3) + internal temperature sensor (ch4)
  • I2C0 + I2C1 — master mode with virtual device bus (DS1307, TMP102, EEPROM)
  • SPI0 + SPI1 — loopback default; custom handler supported
  • PWM — available on any GPIO pin
  • WFI optimizationdelay() skips ahead in simulation time instead of busy-waiting
  • Oscilloscope — GPIO transition timestamps at ~8 ns resolution
  • Compiled with the earlephilhower arduino-pico core

See docs/RP2040_EMULATION.md for full technical details.

ESP32 / ESP32-S3 (Xtensa QEMU)

  • Real Xtensa LX6/LX7 dual-core emulation via lcgamboa/qemu
  • Full GPIO — all 40 GPIO pins, direction tracking, state callbacks, GPIO32–39 fix
  • UART0/1/2 — multi-UART serial, baud-rate detection
  • ADC — 12-bit on all ADC-capable pins (0–3300 mV injection from potentiometers)
  • I2C — synchronous bus with virtual device response
  • SPI — full-duplex with configurable MISO byte injection
  • RMT / NeoPixel — hardware RMT decoder, WS2812 24-bit GRB frame decoding
  • LEDC/PWM — 16-channel duty cycle readout, LEDC→GPIO mapping,

Related Skills

View on GitHub
GitHub Stars1.2k
CategoryDevelopment
Updated4m ago
Forks90

Languages

TypeScript

Security Score

85/100

Audited on Apr 5, 2026

No findings