When working on automotive or industrial automation projects, you eventually hit a wall. For me, that wall was budget CAN modules dropping frames, crashing at higher speeds, or outright refusing to cooperate with the modern CAN FD standard.
Instead of wasting time debugging unreliable hardware, I decided to take matters into my own hands. That's how my custom development board based on the new ESP32-C5 microcontroller and the rock-solid ISO1044 isolated transceiver was born.
π οΈ Architecture and Hardware: What's Under the Hood?My main goal was to create a "Swiss Army knife" for engineers and hobbyists working with CAN buses. The board had to be fast, stable, and flexible regarding power supply.
Here are the key features I managed to integrate on a single PCB:
ESP32-C5 at its core: The latest chip from Espressif, providing great performance and native support for modern Wi-Fi standards, which was crucial for wireless communication.
- ESP32-C5 at its core: The latest chip from Espressif, providing great performance and native support for modern Wi-Fi standards, which was crucial for wireless communication.
ISO1044 Transceiver (5 Mbps): Ensures galvanic isolation and allows for flawless, stable operation in the CAN FD standard with speeds up to 5 Mbps. No more dropped frames.
- ISO1044 Transceiver (5 Mbps): Ensures galvanic isolation and allows for flawless, stable operation in the CAN FD standard with speeds up to 5 Mbps. No more dropped frames.
Dual CAN interface: The board natively supports 2 independent CAN channels, allowing you to bridge networks, act as a gateway, or monitor multiple buses simultaneously.
- Dual CAN interface: The board natively supports 2 independent CAN channels, allowing you to bridge networks, act as a gateway, or monitor multiple buses simultaneously.
Real-Time Clock (RTC): A dedicated onboard RTC ensures that every single frame logged offline has an exact, absolute timestamp. This is an absolute game-changer for analyzing data logs later on.
- Real-Time Clock (RTC): A dedicated onboard RTC ensures that every single frame logged offline has an exact, absolute timestamp. This is an absolute game-changer for analyzing data logs later on.
SD Card Slot: Working perfectly with the RTC, this allows for massive offline data logging of bus traffic without needing a PC attached.
- SD Card Slot: Working perfectly with the RTC, this allows for massive offline data logging of bus traffic without needing a PC attached.
Dual Power Options: You can power it directly from a 12V automotive or industrial setup, or conveniently at your desk via USB-C.
- Dual Power Options: You can power it directly from a 12V automotive or industrial setup, or conveniently at your desk via USB-C.
USB-C Programming: The same USB-C port is used directly for flashing the chip.
- USB-C Programming: The same USB-C port is used directly for flashing the chip.
DIP Switch Configuration: Physical switches allow for instant operating mode changes (e.g., listen-only mode, speed change, toggling the termination resistor) without having to re-flash the microcontroller.
- DIP Switch Configuration: Physical switches allow for instant operating mode changes (e.g., listen-only mode, speed change, toggling the termination resistor) without having to re-flash the microcontroller.
Having stable hardware with built-in Wi-Fi on the ESP32-C5, it would be a sin to keep it tethered to a USB cable all the time.
During hardware testing and development, I simultaneously wrote a dedicated Python application that allows full control of the board over a local network. No more sitting with a laptop in awkward positions inside a car. You hook the board up to the bus and 12V power, and you can handle all the listening, logging, and sending of CAN FD frames right from your desk via Wi-Fi.
The app allows you to:
Monitor CAN/CAN FD frames in real-time.
- Monitor CAN/CAN FD frames in real-time.
Manage two CAN channels simultaneously.
- Manage two CAN channels simultaneously.
Filter and analyze network traffic.
- Filter and analyze network traffic.
Send custom messages (great for reverse engineering and testing).
- Send custom messages (great for reverse engineering and testing).
Building my own board proved once again that investing in good hardware design (especially galvanic isolation and a proper transceiver like the ISO1044) pays off in hundreds of saved software debugging hours.
This project is fully open-source! I've uploaded the entire source code for the ESP32-C5 and the Python client application to my GitHub.
https://github.com/SebastianS85/ESP32_C5_gateway_logger/graphs/traffic
If you work with CAN FD buses and are also tired of cheap, unreliable modules, I invite you to test it out, report Issues, and contribute via Pull Requests. I'll gladly answer any questions in the comments!








Comments