ESP32 掌机改造全记录:WiFi 遥测、一键启动 AI 终端

花 40 块买了个编程掌机,我没刷游戏,把它改成了电脑副屏

淘宝 40 块钱的 ESP32 掌机,本来是用来写 刷小游戏的。我刷完固件之后,盯着那块 160×128 的彩屏看了五分钟------然后决定把它变成我桌上最酷的电脑扩展屏。

两天,22 个文件,两个 AI 助手(gpt和deepseek),搞定了。


起因:40 块钱能买什么?

前段时间逛淘宝,看到一款 ESP32 编程掌机------带彩屏、带按键、带蜂鸣器,才 40 块。作为一个程序员,这种小玩意儿天然有种吸引力。

下单,到货,拆包装。塑料外壳,手感一般,但屏幕亮起来那一下还是有点意思的。

然后我就想:弄个啥有点实际作用。

我桌上缺一个副屏。不是那种花几百块买的 USB 扩展显示器,而是一个小巧的、能实时显示电脑状态的屏幕。CPU 多少度、内存吃了多少、今天什么天气------全都一眼能看到。最好还能按个键就打开 AI 终端。

掌机的屏幕 160×128,两个功能键,一个方向键。够了。


怎么做:把掌机变成电脑的"眼睛"

想法很简单:ESP32 连 WiFi,PC 把数据发过去,屏幕显示出来。

真做起来,大概分了这几步:

第一步:硬件摸底。 先不动手,用 esptool 完整备份 4MB 原始固件------万一翻车了还能刷回去。这一步花了十分钟,省了后面可能的一整天。

第二步:刷 MicroPython。 原厂固件是 Arduino,换成 MicroPython 才能快速迭代。一条命令搞定,比想象中顺利。

第三步:WiFi 配网。 这是第一个坎。ESP32 开热点,手机连上去输入家里 WiFi 密码------听起来简单,但 iPhone 热点的 SSID 在 Windows 上是小写 iphone,MicroPython 连 iPhone 就认不出来。大小写,卡了我半小时。

第四步:TCP 通信。 PC 上写个 Python 服务端,每秒采集一次 CPU/内存数据,打包成 JSON 发到 ESP32。ESP32 端的状态机自动处理断线重连------WiFi 断了就退避重试,1 秒、2 秒、4 秒、8 秒......直到连回来。

第五步:屏幕 UI。 这是最磨人的部分。160×128 的 ST7735 屏,本来想做个炫酷的像素天气图标------画上去全是马赛克。放弃图标,切回纯文本。用户(我自己)说越简洁越好,于是一路砍:不要状态条、不要等级条、不要花哨的边框。最终只留了 CPU 进度条、内存进度条、天气文字、时间日期。

第六步:按键绑定。 A 键一键启动 Hermes 终端,B 键启动 Codex 终端。在掌机上按一下,电脑上直接弹出一个 AI 对话窗口。

两天,从一块裸板到一个跑在桌面上的遥测面板。


AI 在这个项目里做了什么

这个项目最特别的地方在于,我几乎全程用 AI 写代码

不是 ChatGPT 那种一问一答,而是两个 AI 终端------Hermes 和 Codex------直接在我的电脑上操作文件系统、执行命令、调试硬件。

大概的分工:

  • 硬件探测和固件刷写 :AI 帮我查 ESP32 的芯片型号、Flash 参数,生成正确的 esptool 命令。这种事自己翻文档要二十分钟,AI 十秒出结果。
  • MicroPython 代码:WiFi 状态机、TCP 重连逻辑、按键消抖------这些都是 AI 生成的初版,我只做审查和微调。变量名写错这种低级错误 AI 基本不犯。
  • PC 端服务端:PyQt6 的 GUI、psutil 数据采集、天气 API 调用------AI 搭好骨架,我调调布局。
  • Bug 排查 :最有意思的部分。有个 Bug 是 ESP32 反复断连,我描述了一下现象,AI 分析出是多个 Python 进程同时抢 8899 端口。还有一个 Bug 是照片功能内存溢出,AI 直接定位到 bytearray 缓冲的问题。

说实话,如果纯手写,这个项目我至少要做一周。AI 把"从想法到原型"的时间压缩到了一个晚上

当然 AI 也不是万能的。它不知道 iPhone 热点的 SSID 大小写问题------这是我用小写试出来的。它也不知道 ST7735 的 framebuffer 不支持直接图片渲染------这是跑崩了以后才发现的硬件限制。

人负责知道"要做什么"和"哪里不对劲",AI 负责把中间那 80% 的代码搬砖干了。


踩坑不细说,挑几个有意思的

iPhone 热点的大小写陷阱

Windows 上热点名显示 iphone(全小写),但 MicroPython 的 wlan.connect('iPhone') 连不上。Python 里 'iPhone' != 'iphone',这个问题换谁都想不到。

ST7735 不能当"电子相册"

我花了一个下午写图片传输功能------PC 压缩图片、分片发送、ESP32 接收拼装------全都跑通了,最后卡在最后一步:屏幕不显示。查了一圈发现,这款屏的 framebuffer 不支持 buf[:] = data 这种直接帧缓冲写入。硬件不支持,几百行代码白写了。

教训:嵌入式开发,先验证硬件能力边界,再写代码。一个 2 像素的色块测试,能省掉一整个下午。

多进程端口打架

GUI 跑起来了,但 ESP32 死活连不上。排查半天发现:之前测试用的服务端进程没关,和 GUI 里的服务端同时监听 8899。AI 提醒我查端口占用,一条 netstat 就找到了。


最终效果

现在我的桌面上,这块 40 块钱的小屏幕静静地亮着:

复制代码
CPU [████████░░░░░░░░] 45%
MEM [████████████░░░░] 67%
Clear  38°C
08/06  17:30

按一下 A 键,电脑弹出 Hermes 终端,随时可以跟 AI 对话。按一下 B 键,弹出 Codex,开始写代码。


写在最后

这个项目让我重新思考了两件事:

AI 时代的开发范式变了。 以前做嵌入式项目,门槛在"怎么用"------不懂寄存器、不熟 SDK、没写过 MicroPython,基本劝退。现在有了 AI,门槛从"怎么用"变成了"想要什么"。你只需要清楚描述你的想法,AI 能帮你把路径找出来。

当然,AI 不会替你踩坑------iPhone 热点的大小写、ST7735 的硬件限制、端口冲突的诡异现象,这些"现实世界的脏细节"还是得人来发现。

但至少,人类的角色从"搬砖工"变成了"探险家"。这个转变挺好的。


项目信息

  • 设备:ESP32 编程掌机(¥40),ST7735 彩屏 160×128
  • 技术栈:MicroPython + PyQt6 + psutil + Open-Meteo API
  • 通信方式:WiFi TCP + NDJSON 协议
  • 代码量:22 文件,约 40KB
  • 开发周期:2 天(含踩坑)
  • AI 工具:Hermes CLI + Codex CLI
相关推荐
HyperAI超神经1 小时前
【vLLM 学习】Disaggregated Prefill
人工智能·深度学习·学习·vllm
我星期八休息2 小时前
网络编程—网络层
开发语言·前端·网络·人工智能·智能路由器
逻辑君2 小时前
ANNA 7.2 方块机器人实验技术报告
人工智能·深度学习·机器学习·机器人
菜鸟‍2 小时前
【论文学习】Medical Image Analysis 2024 || 医学图像分割中失败检测方法的比较基准研究:揭示置信度聚合的作用
人工智能·学习
AI导出鸭3 小时前
怎么让千问做表格?AI导出鸭苹果版将千问输出的管道表格智能解析为二维结构,一键导出为Excel或Word标准表格。
人工智能·chatgpt·word·excel·ai导出鸭
陈嘿萌3 小时前
ECCV 2026 | 南开&OPPO开源 ExpoMotion:首个大规模动态多曝光融合数据集
人工智能·计算机视觉·图像融合·南开大学·新数据集·expomotion·多曝光融合
zyplayer-doc3 小时前
zyplayer-doc企业知识库能做什么:从文档创建、权限管理到AI问答的完整能力
大数据·javascript·数据库·人工智能·pdf·word
IT_陈寒3 小时前
为什么我的Java Stream流操作会吃掉内存?
前端·人工智能·后端
babe小鑫3 小时前
人工智能专业方向梳理的实用清单
人工智能