
CAN485-dongle
Mehdi-Ldj/usb-can-rs485-dongle
CAN-485 diagnostic gateway — rev A hardware

Spy on hardware interactions
Can modbus tap is an open-source printed circuit board by reliablereefs, from the reliablereefs/can-modbus-tap repository on GitHub. It is a 2-layer board of 90 × 66 mm with 41 parts on 67 nets, routed with 569 tracks and 60 vias.
It is built around the ESP32-S3-WROOM-1-N8, ISO1042BDW and RFM-0505S, with the ADS1115IDGSR, AP2112K-3.3 and ISO1640BD among its other parts. Its parts include 15 resistors, 9 capacitors, 7 ICs, 3 diodes and 2 connectors. It belongs with the ESP32 boards of this library.
Listen-only probe for a 24 V accessory port that uses a USB-A shell. An ESP32-S3 records classic CAN frames, a collector stores them, and MODBUS RTU payloads inside those frames are decoded into request/response pairs and a register map.
The probe cannot transmit. The isolated CAN transceiver's TXD pin is tied to its logic supply, so the driver stays recessive, and the ESP32 TWAI controller runs in listen-only mode. Use it on equipment you are allowed to monitor.
The USB-A plug is not USB. Do not plug it into a computer, and do not use a normal USB cable between the equipment port and anything else. A 24 V pin in that shell will damage a USB host.
If the scope does not show CAN bias, stop. This board's controller only decodes classic CAN. An RS-485 MODBUS RTU pair needs a different transceiver.
can-modbus-tap/
docs/hardware.md board, pinout, isolation, BOM notes
docs/protocol.md capture record, upload JSON, MODBUS pairing
hardware/bom.csv
firmware/ ESP-IDF project for ESP32-S3
collector/ SQLite ingest, decode, and browser UIflowchart LR
port["Equipment port"] --> choke["Choke and TVS"]
choke --> iso["ISO1042 TXD tied high"]
iso --> esp["ESP32-S3 listen-only"]
v24["24 V divider"] --> adc["ADS1115"]
adc --> i2c["ISO1640"]
i2c --> esp
esp --> flash["Flash ring"]
esp --> col["Collector"]Requires ESP-IDF 5.3. The Wi-Fi SSID and collector URL are compile-time settings, so they stay out of the git tree.
cd firmware
idf.py set-target esp32s3
idf.py menuconfig # CAN MODBUS Tap
idf.py build flash monitorSet the SSID, password, and TAP_COLLECTOR_URL. Leave bitrate at 0 to scan 25 kbit/s through 1 Mbit/s. Set a fixed rate once the bus is identified. An empty SSID still records to the on-module flash ring.
The activity LED (GPIO2) stays on while frames arrive. GPIO5 is the TWAI transmit test point and is not routed to the transceiver.
cd collector
go run ./cmd/collector -listen 0.0.0.0:8080 -db data/tap.dbOpen http://127.0.0.1:8080/. Pages:
| Path | Contents |
|---|---|
/ | Raw CAN frames |
/modbus | CRC-valid MODBUS RTU payloads |
/transactions | Request paired with the next response, 500 ms window |
/map | Register addresses sorted by how often they appear |
/v1/frames.csv | Recent raw frames |
POST /v1/frames has no authentication. Run the collector on the lab network. Details are in docs/protocol.md.
cd collector && go test ./...| Qty | Value | Footprint | References |
|---|---|---|---|
| 5 | 100nF | C_0402_1005Metric | C2, C3, C4, C5, C8 |
| 4 | 4.7k | R_0603_1608Metric | R4, R5, R6, R7 |
| 3 | 10uF | C_0805_2012Metric | C1, C6, C7 |
| 2 | 10k | R_0603_1608Metric | R10, R11 |
| 2 | 22 | R_0603_1608Metric | R14, R15 |
| 2 | 5.1k | R_0603_1608Metric | R8, R9 |
| 1 | 12.0k | R_0603_1608Metric | R2 |
| 1 | 120 | R_0603_1608Metric | R13 |
| 1 | 1k | R_0603_1608Metric | R3 |
| 1 | 1uF | C_0402_1005Metric | C9 |
| 1 | 330 | R_0603_1608Metric | R12 |
| 1 | 91.0k | R_0603_1608Metric | R1 |
| 1 | ACT45B-510-2P | ACT45B-510-2P | L1 |
| 1 | ADS1115IDGSR | MSOP-10_3x3mm_P0.5mm | U4 |
| 1 | AP2112K-3.3 | SOT-23-5 | U7 |
| 1 | AP7361C-33E-13 | SOT-223-3_TabPin2 | U6 |
| 1 | BOOT | SW_PUSH_6mm | SW1 |
| 1 | BZT52C3V6 | D_SOD-123 | D2 |
| 1 | ESP32-S3-WROOM-1-N8 | ESP32-S3-WROOM-1 | U1 |
| 1 | ISO1042BDW | SOIC-16W_7.5x10.3mm_P1.27mm | U2 |
| 1 | ISO1640BD | SOIC-8_3.9x4.9mm_P1.27mm | U3 |
| 1 | LED | LED_0603_1608Metric | D3 |
| 1 | NUP2105LT1G | SOT-23 | D1 |
| 1 | RESET | SW_PUSH_6mm | SW2 |
| 1 | RFM-0505S | RECOM_RFM-0505S | U5 |
| 1 | TERM | PinHeader_1x02_P2.54mm_Vertical | JP1 |
| 1 | TWAI_TX | TestPoint_Pad_D1.5mm | TP1 |
| 1 | USB-A plug | USB3_A_Plug_Wuerth_692112030100_Horizontal | J1 |
| 1 | USB-C | USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_Horizontal | J2 |
It measures 90 × 66 mm and has 2 copper layers, 1.6 mm thick.
41 parts, built around the ESP32-S3-WROOM-1-N8, ISO1042BDW, RFM-0505S and ADS1115IDGSR. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the reliablereefs/can-modbus-tap repository on GitHub, at the commit this page was made from: the board is hardware/kicad/can-modbus-tap.kicad_pcb and its schematic hardware/kicad/can-modbus-tap.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask reliablereefs before reusing the design.

Mehdi-Ldj/usb-can-rs485-dongle
CAN-485 diagnostic gateway — rev A hardware





Nicolboy/KICAD-C2000-powershield
Shield d'isolation, alimentation et interconnexion pour TMS320 C2000, conçu sous KiCad 10.

Protocentral/protocentral_easyiso_hardware
ProtoCentral easyISO isolated Qwiic adapter — hardware design files (CERN-OHL-P v2)

cherry-embedded/HSCanT-hardware
HSCanT is a USB to 4-channel CAN FD tool designed based on the HPM5321 chip.