A simple modchip to convert proprietary Future Motion BMS packets (RS485) to VESC BMS packets (CAN).
Connect your existing Future Motion BMS (in charge-only mode) to your VESC to display per-cell voltages, charge current, and temperatures to the controller as if a VESC Smart BMS was connected. A few notes on this project:
- Not all VESC BMS data nor its complete protocol/features are supported by this project. This project is NOT running vesc_bms_fw and instead utilizes the VESC CAN Protocol to update BMS values. This is similar to how
vesc_bms_fw
works but the complete BMS protocol is not implemented. - This project is based upon the reverse-engineering work from Owie. Check out the
lib/bms
directory for a modified version of the BMS communication library.
The goal of this porject was to create a simple and cheap (under $25) method of exposing BMS data inside of VESC. The current hardware setup requires only 2 components and some wire:
- ESP32-S3 Mini Development Board
- SN65HVD230 CAN Bus Transceiver
- Any CAN bus transceiver will work (i.e. TJA1050), the VD230 is just conveniently small and can be soldered directly onto the ESP32-S3 Mini. The ESP32 provides a ground to the board via one of its GPIOs to provide a clean soldering setup. Check out the picture below for soldering configuration
- CAN Controllers, like the MCP2515 and MCP2551, will NOT work without modification to the code. This project uses the ESP32's build in CAN controller and only requires a transceiver to work
- IRF540N N-Channel MOSFET
- This is used to wake the BMS from sleep. We have to connect the blue BMS wire (which is at VBAT) to GND
This project utilizes a similar trick that Owie does to receive RS485 packets over UART. This saves on cost and complexity during soldering.
A 3D-printed case is in the works to make a clean mounting solution in the electronics housing.
Upload the code using PlatformIO to the ESP32-S3 over USB before installing.
I plan to have an OTA upload system set up soon. My current plan is to utilize a CAN command to enable/disable a WiFi hotspot for OTA uploads. You can then just run a single lispBM command to send the CAN command from the lispBM REPL inside of VESC Tool.