Generic-Chinese-Bluetooth-BMS-communication-protocol

Thanks for all the great work. I'm trying to learn all I can about these BMS boards and having trouble sending data to the BMS
Can someone tell me what software they are using to send the serial packets, and maybe provide and example.

Thanks

Steve
 
I realize this will probably depend on the board, but does anyone have experience with how to manage the quiescent current draw of the bluetooth dongle? Is it tapping off the main voltage / is it protected from over discharge? How much does the dongle draw when idle?

Right now my plan is just to pull the Vcc off the dongle and add a switch to also be able to reset the dongle easier. But I'm not sure how much caution I should take.

Hoping to get batteries in a few weeks to test the 24S version of this BMS that I bought a couple weeks ago.
 
Nice work...

I'm interested in probing the Bluetooth BMS on my EM3EV battery. Apparently, they use a BMS from this supplier http://en.d-powercore.com/. The only way to tell is that this supplier's android app looks very similar to the EM3EV supplied app.

To that end, what hardware/software did you use to capture the data...can you elaborate a bit on the approach to getting the information. I'm good with trying it on my own, just need a bit of direction to get going.

ron
 
whereswally606 said:
I like this a lot. I just installed a 10s one on a friends bike. would be nice to have an Arduino with an oled display for the voltages rather than a phone on the handle bars.

thanks for posting.

I actually just completed a project very similar to what you are talking about. I programmed an Arduino nano to read info from the JBD BMS and send that data to a 20x4 LCD display, not quite OLED but gets the job done. Here's a link to my post which has some information about the project and a link to my GitHub repository with the necessary Arduino and EAGLE files
 
Kin said:
I realize this will probably depend on the board, but does anyone have experience with how to manage the quiescent current draw of the bluetooth dongle? Is it tapping off the main voltage / is it protected from over discharge? How much does the dongle draw when idle?

Right now my plan is just to pull the Vcc off the dongle and add a switch to also be able to reset the dongle easier. But I'm not sure how much caution I should take.

Hoping to get batteries in a few weeks to test the 24S version of this BMS that I bought a couple weeks ago.

When developing this project, I initially powered my Arduino off the VCC of the UART port on the BMS that the Bluetooth dongle connects too. Although it worked, I found that a spot on the BMS got VERY hot. Upon further inspection, it looked like the source of heat was a linear voltage regulator, which would be fine for just a small Bluetooth dongle, but I think my Arduino/LCD screen was drawing too much power for it. I asked about this on this thread and got the following response:Screen Shot 2019-04-24 at 12.23.05 AM.png
Eventually I decided to power the Arduino system with a DC/DC converter off the battery pack so that it was protected by the BMS. Although I haven't tested it myself, I'm taking his word for it and believe that the VCC power is not protected by the BMS. I plugged the Bluetooth dongle in and found that it draws about 60uA.
 
Its been a while since I posted to this thread, amazing how time flies.

Thanks @Aadamz5 for the spreadsheet, I will be looking at the calibration next, there is some interesting info on the calibration registers in that spreadsheet.

I have written a little Python program to read and write the config registers on theses BMS boards. It is called bmstest.py and has bmscore.py as a dependency. It also needs the register template file bms.json which contains information on what the registers are and how to code and decode the information from the BMS board.

You can either download these three files from github from the link in my signature or use git to download the whole project.

To run type 'python3 bmstest.py' and follow the prompts. If you are working on the registers on a BMS pcb you must first load the config data from the board to memory with command (1) Load all config data from BMS to memory.

Simon
 
bres55 said:
There may be some useful information here in relation to this BMS device.
https://github.com/bres55/Smart-BMS-arduino-Reader

The handshaking was the tricky part. Not sure I fully understoood it, but it worked.

screen%20shot.png

A very nice surprise !!! Thank you very much bres55 for this Arduino sketch to read Chinese BMS :D
Starting from your sketch for Mega or Uno, I made a version for an ESP8266 variant.
The one I used is a ESP8266 DSTIKE DEAUTHER (+-13Euro) board with onboard OLED & Wifi.

Possibilities are endless now ... sending BMS info via Wifi to MQTT to OPENHAB or other domotica-platform, reading BMS info from OLED, storing values in ESP's EEPROM, etc.

My only worry is that these ESP boards work on 3V3 only and I'm not sure what level is coming from the BMS ? ... I guess 5V which would harm the ESP, but so far it is working without level shifting. (I have not yet tried to send commands to the BMS, only reading for now...)

BTW, my BMS is 14S and your sketch (made for 8S) reads out the 14 cells without modifications.
(I only had to change print_binary(BalanceCode, 14); from 8 to 14 in my case, but that was easy)

Again thanks a lot.
If interested I can share my sketch as well (after it is cleaned up a little bit ...).
Grtz,
DirkB
 
DirkB19 said:
A very nice surprise !!! Thank you very much bres55 for this Arduino sketch to read Chinese BMS :D
Starting from your sketch for Mega or Uno, I made a version for an ESP8266 variant.
The one I used is a ESP8266 DSTIKE DEAUTHER (+-13Euro) board with onboard OLED & Wifi.

Possibilities are endless now ... sending BMS info via Wifi to MQTT to OPENHAB or other domotica-platform, reading BMS info from OLED, storing values in ESP's EEPROM, etc.


Grtz,
DirkB

Hi, did u manage to get a working unit out of this? Currently struggling with limited bluetooth range, so 'relaying' all this useful bms info to esp32 would be super useful..

If u have any feedback or any other details to share, that would be awesome!

Final objective would be to get bms data (like cell levels, voltage sag) to a remote display and see info from distance.

So if esp32 could directly connect to wifi or mobile network to relay info there, this would be a win win situation as I could just monitor data using android phone, bypassing the bluetooth app.
 
DirkB19 said:
bres55 said:
There may be some useful information here in relation to this BMS device.
https://github.com/bres55/Smart-BMS-arduino-Reader

The handshaking was the tricky part. Not sure I fully understoood it, but it worked.

screen%20shot.png

A very nice surprise !!! Thank you very much bres55 for this Arduino sketch to read Chinese BMS :D
Starting from your sketch for Mega or Uno, I made a version for an ESP8266 variant.
The one I used is a ESP8266 DSTIKE DEAUTHER (+-13Euro) board with onboard OLED & Wifi.

Possibilities are endless now ... sending BMS info via Wifi to MQTT to OPENHAB or other domotica-platform, reading BMS info from OLED, storing values in ESP's EEPROM, etc.

My only worry is that these ESP boards work on 3V3 only and I'm not sure what level is coming from the BMS ? ... I guess 5V which would harm the ESP, but so far it is working without level shifting. (I have not yet tried to send commands to the BMS, only reading for now...)

BTW, my BMS is 14S and your sketch (made for 8S) reads out the 14 cells without modifications.
(I only had to change print_binary(BalanceCode, 14); from 8 to 14 in my case, but that was easy)

Again thanks a lot.
If interested I can share my sketch as well (after it is cleaned up a little bit ...).
Grtz,
DirkB

Hello!
It is very good to read this. I am looking for something like this: Send info via MQTT to Home Assistant. Do you have any progress? Could you share your code? (My coding skills are limited but I can try)

Thank you in advanced.


And thanks to the rest of the guys working on this too!
 
Greetings,

just found this forum and been having a good read, I have been repairing one of these BMS's over the last few days.
it seems some command from the mobile app shut it down discharge FET turned off, then was no longer able to connect up even direct to PC.

not really sure what the cause was but the fix for me was to pull it apart and attach and attach the FTTI i/o directly to the other side (Atmega side) of the opto idolaters on the BMS.

In my travels I extracted the firmware and EEPROM data of the BMS and flashed it onto an Arduino nano as I first suspected the worst and thought I might need to load some custom firmware. Anyway connected the Arduino to my PC and it now thinks its a BMS board :)

Hoping to did a little deeper know it find the commands sent by the PC app to download and upload the EEPROM data
 
I know this is an old post, but, anyone using these BMSs ... I wrote some utilities for them to make managing them from Linux a bit easier

See: https://github.com/sshoecraft/jbdtool

And how to build a Wi-Fi module for them: https://diysolarforum.com/threads/jbd-bms-wi-fi-module.17252/
 
I know I'm late to this party, but. I just purchased one of these BMSs (without their blueTooth module) from Battery Hookup for 16s lifeP04 DIY build. I do Arduino/ESP32 stuff, so have a bluetooth module.
My question: What or how to determine the pinout for BlueTooth module connection??
Thanks for any help.

P.S. Just realized there is a link above for Wi-Fi module connection, might do that instead. But still need the pinouts
 
Back
Top