/**
* /arduino-emulator — SEO landing page
* Target keywords: "arduino emulator"
*/
import React from 'react';
import { Link } from 'react-router-dom';
import { AppHeader } from '../components/layout/AppHeader';
import { useSEO } from '../utils/useSEO';
import './SEOPage.css';
const FAQ_ITEMS = [
{
q: 'What is an Arduino emulator?',
a: 'An Arduino emulator reproduces the behavior of a physical Arduino microcontroller in software — CPU instruction execution, peripheral registers (GPIO, USART, ADC, timers, PWM), and interrupts — with no hardware required.',
},
{
q: 'How accurate is Velxio\'s Arduino emulation?',
a: 'Velxio uses avr8js, which provides cycle-accurate AVR8 instruction emulation. Every AVR opcode is faithfully emulated at 16 MHz, making it reliable for developing and debugging real firmware before flashing to hardware.',
},
{
q: 'Which Arduino boards can Velxio emulate?',
a: 'Arduino Uno (ATmega328P), Arduino Nano, Arduino Mega 2560 (ATmega2560), ATtiny85 (AVR8), Arduino Leonardo (ATmega32u4), Arduino Pro Mini, Raspberry Pi Pico and Pico W (RP2040), and multiple ESP32/RISC-V boards. 19 boards across 5 CPU architectures.',
},
{
q: 'What peripherals are emulated?',
a: 'GPIO ports (PORTB, PORTC, PORTD), hardware timers (Timer0, Timer1, Timer2), 8/16-bit PWM, USART serial, 10-bit ADC (analog inputs), SPI, and I2C. All standard Arduino library functions work correctly.',
},
{
q: 'How is Velxio different from Wokwi?',
a: 'Velxio is fully self-hosted and open-source under GNU AGPLv3. It uses the same avr8js emulation library as Wokwi but runs entirely on your own machine — no cloud dependency, no registration, no subscription.',
},
];
const JSON_LD: object[] = [
{
'@context': 'https://schema.org',
'@type': 'SoftwareApplication',
name: 'Velxio Arduino Emulator',
applicationCategory: 'DeveloperApplication',
operatingSystem: 'Any (browser-based)',
description:
'Free, open-source Arduino emulator with cycle-accurate AVR8 emulation at 16 MHz. Emulate Arduino Uno, Nano, Mega and Raspberry Pi Pico in your browser — no cloud, no install.',
url: 'https://velxio.dev/arduino-emulator',
offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' },
author: { '@type': 'Person', name: 'David Montero Crespo' },
license: 'https://www.gnu.org/licenses/agpl-3.0.html',
},
{
'@context': 'https://schema.org',
'@type': 'FAQPage',
mainEntity: FAQ_ITEMS.map(({ q, a }) => ({
'@type': 'Question',
name: q,
acceptedAnswer: { '@type': 'Answer', text: a },
})),
},
{
'@context': 'https://schema.org',
'@type': 'BreadcrumbList',
itemListElement: [
{ '@type': 'ListItem', position: 1, name: 'Velxio', item: 'https://velxio.dev/' },
{ '@type': 'ListItem', position: 2, name: 'Arduino Emulator', item: 'https://velxio.dev/arduino-emulator' },
],
},
];
export const ArduinoEmulatorPage: React.FC = () => {
useSEO({
title: 'Arduino Emulator — Real AVR8 & RP2040 Emulation, Free | Velxio',
description:
'Free, open-source Arduino emulator with cycle-accurate AVR8 emulation at 16 MHz. Emulate Arduino Uno, Nano, Mega and Raspberry Pi Pico in your browser — no cloud, no install.',
url: 'https://velxio.dev/arduino-emulator',
jsonLd: JSON_LD,
});
return (
{/* Hero */}
Arduino Emulator Real AVR8 & RP2040 Emulation, Free
Velxio is a cycle-accurate Arduino emulator running entirely in your browser. Every AVR opcode is faithfully
executed at 16 MHz — the same silicon behavior as real hardware, without buying hardware.
Open Emulator →
Emulation Details
Free & open-source · Built on avr8js & rp2040js · No signup required
{/* Emulation accuracy */}
Emulation accuracy
Velxio uses avr8js for AVR8 and rp2040js for RP2040 — open-source libraries developed by the Wokwi team that provide genuine hardware fidelity.
AVR8 Instruction Set
All 135 AVR instructions emulated including MUL, MULSU, FMUL, LPM, SPM, and all branch/skip instructions. 16 MHz clock.
Hardware Timers
Timer0, Timer1, Timer2 with prescaler support, overflow interrupts, and Output Compare — enabling delay(), millis(), and PWM.
USART Serial
Full USART emulation with configurable baud rate and TX/RX interrupts. Serial.print() works exactly as on real Arduino hardware.
10-bit ADC
Analog-to-digital converter emulation with analog reference support. analogRead() returns accurate values from simulated sensors.
RP2040 Dual-Core ARM
Cortex-M0+ emulation via rp2040js. Runs Arduino-pico and PlatformIO sketches for Raspberry Pi Pico and Pico W.
RISC-V (ESP32-C3)
Browser-native RV32IMC emulation for ESP32-C3 — no backend server required, compiled to WebAssembly, runs at 160 MHz.
{/* Supported boards */}
Supported boards
19 boards across 5 CPU architectures — AVR8, ARM Cortex-M0+, RISC-V, Xtensa LX6/LX7, and ARM Cortex-A53.
AVR8 — avr8js
Arduino Uno (ATmega328P), Arduino Nano, Arduino Mega 2560 (ATmega2560), ATtiny85, Arduino Leonardo (ATmega32u4), Arduino Pro Mini.
RP2040 — rp2040js
Raspberry Pi Pico, Raspberry Pi Pico W — dual ARM Cortex-M0+ at 133 MHz.