从"这玩意儿又卡死了"到"我知道原因了"

你有过这样的经历吗?某个设备有个恼人的问题,论坛上众说纷纭,但没人真正知道答案。你想:“我能不能自己搞清楚?”

这就是我和 ClockworkPi uConsole 的故事。一台口袋大小的 Linux 电脑,翻盖外壳,机械键盘,可以塞进背包——黑客的梦想。但它有个致命问题:

开启 4G 模块 + 用电池供电 = 随机死机

唯一的解决办法?拆掉电池,重启。再来一次。

Vibe Coding 的开始:咖啡馆 + 便携设备 + 好奇心

某个周末下午,坐在咖啡馆里,我盯着又一次死机的 uConsole,突然有个想法:

如果我直接在这台设备上构建诊断工具呢?不等回家,不用台式机,就在这里,用遇到问题的设备来解决它自己的问题。

听起来有点疯狂,但也很有趣。于是我开始了。

在 uConsole 上调试 4G 调制解调器问题

在遇到问题的设备上构建解决方案——真正的 vibe coding 实践

工具箱很简单

  • uConsole 本身(用电池供电,运行 Ubuntu)
  • Claude Code(AI 辅助开发,让我专注解决问题而不是语法细节)
  • Next.js + TypeScript(快速原型,热重载,立即看到效果)
  • 一杯咖啡(重要!)

没有复杂的实验室设备。没有昂贵的示波器。就是这些。

构建中的乐趣:实时监控 → 发现问题

第一步:我需要看到电池到底发生了什么。

1
2
# 开发服务器启动
npm run dev

几分钟后,一个简单的 Web 界面出现了:

  • 实时电压
  • 实时电流
  • 实时功率
  • 实时电池百分比

每秒更新的图表在浏览器里跳动。我开启 4G 模块,盯着屏幕…

电压掉了! 从 3.7V 直接掉到 3.4V 以下。

“等等,这不是功率问题,是电压问题!”

追根溯源:数据手册不会说谎

一番搜索后,我找到了 SIM7600G-H 4G 模块的规格表:

  • 工作电压范围:3.4V ~ 4.2V
  • 最低安全电压:约 3.45V
  • 峰值电流:传输时可达 2A

谜底揭晓了:

  1. 4G 模块突然抽取 2A 电流
  2. 电池内阻导致电压瞬间下降
  3. 电压低于 3.45V → 模块欠压
  4. USB 总线挂起 → 系统死机
  5. 只能拆电池重启

关键洞察: 不是电池容量不够,是电压降得太快。

更深的发现:你的电池有一半用不上

我继续深挖,做了一个完整的放电测试:

  • 从 100% 放电到接近 0%
  • 每秒记录电压、电流、能量
  • 总共记录了 4,318 个数据点,跨度 2 小时 48 分钟

然后我画了一张图:能量输出 vs 电压,并在 3.45V 处划了一条红线。

电池能量输出 vs 电压(带 3.45V 阈值)

红线显示 4G 模块的最低电压。右侧的所有内容都无法用于 4G 连接。

结果令人震惊:

  • 电池总容量:24.79 Wh
  • 3.45V 以上可用:13.39 Wh(54%)
  • 3.45V 以下不可用:11.40 Wh(46%)

换句话说:对于 4G 操作,你只能用约一半的电池容量。 剩下的 40-50%?电量还在,但对 4G 来说毫无意义。

完整的放电数据

FEB-4000 电池百分比

完整的放电曲线从 100% 到约 2%

FEB-4000 电压和电流

电压下降和电流峰值模式

解决方案:智能电源管理

既然知道了原因,修复就很简单:

降低电流消耗 → 减少电压下降 → 保持在 3.45V 以上

我写了一个自动化脚本:

  • 检测 4G 模块是否激活
  • 检测是否使用电池供电
  • 如果两者都是:CPU 降频到 1.8GHz(从 2.4GHz)
  • 更低的功耗 = 更少的电流 = 稳定的电压

测试结果:

1
2
之前:CM5 @ 2.4GHz + 4G + 电池 = 电压 < 3.45V → 死机 ❌
之后:CM5 @ 1.8GHz + 4G + 电池 = 电压 > 3.45V → 稳定运行 ✓

问题解决了!

为什么这是 Vibe Coding?

回想整个过程,最让我兴奋的不是解决了问题(虽然这也很爽),而是过程本身

零上下文切换

  • 问题在这台设备上
  • 解决方案在这台设备上构建
  • 测试在这台设备上运行
  • 一切都在同一个地方,同一时刻

即时反馈

  • 改代码 → 保存 → 浏览器自动刷新 → 看到结果
  • 从想法到验证只需几秒钟
  • 没有编译等待,没有部署流程

地点自由

  • 咖啡馆
  • 公园长椅
  • 火车上
  • 沙发上

只要有 WiFi 和电源(或充满电的电池),哪里都是实验室。

AI 辅助的乐趣

  • Claude Code 帮我快速搭建框架
  • 不用纠结语法细节
  • 专注于问题本质
  • 更快的迭代,更多的尝试

这不只是给程序员的

十年前,解决这种问题需要:

  • 工程实验室
  • 数千美元的测试设备
  • 交叉编译工具链
  • 数天的准备时间

今天?一台 200 美元的口袋电脑,一个专注的周末,就够了。

这意味着更多人可以:

  • 折腾电池供电的项目
  • 调试硬件问题
  • 测试和比较电池性能
  • 在现场解决设备问题
  • 边学边做,立即看到结果

自己动手解决问题的门槛,正在快速降低。

开源,欢迎尝试

整个项目都是开源的(GPL v3):

项目地址: battery-monitor

快速开始:

1
2
3
4
5
6
7
8
git clone https://hiwifi.denq.us:8418/denq/battery-monitor.git
cd battery-monitor
npm install
npm run dev  # 访问 http://localhost:3000

# 安装智能电源管理(可选)
cd scripts
sudo ./install-uconsole-power-regulator.sh install

你会得到:

  • 实时电池监控仪表盘
  • 电压/电流/功率图表
  • 放电曲线分析(能量 vs 电压)
  • 3.45V 阈值可视化
  • 智能电源调节器(自动降频保护)
  • 会话记录和数据导出

构建的乐趣

在遇到问题的设备上构建解决方案,这种感觉很特别。

没有"回头再说"。没有"等我有时间"。就是现在,就在这里,直接解决。

uConsole 现在可以稳定地在电池供电下使用 4G 了。社区也理解了为什么某些电池更好用。整个解决方案在一个有趣的周末完成。

这就是 Vibe Coding:

  • 带着好奇心
  • 在灵感迸发时
  • 在任何让你舒服的地方
  • 用现代工具和 AI 辅助
  • 构建你需要的东西

不是因为必须,而是因为可以,因为好玩

工具已经存在。硬件价格实惠。AI 助手随时待命。

唯一的问题是:你准备好开始你的 Vibe Coding 之旅了吗?


社区反响

分享你的结果:

  • 用放电曲线工具测试你的电池
  • 在论坛分享你的发现
  • 帮助完善社区电池数据库

有问题?想贡献代码?


本文是 Vibe Coding Fun Series 的一部分,记录在便携设备上构建真实项目的故事。关注我们,看看当开发真正变得移动化时会发生什么。

下一篇预告: 在咖啡馆用 AI 五分钟生成旅行海报


许可证: GPL v3

项目链接: battery-monitor on Gitea