ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Open Battery Information 电池 BMS 修复指南:用 Arduino 救活被误锁的锂电池

Open Battery Information 电池 BMS 修复指南:用 Arduino 救活被误锁的锂电池

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 的警告,再接线

🔌 从零跑起来:接线、烧录、连接

  1. 接好线:把电池 VBAT+/VBAT- 接到 Uno 的电源输入(原理图对应 Vin 与 GND),D8 接电池 Enable 线,D6 接 OneWire 线,两条信号线各加一个 4.7 kΩ 上拉电阻。接线前反复核对极性,ESP 板子的上拉必须接 3.3V。

  2. 烧录固件:推荐走浏览器通道——用 Chrome/Edge 打开 OBI-1 的固件上传页面,USB 连好开发板,直接在浏览器里刷入,无需工具链。想自己编译也行:用 VS Code 打开ArduinoOBI文件夹,在 PlatformIO 的 "Project Tasks" 下拉里选uno环境,先 Build 再 Upload,看到 "Upload complete" 即成功。

  3. 安装配套工具:用 Chrome 或 Edge 打开 OBI-1 Web 工具页面即可,不需要安装任何程序。只有 Chrome 和 Edge 支持 Web Serial,其他浏览器打不开串口。

  4. 连接并读电池:在工具里选择开发板对应的串口,点连接,然后插入电池。设备重新插拔后 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),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进