Problem & Context
The legacy system’s PCBs communicate exclusively over a Controller Area Network (CAN) bus, which carries system state, sensor values, and other parameters. However, there was no simple way to access this data being transmitted back and forth between the systems PCBs. Creating a wireless CAN module would enable new functionality such as real-time debugging, peripheral control, modular subsystem design, and potential remote firmware updates-without altering existing firmware.
Scope of Work
- Designed and prototyped a wireless CAN module using development boards, jumper wires, and breadboards before migrating the design to a custom PCB in KiCAD.
- Implemented firmware on an ESP32 to read and decode CAN messages, handle peripheral control, and host a wireless access point (AP).
- Developed and Android application (Kotlin) for Kindle tablet to connect to the module, parse JSON messages, and display human-readable data from the systems CAN bus.
Technical Approach
Determined the nonstandard CAN bus baud rate on the PIC microcontrollers by reviewing the source code in MPLAB and verifying the calculated value using a logic analyzer configured to the rate.
Integrated an external MCP2515 CAN controller and a 12MHz crystal oscillator to generate the precise clock signal required for bus synchronization.
Built and tested firmware in ESP-IDF (VS Code), decoding CAN frames and mapping signal data to system state variables.
Packaged decoded values into JSON objects, broadcast over Wi-Fi from the ESP32 acting as an AP.
Created an Android companion app to connect via Wi-Fi, receive JSON messages, and display parsed system diagnostics in a user-friendly interface.
Designed a custom PCB with integrated CAN transceiver, ESP32, USB-C interface, and GPIO screw terminal breakouts for connecting external peripherals.
Technical diagram or schematic would be displayed here
Results
Project results visualization
The module successfully reads real-time CAN messages and broadcasts them wirelessly for diagnostic review.
ESP32 firmware includes basic control logic to toggle peripheral outputs based on “System State” signals.
Any device can now connect to the ESP32’s AP which expands the potential of the legacy system. Other wireless modules can be added, which feed data to the legacy system and adds overall functionality.
The Android app currently displays live CAN data; future iterations will expand functionality for configuration, control, and automated reporting. There is even the possibility to perform legacy system firmware updates through this app now.