Skip to content
ProjectsDigital & Software Systems

ChargeMate

EV charging planner reading live battery state over CAN bus

Image needed

/images/chargemate/obd-setup.webp

Peugeot iOn parked in a carport, the car ChargeMate reads over Bluetooth OBD-II

obd-setup.webp
Live battery state read from the car's CAN bus over a Bluetooth serial link.
Context
Programming Intelligent Vehicles and Mobile Applications, DTU
Year
2023
Role
Software developer
Team size
2
Tools
Python · tkinter · OBD-II · CAN bus · Bluetooth serial
Contribution
Team of 2, wrote all software: OBD-II, threading and charge planning

A desktop application that reads live battery state from a Peugeot iOn over a Bluetooth serial OBD-II connection to the car's CAN bus, and then computes which days of the week to charge in order to keep the state of charge inside the 30–80% band.

The work

The application reads the live battery state from the car itself rather than from a manual entry, and it then computes which days of the week to charge in order to keep the state of charge inside the 30–80% band, since this is the range where lithium battery degradation is lowest. Data acquisition runs on a separate thread, which means that the interface stays responsive while the car is being polled.

What I built

I wrote the software side, being the serial OBD-II communication with the car's CAN bus, the threading, and the planning logic itself, while the project was carried out with one other student.

What testing changed

Usability testing led to reordering the control panel and adding an explicit generate plan action, since users did not reliably understand that the plan updated on its own. Here it is worth noting that the change was not to the algorithm at all, and instead to making the moment of output visible, which seems to be a fairly common outcome when a tool computes something quietly in the background.

Image needed

/images/chargemate/hero.webp

Desktop application window showing live battery charge read from the car over OBD-II

hero.webp
The planner keeps state of charge inside the 30–80% band across the week.
Image needed

/images/chargemate/interface.webp

Charging planner window with a day-by-day trip plan and a generate plan button

interface.webp
Usability testing moved the controls and added an explicit "generate plan" action.
Image needed

/images/chargemate/flow-diagram.webp

Software flow diagram of the app: threading, serial commands, and the charge-planning logic

flow-diagram.webp
The threading model that keeps the interface responsive while OBD-II data is read.