When driving your electric car the knowledge of the real state of charge (SoC) is essential. The usable range is directly related to the SoC of the battery. Some EVs - like the Smart ED - will hide some Ah for back-up and the displayed SoC is more pessimistic than the real charge would suggest.
In my ED_BMSdiag project I developed a diagnostics tool for the Smart electric drive EV based on an Arduino UNO with a CAN bus shield. Data is sent via a serial USB connection to a laptop.
In every day use this is not a practical use case, so I searched for an easy solution to display the data on a mobile phone. The Blynk app is a great way for a very flexible dashboard on iOS and on Android phones.
Blynk is able to use a Bluetooth Low Energy connection for data transmission. But adding a BLE interface to the Arduino would be only a small step forward. So I decided to develop my own BLE dongle to connect to the OBD port of the car. A system I can leave plugged in while driving and to be energy efficient to stay without depleting the 12V battery. Therefore the RFduino microcontroller is the perfect fit as it is small, very efficient and stable. It runs a well developed RTOS and can be programmed with the Arduino IDE. It has excellent ultra low power features for a deep sleep of the module.
You can display the content you need and arrange different widgets to show the values. Using gauges, the value displays and graphs. The app gives you the freedom to select the data you really need.
Every widget can get it's own polling interval. So you can change the readout frequency of the values without altering the firmware of the dongle. This is perfect for creating a special dashboard when you want to monitor something, e.g., the voltage of the traction battery or the amps the battery has to deliver.
- The PCB: You can use the Eagle CAD files for ordering the PCB at various online manufacturing services. You will find the board on OSH Park and can order it there. As an alternative a local FabLab or MakerSpace may has a rapid prototyping mill for PCBs you could use. I made my prototype this way.
- The parts: get the complete bill of materials (BOM) from my GitHub-repo. Most parts are stock articles from common distributors.
- You need skills in soldering SMD parts and a good soldering station (the CAN controller is fine pitch).
- Install the Arduino IDE and then follow the instructions for RFduino installation.
- Download the Repo and copy it to your Arduino folder. Find detailed instructions in my ED_BMSdiag project, as it is very similar.
- Using Blynk is described in the Wiki. You can clone my basic project and then modify it. The access token must be copied into the program code and is then compiled for the RFduino.
- Connect the USB to UART adapter and upload the program.
- Remove the USB programmer and plug the dongle into the OBD port of the car. Start Blynk app and connect to the dongle (instructions here).
- Currently only live data will be displayed. I will try to port the complete features of the ED_BMSdiag project, so you can use Blynk to get all information about your vehicle.
- The module currently fits into a OBD2 cable housing, but the UART connector will protrude the case. I will create a case for the dongle, you can print with a 3D printer.
- The deep sleep feature is not yet implemented.
Happy coding!
Comments