3 步用 Arduino 读取电池 BMS 信息:open-battery-information 新手教程
【免费下载链接】open-battery-information项目地址: https://gitcode.com/GitHub_Trending/op/open-battery-information
open-battery-information 是一个用 Arduino 读取电池 BMS 数据的开源固件项目,能显示型号、单体电压、温度和充电次数,适合想检修电动工具电池、排查 BMS 锁机问题的 DIY 玩家和维修人员。
项目介绍:电池 BMS 锁机时,先读数据再下结论
电动工具电池用一段时间后,常会出现一插上设备就报错、充不进电的情况,多数时候是 BMS 检测到故障后主动锁机,但真正的原因可能只是保护逻辑误判,或故障早已消失,把还能用的电池直接当废品处理很可惜。
open-battery-information(OBI)针对的就是这类问题:它通过 OneWire 总线与电池通信,读回电池型号、各单体电压、温度、充电次数和状态信息,由你来判断锁机是不是误触发,避免浪费一块好好的 BMS。早期的 Python 桌面应用已停止维护并从仓库移除,现在仓库只保留 Arduino 固件(ArduinoOBI/),配套界面是一个跑在浏览器里的 OBI-1 网页工具,通过 Web Serial 连接开发板,整个过程不需要安装 Python。
准备与安装:一块 Arduino Uno 加两个电阻就能开始
材料清单:
- Arduino Uno 开发板(ESP32-C3 SuperMini 也可以)
- 2 个4.7 kΩ电阻
- USB 数据线
- 待读取的电池包
接线按仓库中的原理图进行:Uno 的Pin 6 接电池的 OneWire 信号线,Pin 8 接 Enable 线,两条线各经一个 4.7 kΩ 电阻并接 GND,再由 VBAT+/VBAT- 供电。接线前先断开电池包电源,避免短路。
拿到代码后有两种烧录方式,按自己的习惯选:
git clone https://gitcode.com/GitHub_Trending/op/open-battery-information方式一(推荐):在 Chrome 或 Edge 中打开官方 firmware uploader 页面,插入开发板后直接在浏览器里完成烧录,不用装任何工具链。方式二:给 VS Code 安装 PlatformIO 扩展,把ArduinoOBI文件夹作为项目打开,在 "Project Tasks" 菜单里先 Build 编译、再 Upload 上传,终端出现 "Upload complete" 即成功。细节见 ArduinoOBI/README.md,仓库 Releases 页面还附有编译好的 uno.hex 和 esp32.bin 固件。
核心使用流程:从烧录固件到读出第一份电池数据
第一步:打开 OBI-1 网页工具。用 Chrome 或 Edge 打开官方 OBI-1 工具页面,选择 Arduino 所连接的串口,浏览器与开发板之间通过 Web Serial 建立连接。
第二步:接入电池并读取。按接线图把电池包接好,在页面上按下 "Read battery",工具会读回型号、各单体电压、温度、充电次数和状态。
第三步:对照数据判断锁机原因。把单体电压、温度和状态逐项核对,确认锁机是 BMS 误触发还是电池本身的问题,再决定是清除故障记录还是更换部件。
常见问题
电池 BMS 锁死了,这个工具能直接解锁吗
不能保证。项目的定位是"提供工具和信息辅助修复":它把 BMS 的数据读回来,是误触发还是真故障由你判断,具体的解锁操作依赖你拿到的协议信息。
烧录固件失败或浏览器连不上开发板
Web Serial 目前只在 Chrome 和 Edge 中可用,先换这两个浏览器再试;仍不行的话,可以直接使用 Releases 页面提供的 uno.hex / esp32.bin 预编译固件。
用 ESP32-C3 替代 Arduino Uno 会烧板吗
可以,作者用 SuperMini 测试过。但上拉电阻必须接3.3V 而不是 5V,否则会烧坏 GPIO;默认用 Pin 0 做 Enable、Pin 1 做 OneWire,想改可在 ArduinoOBI/platformio.ini 中修改 ESP_EN_PIN 和 ESP_OW_PIN。
只支持牧田电池吗
当前固件按 OneWire 协议实现,变量名和命令集(0x31、0x32、0x33、0xCC 等)对应牧田系电池,见 ArduinoOBI/src/main.cpp。如果你的电池包有 OneWire 信号线且协议兼容,就可以接入尝试。
还需要安装 Python 环境吗
不需要。旧版 Python/Tkinter 桌面应用已从仓库移除,现在从烧录固件到读取电池都在浏览器里完成。
进阶玩法:改引脚、加命令、移植新协议
- 换板子:ArduinoOBI/platformio.ini 预置了 uno、nano 和 esp32-c3-devkitm-1 三套构建环境,支持其他芯片只需增加一段 env 并调整 board 参数。
- 加新命令:ArduinoOBI/src/main.cpp 中的串口命令按 switch 分发,仿照 cmd_and_read_33、cmd_and_read_cc 的写法即可扩展新的读取指令。
- 验证接线:ArduinoOBI/lib/OneWire/ 内置了 OneWire 协议库,examples 目录里有 DS18x20 温度传感器示例,可借它先确认 OneWire 信号通断。
写在最后
一块 Arduino Uno 加两个电阻,就能搭出一台电池 BMS 信息读取器,帮你判断锁机电池到底是误判还是真坏了。建议先从烧录固件、读一次电池开始,拿到第一份数据后再对照常见问题慢慢深入。
【免费下载链接】open-battery-information项目地址: https://gitcode.com/GitHub_Trending/op/open-battery-information
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考