Open Battery Information 电池 BMS 修复指南:用 Arduino 救活被误锁的锂电池
【免费下载链接】open-battery-information项目地址: https://gitcode.com/GitHub_Trending/op/open-battery-information
Open Battery Information(OBI)是一个开源的电池 BMS 修复项目:把 Arduino 烧入固件后,它就变成一台电池读取器,直接与电池保护板通信,帮你诊断并救回被误锁定的电池,适合电池维修者和电子爱好者上手。
🔋 一块好电池,为什么突然"没反应"?
工具电池打不着火,设备提示请使用原装电池,可你拆开一测,每节电芯电压都正常——多半是 BMS 检测到故障后把自己锁了。保护锁定是保命的功能,但误触发、或故障早已消失的情况,会把一块好板子一起锁死。以前的办法只有整包扔掉。OBI 想做的就一件事:绕过限制,直接跟 BMS 对话,把数据读出来,判断电池还能不能救。
📦 项目速览
| 项目 | 说明 |
|---|---|
| 定位 | 开源电池修复工具,当前仓库提供 Arduino 固件(ArduinoOBI/) |
| 核心能力 | 通过 OneWire 与电池 BMS 通信,读取型号、单体电压、温度、充电次数和状态 |
| 硬件 | Arduino Uno 或 ESP32-C3 + 2 个 4.7 kΩ 电阻 |
| 配套软件 | OBI-1 浏览器端工具,通过 Web Serial 连接,还能在浏览器里直接烧录固件 |
| 适用人群 | 想修复误锁电池的维修者、研究电池协议的爱好者 |
| 状态提示 | 旧版 Python 桌面应用已弃用(代码保留在 v0.2.3 标签),现在以固件 + Web 工具为主 |
🧰 动手前准备:一份清单配齐
硬件
- Arduino Uno ×1(或 ESP32-C3 SuperMini,二选一)
- 4.7 kΩ 电阻 ×2(Enable 和 OneWire 信号线上拉用)
- 杜邦线、面包板若干,USB 数据线
软件
- Chrome 或 Edge 浏览器(运行 OBI-1 工具、浏览器烧录固件都靠它)
- VS Code + PlatformIO 扩展(只在自行编译固件时需要)
- Git(可选,也可以直接下载源码 ZIP 包)
注意
- 用 ESP32-C3 的话,先看下面"安全红线"里 3.3V 的警告,再接线
🔌 从零跑起来:接线、烧录、连接
接好线:把电池 VBAT+/VBAT- 接到 Uno 的电源输入(原理图对应 Vin 与 GND),D8 接电池 Enable 线,D6 接 OneWire 线,两条信号线各加一个 4.7 kΩ 上拉电阻。接线前反复核对极性,ESP 板子的上拉必须接 3.3V。
烧录固件:推荐走浏览器通道——用 Chrome/Edge 打开 OBI-1 的固件上传页面,USB 连好开发板,直接在浏览器里刷入,无需工具链。想自己编译也行:用 VS Code 打开
ArduinoOBI文件夹,在 PlatformIO 的 "Project Tasks" 下拉里选uno环境,先 Build 再 Upload,看到 "Upload complete" 即成功。安装配套工具:用 Chrome 或 Edge 打开 OBI-1 Web 工具页面即可,不需要安装任何程序。只有 Chrome 和 Edge 支持 Web Serial,其他浏览器打不开串口。
连接并读电池:在工具里选择开发板对应的串口,点连接,然后插入电池。设备重新插拔后 Web Serial 不记得端口,需要重新选择一次。
🎛️ 核心功能实操
读取电池数据:型号、单体电压、温度一次拿全
- 目的:确认电池真实状态,判断这块电池值不值得救
- 操作:串口连接成功后,把电池插入接口,点击Read battery
- 预期结果:返回电池型号、各单体电压、温度读数、充电次数和当前状态
浏览器烧录固件:不装工具链也能更新
- 目的:给板子装新固件或重新刷写
- 操作:Chrome/Edge 打开固件上传页面,USB 连接开发板,选择对应板型的固件刷入
- 预期结果:板子更新固件,工具侧可收到版本信息(固件版本号由 ArduinoOBI/scripts/get_version.py 在编译时注入)
协议层调试:直接和 OneWire 对话
- 目的:验证通信链路,或为其他电池型号做扩展
- 操作:固件对外是 9600 波特率的串口,收到以
0x01开头的帧后拉起 ENABLE 引脚,再经 OneWire 发出0x31、0x32、0x33、0xCC等命令,全部逻辑见 ArduinoOBI/src/main.cpp - 预期结果:版本命令有回应说明链路正常;OneWire 接错或电池未供电时收不到响应
📊 兼容性与规格速查
| 项目 | 数值 |
|---|---|
| 支持电池 | 目前主要支持 Makita(牧田)LXT 系列,固件中 OneWire 会话即以 makita 命名 |
| 通信协议 | 对电池走 OneWire,对上(工具)走串口 9600 bps |
| Arduino Uno 引脚 | D6 = OneWire,D8 = Enable |
| ESP32-C3 引脚(SuperMini) | Pin 0 = Enable,Pin 1 = OneWire,可在 ArduinoOBI/platformio.ini 中改 ESP_EN_PIN / ESP_OW_PIN |
| 构建环境 | uno(默认)、nano、nano_new、esp32-c3-devkitm-1 |
| 预编译固件 | 仓库 Releases 页提供 uno.hex 与 esp32.bin,可跳过本地编译 |
⚠️ 安全红线:三组,条条要记
电气
- ESP 板的上拉电阻必须接 3.3V,接 5V 会直接烧掉 GPIO
- 插拔前核对 VBAT+/VBAT- 极性,锂电池组不是小电流源
- 板子由电池供电,动手前确认电池电压与开发板输入匹配
操作
- 在干燥、通风的台面作业,完工立即断开电池与开发板
- 严禁短路VBAT+/VBAT-,全程避免金属件接触两极
数据
- 操作前备份原始读数:型号、充电次数、状态都记下来
- 记录每一步读取与重置的结果,出问题才能回溯
🩺 排错速查:三个高频问题
问题 1:OBI-1 选不到串口、连不上
- 现象:工具里没有可选端口,或点连接后失败
- 可能原因:浏览器不是 Chrome/Edge;设备重插后没重新授权端口;固件没烧进去
- 处理动作:换 Chrome 或 Edge;重新插入 USB 后再选端口;回看上传日志确认 "Upload complete"
问题 2:ESP32-C3 无响应或模块损坏
- 现象:连接后无任何数据,或接线后模块直接失效
- 可能原因:上拉电阻接到了 5V;构建时没选
esp32-c3-devkitm-1环境;引脚定义和实际接线不一致 - 处理动作:确认上拉落在 3.3V;重新选择环境编译上传;SuperMini 默认 Pin 0(Enable)、Pin 1(OneWire),改过引脚要同步改 platformio.ini
问题 3:PlatformIO 编译或上传失败
- 现象:点 Build / Upload 后终端报错
- 可能原因:选错构建环境(默认是 uno,ESP 要选 esp32-c3-devkitm-1);USB 端口没识别;核心库还没装完
- 处理动作:核对 "Project Tasks" 下拉里的环境;重插 USB 确认端口;等 PlatformIO 完成核心库下载后再编译
💰 项目价值
- 成本:BMS 误锁时不必整包换新,省下一整套电池组的钱
- 环保:修复代替丢弃,让还能用的电芯继续服役
- 技术:OneWire 交互完全开源,读一遍 main.cpp 就能照着扩展新电池型号
🌐 资源与社区
- 文档:ArduinoOBI/README.md 是最完整的一份,覆盖硬件、编译、烧录与 ESP 注意事项
- 源码:ArduinoOBI/src/main.cpp、ArduinoOBI/platformio.ini
- 提问走邮件 openbatteryinformation@gmail.com;问题反馈和功能建议用仓库的 Issues 跟踪,欢迎以 Pull Request 提交新电池型号支持
一块 Arduino、两个电阻加一个浏览器,门槛就到头了。OBI 把电池修复的完整链路做成了可复现的开源流程。下一块误锁的电池,别再直接进废品箱。
现在找一块"打不着火"的电池,从接线开始动手。
【免费下载链接】open-battery-information项目地址: https://gitcode.com/GitHub_Trending/op/open-battery-information
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考