Open Battery Information:用50元Arduino诊断并解锁“死机”的工具电池
【免费下载链接】open-battery-information项目地址: https://gitcode.com/GitHub_Trending/op/open-battery-information
周五晚上,电钻突然罢工:电池指示灯不亮,充电器直接报错。你怀疑是电芯坏了,一测电压却都在,整机就是不肯启动。大多数人这时会把它当废品扔掉,而开源项目 Open Battery Information 给出了另一条路:一块 Arduino 加两只电阻,读出电池真实状态,把误锁放出来。
快速了解:电池没坏,可能只是被锁了
BMS(电池管理系统,电池内置的"安全阀")一旦觉得电压或温度不对劲,就立刻锁机,但误判并不少见。这个项目把一块便宜的 Arduino 变成转接器,通过 OneWire(单线通讯协议)和电池里的 BMS 芯片对话,把电芯电压、温度、状态这些数据摊在网页上,让你自己判断是真坏还是误报。它适合想救电池的人,也适合维修店当"体检仪"用。
- 传统做法:送修或整组换新,花几十到几百元,好坏全凭对方一句话
- 本项目:硬件约 50 元一次性投入,数据当场读出,误锁当场处理,全程约 10 分钟
动手前:零件、接线与固件
| 物品 | 用途 | 获取方式 |
|---|---|---|
| Arduino Uno(或 ESP32-C3 SuperMini) | 主机板,充当 BMS 读取器 | 电商几十元 |
| 4.7 kΩ 电阻 ×2 | D6(OneWire)和 D8(Enable)上拉用 | 顺手买几十只 |
| USB 数据线 | 供电并和电脑通讯 | 任何数据线 |
| Chrome 或 Edge 浏览器 | 跑 OBI-1 网页工具,甚至直接在浏览器里写固件 | 无需额外安装 |
接线就是照着上图:D6、D8 各串一只电阻接到电池的 BMS 通讯针脚。写固件只需要三行命令:
git clone https://gitcode.com/GitHub_Trending/op/open-battery-information cd open-battery-information/ArduinoOBI pio run -t upload没有命令行环境?用 VS Code 装好 PlatformIO 插件后直接打开 ArduinoOBI 文件夹,点侧边栏的 Build 再点 Upload 即可;更省事的话,项目提供了浏览器版固件写入器,连本地编译都跳过。
跑通流程:10 分钟读出电池真实数据
- 接线并上电:Uno 用 USB 连电脑,D6、D8 按接线图接电池接口。预期:板子亮灯,系统里出现一个新的串口。
- 烧录固件:执行上面的命令(或走浏览器写入器)。预期:终端打出Upload complete。
- 打开网页工具:用 Chrome 或 Edge 打开 OBI-1 页面(入口在项目 README 里),点连接并选中那个串口。预期:连接指示从灰变亮,界面上显示固件版本号。
- 读电池:插入电池,点Read battery。预期:型号、电池组总电压、逐节电芯电压、温度、充电次数、状态依次填满。
- 判断并处理:若各节电压正常、节间差小于 0.1V、状态里没过压过温,就在界面执行错误复位清除锁定,再读一次。预期:状态回到正常,电池重新可充可用。⚡
验收标准:每节电压落在 3.7~4.2V 区间,节间差小于 0.1V,状态栏无保护记录。如果某节电压明显偏低、温度明显离谱,就停手——那是电芯真故障,强解只会把小问题拖成大问题。
拆解原理:锁住的数据是怎么读出来的
过程不神秘:网页把指令帧通过 Web Serial(浏览器自带的串口接口)发给板子,固定 9600 波特率;板子收到后先把 Enable 脚拉高,相当于"接入"电池的通讯线,然后走 OneWire 帧——0x31/0x32 读温度传感器读数,0xCC/0x33 向 BMS 芯片取电压、充电次数和状态,最后把原始字节原样送回浏览器,由网页整理成数字。想深入的话,完整协议逻辑在 ArduinoOBI/src/main.cpp,单线底层库在 ArduinoOBI/lib/OneWire/,知道它读了哪几个寄存器就够了。
判断一下:这种电池该用,那种别碰
适合
- 维修店主:客户送来"坏了"的电池,先读一遍,误锁当场解决,工时费落袋
- 二手工具买家:入手前先读一次电池,是锁就解锁,是真坏就着底气砍价
- 家里囤着"死电池"的 DIY 玩家:扔之前至少排除一下误锁
不适合
- 电芯真损坏的电池:某一节电压明显偏低、温度异常,解锁无意义还有风险
- 协议不通的电池:当前固件面向牧田系(OneWire 协议),其他品牌的 BMS 需要你自行实现帧
轻量对比:自修约 50 元硬件一次性 + 10 分钟;送修几十到几百元、等几天。
排障手册:遇到问题先查这里
编译报错、提示找不到平台?多半是打开了外层目录,PlatformIO 识别不到项目。改为打开含 platformio.ini 的 ArduinoOBI 文件夹再试。
显示 Upload complete,浏览器里却没反应?串口被占用或选错了端口。关掉其他串口监视软件,重新选一次端口,再逐根核对 D6、D8 接线。
换 ESP32-C3 后一上电就烧?4.7kΩ 上拉必须接 3.3V,接 5V 会烧穿 GPIO;且 ENABLE 用 Pin 0、OneWire 用 Pin 1,这些在 ArduinoOBI/README.md 里都有专门说明。
开源的意义不只是省几十块钱,而是把选择权还给你:下次电池再"死"一次,你可以先读数据,再决定要不要扔。克隆仓库、焊上那两只电阻,手里的"死电池"也许还能再战三年。
【免费下载链接】open-battery-information项目地址: https://gitcode.com/GitHub_Trending/op/open-battery-information
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考