浏览器里仿真 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 日)。

用树莓派Pico W创建自己的Slack机器人

原作:Sandeep Mistry 

编译:IoT前哨站

Slack是一款在线协作软件,可以让你与团队成员进行聊天、文件传送、语音/视频通话等功能。Slack还可以整合多种工具和服务,如电子邮件、Google Drives、Twitter、Trello等,以提高工作效率和自动化任务。Slack是世界各地公司和个人的首选平台,拥有超过20万付费客户和77个财富100强企业的使用者。它有App方便大家在手机或平板电脑上使用。

这次要实现的树莓派Pico W远程控制机器人,简单来说,就是我们在手机上用Slack发消息,指挥Pico W帮我们干活。

Slack 的 chat.postMessage API 可将消息从开发板发送到 Slack 频道。Slack 为应用和机器人提供了一个事件 API,用于响应 Slack 上的活动。由于开发板不能从公共互联网直接访问,因此无法使用公共 HTTP webhook。我们必须使用Slack 的Socket Mode。Socket Mode使应用和机器人能够使用动态的WebSocket 接收事件。动态套接字连接的URL可以通过Slack的apps.connections.open API获取。

Pico W与Slack API 接收事件和发送消息的通信机制:

要完成上述操作,你必须先有Slack令牌。

配置 Slack

在 Web 浏览器中,访问 https://api.slack.com/apps 并使用您的 Slack 凭据登录。单击“创建新应用”按钮。

单击“从头开始”选项。

输入应用程序的名称(例如“Pico W”),为应用程序选择一个工作区,然后单击“创建应用程序”按钮。

单击左侧的“Socket Mode”部分,然后单击切换到“启用Socket Mode”。


输入应用级令牌的“Token Name”,例如“Pico W app”,然后单击“生成”按钮。

生成并显示应用级令牌,复制该值并保存以备将来使用,然后单击“完成”按钮。

单击左侧的“OAuth 和权限”部分,向下滚动到“Scopes”部分,然后单击“添加 OAuth 范围”按钮。

添加“app mention:read”权限。

添加“chat:write”权限。

单击左侧的“事件订阅”部分,然后单击“启用事件”开关。

展开“订阅bot事件”部分并单击“添加bot用户事件”按钮。

选择“app_mention”。

点击右下角的“保存更改”按钮。

点击左侧的“基本信息”部分,然后点击“请求安装”按钮。

填写“简短描述”,选择“背景颜色”,点击“保存更改”按钮

工作区管理员可以批准申请。然后转到“基本信息”部分,单击“安装到工作区”按钮。

安装完成后,单击左侧的“OAuth & Permissions”部分,滚动到“工作区的OAuth Token”部分,然后复制“Bot User OAuth Token”值并保存以供将来参考。

现在你有了一个应用程序级别的令牌值和一个Slack应用程序的Bot用户OAuth令牌值,可以在Raspberry Pi Pico W板上使用。

基于 MicroPython 的 Slack 机器人

MicroPython 为许多基于 Arm Cortex-M 的微控制器提供 Python 3 实现,包括 Raspberry Pi Pico W 板上的 Raspberry Pi RP2040。

Thonny IDE 将用于安装 MicroPython 并将代码上传到 Raspberry Pico W 板。从 Thonny 主页下载适用于您的计算机的操作系统 (OS) 专用版本的 Thonny。在撰写本指南时,Thonny 4.1.2 是最新版本。

用Thonny刷好MicroPython以后,将 GitHub 中的代码下载到计算机上的文件夹。

相关代码:

https://github.com/IoToutpost/example-of-a-slackbot-for-pico-w

打开 Raspberry Pi Pico W 板上的 config.py 文件,填写 Wi-Fi 网络的 SSID 和密码,以及之前配置的 Slack 应用和机器人令牌。

打开树莓派Pi Pico W板上的 main.py 文件,然后按绿色的播放按钮运行应用程序。如果一切配置正确,开发板现在将连接到您的 Wi-Fi 网络,然后连接到 Slack。

基于 C 语言的 Slack 机器人

对于 C 版本,以下库将与 pico-sdk 一起使用:

  • FreeRTOS 内核 – 为网络堆栈提供实时操作系统 (RTOS)
  • lwIP – 用于 TCP/IP 通信
  • Mbed TLS – 用于 TLS 通信
  • coreHTTP – 用于 HTTP 客户端
  • cJSON – 用于解析和序列化 JSON 数据

使用 Raspberry Pi 的 Pico SDK 和所需的工具链设置您的计算机。有关更多信息,请参阅 Raspberry Pi Pico 入门指南。

在终端窗口中,设置 PICO_SDK 环境变量:

export PICO_SDK_PATH=/path/to/pico-sdk

将目录更改为下载示例代码的位置,然后将目录更改为文件夹:pico-sdk

cd path/to/example-of-a-slackbot-for-pico-w

cd pico-sdk

创建一个构建目录,并将目录更改为该目录:

mkdir build

cd build

使用你的 Wi-Fi SSID 和密码以及 Slack 应用和机器人令牌运行,然后运行以编译应用程序:cmakemake

cmake .. -DPICO_BOARD=pico_w -DWIFI_SSID="<WIFI SSID>" -DWIFI_PASSWORD="<Wi-Fi Password" -DSLACK_APP_TOKEN="<Slack App Token>" -DSLACK_BOT_TOKEN="<Slack Bot Token>"

make

按住 Pico 板上的 BOOTSEL 按钮,同时使用 USB 电缆将板插入计算机。

将文件复制到挂载的Raspberry Pi Pico启动ROM磁盘:picow_slack_bot.uf2

按住 Pico 板上的 BOOTSEL 按钮,同时使用 USB 电缆将板插入计算机。

将文件复制到挂载的Raspberry Pi Pico启动ROM磁盘:picow_slack_bot.uf2

cp -a picow_slack_bot.uf2 /Volumes/RPI-RP2/.

使用串行监视器应用程序(如屏幕)查看主板的 USB 串行输出,将 /dev/cu.usbmodem00000000000001 替换为主板的路径:

screen /dev/cu.usbmodem0000000000001

如果一切配置正确,开发板现在将连接到您的 Wi-Fi 网络,然后连接到 Slack。

测试应用程序

在计算机上打开 Slack,并创建一个新的测试频道。在信息输入窗口中输入,然后点按绿色按钮或按回车键发送。@<name of Slack app> LED on

在 Slack 中向 Pico W 发送第一条消息

由于 Pico W 不在频道中,系统将提示您添加它们。点击“邀请他们”按钮。

邀请Raspberry Pi Pico W加入频道

被邀请后,开发板将点亮 LED, 然后回复消息告知状态。您也可以尝试发送消息以关闭 LED。@<name of Slack app> LED off

Raspberry Pi Pico W 在 Slack 中收到指令并回复

结论

本指南介绍了通过Raspberry Pi Pico W上运行MicroPython和C应用程序,来与Slack API发送和接收消息。

示例应用程序代码可以接收并处理消息文本,以控制板载 LED,然后将 LED 的当前状态告知用户。

你可以在自己的Raspberry Pi Pico W上尝试一下,然后在示例代码的基础上构建更多功能,从而将 Slack 扩展到物理世界。

带Wi-Fi的树莓派Pico W上市了

Raspberry Pi Pico 是一款低成本,高性能的嵌入式开发板,也是树莓派基金会发布的第一款MCU。

它集成了 Raspberry Pi 自己的 RP2040 微控制器芯片,运行速度高达133 MHz的双核 Arm Cortex M0 + 处理器,264KB SRAM和2MB板载闪存,以及26个多功能GPIO引脚。

说的再好……Pico没有无线联网功能。

终于!赶在2022年上半年最后一天,Raspberry Pi发布了 Pico W。

带Wi-Fi功能的树莓派MCU,上市了。

关于无线芯片:

树莓派基金会此次采用的无线芯片是英飞凌的CYW43439,该芯片同时支持Wi-Fi和低功耗蓝牙,不过目前只能在Pico W上启用Wi-Fi,蓝牙要再等等。

相关电路封装在一个金属屏蔽壳中,为相关集成商降低了合规成本。  

有了2.4GHz 802.11n无线功能之后,Pico W可以成为常见loT解决方案的重要一环。

关于引脚:

引脚和老款Pico保持一致

关于固件:

https://datasheets.raspberrypi.com/soft/micropython-firmware-pico-w-290622.uf2

开发文档:

https://datasheets.raspberrypi.com/picow/connecting-to-the-internet-with-pico-w.pdf

关于售价:

Pico W现在官方售价6美元一块,只是现在是全球缺货状态。粉丝们估计要再等一等了。