esp-idf-CANBus-Monitor
esp-idf-CANBus-Monitor copied to clipboard
Monitor Canbus traffic
esp-idf-CANBus-Monitor
Monitor Canbus traffic.

Background
Windows application for monitoring CANBus is published here.
This tool is designed to be used with this hardware.

So, I made the hardware side with ESP32.
Application structure
+-------------+ +-------------+ +-------------+ +-------------+
| Windows | | USB-TTL | | | | SN65HVD23x |
| Application |<--(USB)-->| Converter |<--(TTL)-->| ESP32 |<--(TWAI)-->| CAN-BUS |<--(CAN BUS)-->CAN Network
| | | | | | | Transceiver |
+-------------+ +-------------+ +-------------+ +-------------|
Software requirement
ESP-IDF V4.4/V5.x.
ESP-IDF V5.1 is required when using ESP32C6.
Hardware requirements
-
Windows PC
Windows applications can be downloaded from here. -
USB-TTL Converter
ESP32 development board has USB.
This USB connects to Linux and is used for writing the firmware and displaying the LOG.
Need converter to connect with Windows PC.
| Converter | ESP32 | ESP32-S2/S3 | ESP32-C3/C6 | ||
|---|---|---|---|---|---|
| RXD | -- | GPIO4 | GPIO17 | GPIO4 | (*1) |
| TXD | -- | GPIO5 | GPIO18 | GPIO5 | (*1) |
| GND | -- | GND | GND | GND |
(*1) You can change using menuconfig. But it may not work with other GPIOs.
-
SN65HVD23x CAN-BUS Transceiver
SN65HVD23x series has 230/231/232.
They differ in standby/sleep mode functionality.
Other features are the same. -
Termination resistance
I used 150 ohms.
Wireing
| SN65HVD23x | ESP32 | ESP32-S2/S3 | ESP32-C3/C6 | ||
|---|---|---|---|---|---|
| D(CTX) | -- | GPIO21 | GPIO19 | GPIO0 | (*1) |
| GND | -- | GND | GND | GND | |
| Vcc | -- | 3.3V | 3.3V | 3.3V | |
| R(CRX) | -- | GPIO22 | GPIO20 | GPIO1 | (*1) |
| Vref | -- | N/C | N/C | N/C | |
| CANL | -- | To CAN Bus | |||
| CANH | -- | To CAN Bus | |||
| RS | -- | GND | GND | GND | (*2) |
(*1) You can change using menuconfig. But it may not work with other GPIOs.
(*2) N/C for SN65HVD232
Test Circuit
+-----------+ +-----------+ +-----------+
| Atmega328 | | Atmega328 | | ESP32 |
| | | | | |
| Transmit | | Receive | | 21 22 |
+-----------+ +-----------+ +-----------+
| | | | | |
+-----------+ +-----------+ | |
| | | | | |
| MCP2515 | | MCP2515 | | |
| | | | | |
+-----------+ +-----------+ | |
| | | | | |
+-----------+ +-----------+ +-----------+
| | | | | D R |
| MCP2551 | | MCP2551 | | VP230 |
| H L | | H L | | H L |
+-----------+ +-----------+ +-----------+
| | | | | |
+--^^^--+ | | +--^^^--+
| R1 | | | | R2 |
|---+-------|-------+-------|-------+-------|---| BackBorn H
| | |
| | |
| | |
|-----------+---------------+---------------+---| BackBorn L
+--^^^--+:Terminaror register
R1:120 ohms
R2:150 ohms(Not working at 120 ohms)
Installation
git clone https://github.com/nopnop2002/esp-idf-CANBus-Monitor
cd esp-idf-CANBus-Monitor
idf.py set-target {esp32/esp32s2/esp32s3/esp32c3/esp32c6}
idf.py menuconfig
idf.py flash
Configuration
CAN Setting

UART Setting

How to use
- Add ESP32 to CanBus.
- Write firmware to ESP32.
- Connect ESP32 and Windows PC using USB-TTL Converter.
- Start a Windows application.
Windows application User manual
See here.
Official document is here.
Reference
https://github.com/nopnop2002/esp-idf-can2http
https://github.com/nopnop2002/esp-idf-can2mqtt
https://github.com/nopnop2002/esp-idf-can2usb
https://github.com/nopnop2002/esp-idf-can2websocket
https://github.com/nopnop2002/esp-idf-can2socket