浏览器里仿真 Arduino 和 ESP32,有点东西

没板子 = 今天摸鱼?快递还在路上,代码已经亮灯。一块能开在浏览器标签页里的「云上开发板」—— Arduino · MicroPython · GPIO · I²C · OLED,背后是 Velxio · QEMU 仿真。

乐鑫刚放出 ESP32 模拟器,评论区都在喊「以后不用买板子了」。但浏览器里跑固件,早有人先做了。

它叫 Velxio,一块能开在标签页里的「云上 DevKit」。我拿它跑了点灯、DHT22、OLED、串口打印,结论先给:

教学、原型、面试 Demo、没板子救急,它比你想的好用;但别拿它代替射频和功耗测试。

01 · 不是「代码高亮」,是真在跑固件

CHIP · 跑的是什么

Velxio 背后是 QEMU + WASM 前端:ESP32 的 Xtensa 指令、FreeRTOS 任务、Arduino setup() / loop()、MicroPython REPL,都能在浏览器线程里真执行。

你看到的不是动画:

  1. pinMode(2, OUTPUT) → 虚拟 GPIO2 状态变高
  2. Wire.beginTransmission(0x3C) → I²C 总线里真有起始条件
  3. Serial.println("hello") → 右侧串口终端蹦出字符
  4. 延时、中断、定时器、看门狗 → 都按指令周期走

支持形态目前最实用的是三类:

  • Arduino-ESP32:拖 .ino 进去,点 Run
  • MicroPython:直接写 Python,串口变 REPL
  • ESP-IDF 轻量固件:高级玩家也能塞 ELF

以前是「没板子 = 今天摸鱼」,现在是「没板子 = 开个网页继续干」。

02 · 元件库才是杀招:拖个 OLED 就亮

PERIPHERALS · 虚拟硬件

这部分比纯 QEMU 爽太多。Velxio 前端像个 「Fritzing + 串口监视器 + 逻辑分析仪」 合体:

  • LED / 按键 / 电位器
  • DHT11 / DHT22
  • OLED 128×64(SSD1306)
  • I²C 传感器 / UART 桥 / 逻辑电平显示
  • 舵机 / 蜂鸣器 / WS2812(部分版本)

你接线不用杜邦线,鼠标拖一下就行。固件里写:

Adafruit_SSD1306 display(128, 64);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.print("Velxio OK");
display.display();

页面上 OLED 就亮了。

学生第一次见到「代码 → 总线 → 屏幕」,比老师讲三节课都管用。

03 · 接进工作流:教学 / 原型 / 远程面试

WORKFLOW · 怎么用

CASE 01 · 教学

老师发个链接:「今晚作业:让 OLED 显示温度,DHT22 随机跳 25°C 到 30°C。」学生不装 ESP-IDF、不买 DevKit、不被 CH340 驱动劝退。

CASE 02 · 需求评审前先演

产品说「做个配网按钮 + 状态灯」。你先在 Velxio 里把状态机跑出来:

IDLE → PRESS → CONNECTING → CONNECTED → ERROR

老板看懂了,真机才动手。

CASE 03 · 远程嵌入式面试

候选人共享标签页:「你用定时器让 LED 1Hz 闪,同时串口打 uptime。」比「口述 RTOS 抢占」诚实十倍。

CASE 04 · 没板子时救火

板子在产线、在客户那、在快递站。你本地改完 main.cpp,Velxio 里先确认:

  • 分区没崩
  • 任务没死锁
  • I²C 地址没写错
  • OLED 不黑屏

再烧真机。

04 · 两种上手方式:零安装 / 半专业

GET STARTED · 上手

STEP 01 · 网页版(零门槛)

打开 https://velxio.dev(或对应镜像),新建项目 → 选 ESP32 → 写 Arduino → Run。

固件在浏览器里跑,不上传服务器(具体看官网隐私说明)。适合:教学、Demo。

STEP 02 · 本地 QEMU 版(硬核)

idf.py build
qemu-system-xtensa -M esp32 -nographic

再用 GDB 调试:

xtensa-esp32-elf-gdb build/app.elf
(gdb) target remote:1234

适合:CI、GDB、FreeRTOS 调度分析、Perfetto 式追踪。

网页版管「看得懂」,本地 QEMU 管「查得深」。

05 · 用之前必须知道的 3 件事

CAVEATS · 别被爽到失智

  1. 没有真射频:Wi-Fi / BLE 是「模拟联网」,不是发 2.4GHz 包。配网 UI 能测,信道质量、丢包、同频干扰测不了。
  2. 外设是「模型」,不是「规格书」:OLED 亮了 ≠ 真 SSD1306 时序完全一致。ADC 读电压、SPI DMA、PSRAM 带宽,别信虚拟值。
  3. 固件能跑 ≠ 产品能出货:功耗、复位、ESD、Flash 寿命、看门狗喂狗慢 5ms 会不会炸 —— 这些只有真板子说话算数。

写在最后 · 适合用在哪里(结论)

SUMMARY · 谁该收藏

  • 嵌入式小白:先跑通「代码控制硬件」的直觉
  • 高校老师:实验课不用管 80 块板子丢了没
  • 创业者:需求没定之前,别先砸钱买 20 块 ESP32-S3
  • 老工程师:板子不在手边,逻辑先验完
  • 内容博主:录「ESP32 入门」再也不用举着杜邦线对焦

三个工具怎么选:

  • esp-emulator:乐鑫正宫 · Rust + WASM
  • Velxio:前端野路子 · 电路画布
  • QEMU:底层老黄牛 · GDB / CI

三层互补,不是三选一。三层加起来,嵌入式开发终于有点「软件工程样」了。

相关链接


本文首发于微信公众号「IoT前哨站」(作者:长空无名,2026 年 10 月 21 日)。

QEMU 4.0 发布 ARM和RISC-V支持加强

做 IoT 总得做一些设备测试,但身边又不是什么设备都有的。这时候通常需要模拟器或虚拟机来替代一下。

QEMU 是一个纯软件实现的通用模拟器和虚拟机,在业界非常流行。它有三种模式,几乎可以模拟任何硬件设备。

1、Full-system emulation:可在硬件架构上运行任意操作系统

2、User-mode emulation:运行另一个 Linux/BSD 程序

3、Virtualization:接近本机性能运行 KVM 和 Xen 虚拟机。

近日,他们发布了4.0.0版本。

这个版本包含了来自220个作者的3100多次代码提交。

下载地址:
https://www.qemu.org/download/#source

主要更新内容:

  • ARM:实现了一批 ARMv8.X 的扩展,包括 SB、PredInv、HPD、LOR、FHM、AA32HPD、PAuth、JSConv、CondM、FRINT 与 BTI
  • ARM:virt:支持 >255 GB 的 RAM 和 u-boot“noload”镜像类型
  • ARM:改进 ARM PMU 模拟
  • HPPA:支持 TLB 保护 ID 和 TLB 跟踪事件
  • MIPS:支持多线程 TCG 模拟
  • MIPS:对 I7200 I6500 CPU 的模拟支持,基于 QMP 的 CPU 类型查询以及对 SAARI 和 SAAR 配置寄存器的改进支持
  • PowerPC:pseries:模拟支持 XIVE 中断控制器
  • PowerPC:pseries:支持热插拔 PCI 主桥(PHB)
  • PowerPC:pseries:默认情况下启用 Spectre/Meltdown 缓解,同时支持 count-cache-flush 缓解
  • RISC-V:virt:支持 PCI 与 USB
  • RISC-V:  支持 mstatus 的 TSR、TW 和 TVM 字段,FS 字段现在支持三个统计数据(dirty、clean 和 off)
  • RISC-V:内置 gdbserver 通过 XML 文件支持寄存器列表
  • s390:支持 z14 GA 2 CPU 型号,默认情况下启用 Multiple-epoch 和 PTFF 功能
  • s390:vfio-ap:支持热插拔,不再禁止内存膨胀
  • x86:HAX 加速器现在支持除 Darwin 以外的 POSIX 主机,包括 Linux 和 NetBSD
  • x86:可以使用“-kernel”选项启动 Xen PVH 镜像
  • Xtensa:xtfpga:改进了对 Linux(中断分发器,IPI和运行系统)SMP 的支持,支持 SMP 的test_mmuhifi_c3 核心配置
  • Xtensa:支持灵活长度指令扩展(FLIX)
  • GUI:新的’-display spice-app’选项用于配置/启动具有与 QEMU GTK 类似 UI 的 Spice 客户端 GUI。VNC 服务器现在通过 tls-authz/sasl-authz 选项支持访问控制
  • Xen:新的’xen-disk’设备,可以创建 Xen PV 磁盘后端,并为 Xen PV 磁盘后端提供性能改进
  • Network Block Device:改进跟踪与错误诊断,qemu-nbd 新选项 –bitmap、–list 与 –tls-authz
  • virtio-blk 现在支持 DISCARD 和 WRITE_ZEROES

完整更新日志:

https://wiki.qemu.org/ChangeLog/4.0