标签存档: ESP32

成了,ESP32 卫星不完全复刻指南

前段时间分享了一个国外 Maker 制造的 ESP32 卫星(见 https://mp.weixin.qq.com/s/IYBiLbzDh12QjvQngUoUtA),我也花了点时间完成了复刻,为了制作方便,也做了一些小修改,这里整理了一下需要注意的地方以及一些小技巧

铜丝有紫铜和黄铜

一开始没注意,搜索了一下直接买了个紫铜丝,做了一半才发现原来铜丝还分紫铜丝和黄铜丝,原作者使用的黄铜丝,不过既然已经做了也不管了,紫铜丝的颜色看起来也不错。

PS. 铜丝需要买 2 米。框架加内部搭桥要用掉的铜丝比想象中更多一些,加上浪费的 2 米刚好够用。

esp32-satellite-tutorial-2

esp32-satellite-tutorial-3

电铬铁,一定要好的

一开始用的电铬铁是很久之前买的一个内热式电铬铁,60W 功率,但是焊接的时候总是不上锡,每次在先给铜丝加热好久,然后锡才能到铜丝上。

后来挑了个便宜的德力西 75W T12 电铬铁,效果好多了,真的能有作者视频中那效果一碰就能上锡的效果。

加商品

先折弯再焊接

1mm 粗的铜丝还是有点硬的,建议先比划好尺寸,并且先裁剪好一个模块所有对应搭桥的铜丝,再进行焊接。

对于要连接的焊盘的部分,可以多留一点,这样在没有对齐的情况下可以重新调整,焊接时再剪掉多余的部分。

esp32-satellite-tutorial-4

太阳能其实没啥用

之前找 DeepSeek 算过,这个尺寸的太阳能电池板在室内只有 1mW 的发电功率,纯粹图一乐。因此完全没有必要添加太阳能充电模块,可以省不小焊接工作量 😃。

当然也不能直接断接太阳能电池板的正负极,我加了个 100K 电阻在正极铜丝上,然后直接连接到负极了,测试过电流只有 50uA,不会影响啥。

esp32-satellite-tutorial-5

其他模块要省也可以省

太阳能充电没有意义之后,那这个光靠一个小小的锂电池也没办法续航特别久了。如果作为一个常开的桌面摆件,还要频繁充电,不如直接插电使用。

这样的话就可以去掉不少模块了:

  • 锂电池:不需要电池了
  • 电池指示器:没必要了
  • 开关:都插电了,想断电直接断电源就行了


阅读全文 »

AI 误诊 macOS IOKIT Bug:ESP32-S3 USB HID 通信调试记录

前段时间想模仿 BLEUnlock 搞个使用指纹给 macOS 解锁的应用,让 AI Vibe Coding 了很多代码,特别是 USB HID 通信以及 CTAP 协议处理部分。

这中间在调试协议时,AI 花了相当多的时间来反复调整 USB HID 通信时的 Payload 大小,AI 最终的结论是:macOS IOKIT 在发送数据到 USB 设备时有 Bug,会缺少 1 个字节,所以通过宏定义的方式,将包大小减少 1 个字节来绕过这个 Bug 😂。

当然我是不相信这个结论的,毕竟 macOS 上通过 USB HID 通信的设备那么多,不可能有这么明显的 Bug,周末花了点时间来看看到底是咋回事。

问题表现

在整个通信协议相关代码写完,并且主机和设备通信测试成功之后,在设备端会提示 USB HID 在收到消息时,Payload 大小为

阅读全文 »

用 ESP32-S3 跑 BASIC 解释器,这比当年比尔盖茨用的电脑配置高多了

之前我做了个 AI 生成外形的复古小电脑,并且同样使用 AI 生成了 3D 模型,塞了 ESP32-S3 开发板 + 0.96 英寸 OLED 进去,顺手做了个能播放《Bad Apple》的固件(见《3 步从 nana banana AI 生成的复古小电脑到真实桌面小玩具》)。

esp32-s3-arduinobasic-2

最近在 GitHub 上看到一个 ArduinoBASIC 项目,一个还算完整的 BASIC 语言解释器,支持 BASIC 语言中常用的特性,这不刚好用来把这个复古小电脑变成真的可以写代码的小电脑吗 😃。

PS. 当年比尔·盖茨和保罗·艾伦为 Altair 8800 写 BASIC 时,机器 CPU 是 2 MHz 的 Intel 8080,只有 4 KB



阅读全文 »

百元成本,DIY 一个 ESP32-S3 驱动的炫酷 IV-18 荧光管时钟

前段时间分享了 HV5812 驱动 IV-18 荧光管(见 使用 C 语言位运算和宏,编写一个可自由配置的 HV5812 + IV-18 荧光管驱动),这段时间把固件和外壳搞了搞,总算是差不多做完了,桌上又多了个吃灰的摆件 😃。

在这次开发过程中,固件也是继续尝试了使用 AI 编写,体验还不错,不再需要为配网 + Web 配置界面这些烦琐的事花太多时间了。

成品效果

 

元件选型

做这个 IV-18 桌面时钟,元件中主要的成本就是 IV-18 荧光管本身了,占了绝对的大头。

  • 荧光管:IV-18 真空荧光管透明基板版本,约 95 元
  • 主控:ESP32-S3 Zero 开发板,21 元
  • DCDC 升压芯片:XL6007,7 毛
  • LED 高压驱动:HV5812,6 元
  • 其他阻容:算 5 元吧

PCB 还是老样子,嘉立创每月两样免费打样,外壳 3D 打印也不算了,总成本大约在 130 …

阅读全文 »

Wokwi + VSCode 插件在线仿真 ESP32 更好用,值得一试

之前在《玩 ESP32 和 Arduino 的同学一定不能错过这个在线仿真网站》这篇文章中分享了 Wokwi 这个在线仿真平台,它支持 ESP32、STM32、树莓派等众多 MCU,还有相当丰富的外设库,在手边没有硬件设备时临时调试一下固件代码还是很方便的。

不过之前测试的是使用 Wokwi 的在线编译功能,作为免费用户,经常会碰到服务器编译超时错误,然后导致无法调试,又或者是固件项目依赖了太多的三方库,编辑项目相当麻烦。

这个时候想到了它还有一个 VSCode 插件,似乎可以在本地编译固件再进行仿真,尝试了一下发现还真挺好用,妈妈再也不用担心手边没硬件了。

操作演示

这里以我本地编译了一个 ArduinoBASIC 项目进行测试,可以看到整个使用过程还是相当流畅的,完全不用等待 Wokwi 的服务端编译时间了。

安装插件

要安装 Wokwi 的插件也很简单,直接在 VSCode 中的插件市场搜索 wokwi 或者通过以下链接安装即可:

https://marketplace.visualstudio.com/items?itemName=wokwi.wokwi-vscode

wokwi-vscode-simulator-1

在安装完成后,就可以通过 Command + Shift + P 呼出 VSCode 命令窗口,再搜索 wokwi 找到 Wokwi: Start Simulator 就可以开始使用了。

获取免费授权

在第一次使用 Wokwi …

阅读全文 »

使用 C 语言位运算和宏,编写一个可自由配置的 HV5812 + IV-18 荧光管驱动

有段时间觉得辉光管挺有意思,刚好也看到有类似尺寸的 LCD 小屏幕,就用 LCD 显示图片做了个 LCD 模拟辉光管时钟(见《AI 干了一半活,做个 LCD 模拟辉光管时钟》)。

不过这效果总是差点意思,后面看到有人分享的荧光管时钟,效果也还可以,但是价格相比辉光管要便宜不少,辉光管一个 60 元左右,荧光管 IV-18 8 位数字的就 90 的样子,就决定也来搞一个做个正经的荧光管时钟。

在立创开源平台找了一些开源项目进行参考,简单搞了个 IV-18 驱动板,基于 XL6007 DC-DC 升压 + HV5812 高压 LED 驱动芯片。在嘉立创打了样焊接测试也一次成功了。

HV5812 驱动拿了立创开源平台 lurt/iv18-vfd 的代码,用 ESP32-S3 也是可以直接驱动起来,能正常显示数字,不过在显示有些字符的时候会有一些异常,应该是跟我为了布线改动了 IV-18 和 HV5812 连接有关系。

HV5812 驱动板 PCB

为了保持面积紧凑,以及为了后续连接不同的 MCU 控制,把 XL6007 和 HV5812 …

阅读全文 »

玩 ESP32 和 Arduino 的同学一定不能错过这个在线仿真网站

玩 ESP32 和 Arduino 的时候,经常会碰到手边没有对应的板子或者元器件的情况,这个时候又想测试固件的话,就非常麻烦了。

这个时候在线仿真服务 Wokwi 就可以派上用场了。

我还是在之前找一些开源项目的时候接触到了 Wokwi 这个仿真服务,用了一下感觉还挺方便,特别是在想快速验证一个代码是否有效的时候。

Wokwi 相比我刚开始用的时候,支持了更多的平台,已经不再是只有 ESP32 相关的开发板了,还有 STM32、树莓派 Pico 之类的。现在似乎发展还挺好,搞了不少服务出来,支持 VS Code 和 CI 什么的。

另外如果不喜欢在线工具,也可以看看之前分享的电脑上模拟器《Arduino玩家必备,SimulIDE电路模拟器》,外设可能不如 Wokwi 丰富,但是也基本够用。

Wokwi 优势

相比于自己购买硬件、使用面包板搭建测试电路,Wokwi 还是有一定优势的,在原型验证阶段,可以省掉不少事情。

  • 成本门槛: 开发板、元器件、传感器、工具(万用表、示波器)的购买成本。
  • 时间等待: 采购、物流、焊接、组装耗费大量时间。
  • 物理限制: 场地、电源、设备携带不便;易损坏(短路、烧芯片)。
  • 试错成本高: 代码错误可能导致硬件损坏。
  • 协作困难: 团队成员/师生间共享和复现硬件环境复杂。
  • 快速迭代难: 想法验证需要反复搭建电路,效率低。

当然,作为一个服务网站,也要生存,在使用过程中,可能还是会时不时碰到需要付费才能获得更好体验的情况 🙈,例如创建私有工程、编译时间长等问题,都需要付费。

整体界面

Woki …

阅读全文 »

AI 干了一半活,做个 LCD 模拟辉光管时钟

这是一个为了一碗醋包了一盆饺子的故事。

之前为了测试 AI 写单片机代码能不能行,用 Manus 测试了一下,过程可以看这篇 《AI 编程在嵌入式开发中能用吗?体验 Manus 编写 ESP32 固件》,简单来说:能用。

这不为了让 AI 写出来的固件有用武之地,得把整个硬件开发完~

不过好在整个项目比较简单,而且单片机 ESP32-S3 直接用了现成的模块,PCB 几乎没有什么复杂的线路,就 LCD 的 PCB 有几个小一点的元件,主板 PCB 全都用了 2.54mm 的插件。

AI 生成数字图片

之前只介绍了固件是用 Manus 生成了,但是实际上,每个屏幕展示的模拟辉光管效果的数字图片,也是让 AI 生成的。

不过这次是让 ChatGPT 生成的,现在这些 AI 工具,简单是没有设计能力的工程师的福音,想要啥效果,吩咐 AI 就行了 😃。

提示词:

请生成辉光管效果的10个数字,包含数字 0 1 2 3



阅读全文 »

AI 编程在嵌入式开发中能用吗?体验 Manus 编写 ESP32 固件

前段时间买了个 0.96 寸 80x160 的 LCD 屏幕,想要做一个模拟辉光管的时钟。

这第一步就用上了 AI,用 ChatGPT 生成了辉光管效果数字的图片,然后按数字裁切成 0-9 十张图,生成对应的图片 RGB565 格式数据,测试了一下,效果还不错。

然后我就在想,那这个时钟的固件,是不是也可以用 AI 来生成呢?AI 现在已经验证了写一些前端项目相当高效,在嵌入式开发领域,是不是也可以有同样的能力,至少可以完成一个简单的项目?

刚好 Manus 开放注册了,我就拿它来尝试一下看看效果怎么样。

功能需求

为了防止项目失败,先把功能定义得简单一点,就是通过 ESP32 控制 6 个 LCD 来显示上面裁切生成的数字图片,并且需要提供 API 更新图片、AP 配置能力。

提示词

这里为了让生成的项目更可控,提示词中明确了工程框架为 PlatformIO,引脚使用宏定义等能力,

请使用 platformio + arduino 框架帮我写一个 esp32-s3 固件,实现以下功能:

  • 控制 6 个 st7735 驱动的 lcd 屏幕,分辨率为


阅读全文 »

小智 AI 通信协议补漏,通过OTA接口注册设备

上周整理了一下小智 AI 的 WebSocket 通信协议,《复刻小智AI第2步,2张核心流程图学习一下它的WebSocket协议》,后面在调试时发现了一个缺失的点,就是漏掉注册设备这一步。

一开始还对配置文件中的 "OTA_VERSION_URL": "https://api.tenclass.net/xiaozhi/ota/", 字段比较费解,好像整个通信过程中也没有用到的地方,而且在 py-xiaozhi 中也不存在固件的概念。

另外因为跑示例的时候,用的 Client-IdDevice-Id 都是从仓库中直接拿的,应该是已经在服务器已经注册过了,只需要额外添加设备即可,所以一直没发现这个问题。

后来在手动修改 Device-Id 的时候终于发现了,仔细研究了一下 xiaozhi-esp32py-xiaozhi,再自己操作了一下,总算搞明白了。

问题

如果在设备启动时,不经过设备注册过程,那么在开始对话之后,服务端会返回没找到设备版本信息的语音,而不是在后台添加设备。

2025-04-21 14:51:23,295 - WebSocketClient - INFO - 收到JSON消息: {"type":"tts","state":"sentence_start","text":"没有找到该设备的版本信息,请正确配置 OTA 地址,然后重新编译固件。","session_id":"14328015"}

这个时候,不管怎么对话,服务端都只会返回这一句。

py-xiaozhixiaozhi-esp32 项目中,都是会在启动阶段进行 OTA 固件版本检查,因此我们也需要在加载配置时,先进行 OTA 版本检查这一步,同时完成设备注册。

注册设备

注册设备也很简单,构建一个固件信息的 …

阅读全文 »