

CANMCU
- Size
- 24.4 × 33 mm
- Copper layers
- 4
- Thickness
- 1.6 mm
- Parts
- 35
- Nets
- 42
- Pads
- 149
- Tracks, vias
- 262, 30
- Pours
- 4
- Routed
- Yes
- KiCad
- KiCad 5 (file 20171130)
- Created
- 16 Dec 2023
- Updated
- 12 Feb 2026
Overview
CANMCU is an open-source printed circuit board by f-zhuk, from the f-zhuk/CAN repository on GitHub. It is a 4-layer board of 24.4 × 33 mm with 35 parts on 42 nets, routed with 262 tracks and 30 vias.
It is built around the MCP2551-I/SN-HG and 1N4148WS. Its parts include 11 capacitors, 9 resistors, 6 diodes, 3 ICs and 3 connectors. It belongs with the PIC boards of this library.
Main components
2README
README.mdCAN
General description
The work is in progress and is currently not ready for real-life application.
This repository contains hardware, firmware, and software dedicated to the creation of custom CANopen systems for vehicles.
Such custom systems could fit old cars with heavily damaged harnesses and vehicles that do not have electronic equipment by default, for example, boats, kayaks, and bicycles.
Hardware
The complete system should consist of multiple functional blocks. Blocks should be as cheap and simple as possible while implementing complete functions like combination switch assembly, left tail light assembly, and door controls.
Each functional block should be designed around a unified MCU module and simple interconnection boards to adapt signals from the MCU module to the systems of the block.
Interconnection boards may provide 24LC I2C EEPROM memory for identification and non-volatile parameter storage.
MCU
MCU module should be self-sufficient and electrically ready for insertion in the CAN bus system. To achieve this, the MCU module has a power supply converter and CAN driver aside from the controller.
For the first prototype, the PIC18 family was selected. PIC18F83K26 has a built-in CAN periphery and a reasonable price.
MCU module has +12V power input, +5V power input/output, CAN, UART, 8xGPIO(PC7:PC0)
USB-UART
Most important interconnection board. It provides a USB to UART bridge to provide a simple debug interface.
USB-UART board is built with MCP2200. It is connected not only through UART but also 5xGPIO. Additionally, 24LC16 I2C EEPROM memory is connected to C6 and C7. C5 is connected to the bus termination control.
Firmware
Heavily updated code described in AN945. The application note code was written for an older MCU. PIC18F83K26AN945 is not supported by the compiler the code was written for and the code is not compatible with the new compiler.
AN945 default config:
ADC is on (probably unused)
PORT D is all output (probably unused)
PORT B pin 5 is bit 0 of TPDO1, pin 4 is bit 1
State of PORTB pins 4 and 5 compared to their states on previous DemoProcessEvents() call, change, rise and fall events detected and distinguished, written to OD
Dictionary object 0x6005subondex 1 (uIOinIntEnable) bits 0 and 1
Async transmission for TPDO1 by default
PDO transmission type could be changed by writing to TPDO1 subindex 2
Software
The software is written in Python.
Parts
35| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | 0.1u | Capacitor_SMD:C_0603_1608Metric | C1, C4, C5, C6 |
| 4 | 10u | Capacitor_SMD:C_1206_3216Metric | C8, C9, C10, C11 |
| 3 | 20p | Capacitor_SMD:C_0603_1608Metric | C2, C3, C7 |
| 2 | 0 | Resistor_SMD:R_0603_1608Metric | R2, R4 |
| 2 | 47k | Resistor_SMD:R_0603_1608Metric | R1, R6 |
| 2 | 60 | Resistor_SMD:R_0603_1608Metric | R3, R5 |
| 2 | Conn_02x10_Odd_Even | Connector_PinHeader_2.54mm:PinHeader_2x10_P2.54mm_Vertical_SMD | J1, J2 |
| 2 | D_Schottky | Diode_SMD:D_SMA | D3, D5 |
| 1 | 10k | Resistor_SMD:R_0603_1608Metric | R8 |
| 1 | 15u | Inductor_SMD:L_Bourns_SRN6045TA | L1 |
| 1 | 1N4148WS | Diode_SMD:D_SOD-323 | D2 |
| 1 | 300 | Resistor_SMD:R_0603_1608Metric | R9 |
| 1 | 52.3k | Resistor_SMD:R_0603_1608Metric | R7 |
| 1 | Conn_01x06 | Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical | J3 |
| 1 | Crystal_GND24 | Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm | Y1 |
| 1 | D_TVS_x2_AAC | Package_TO_SOT_SMD:SOT-23 | D1 |
| 1 | D_Zener | Diode_SMD:D_SMA | D4 |
| 1 | LED | LED_SMD:LED_0603_1608Metric | D6 |
| 1 | MCP16331CH | Package_TO_SOT_SMD:SOT-23-6 | U3 |
| 1 | MCP2551-I-SN | Package_SO:SOIC-8_3.9x4.9mm_P1.27mm | U2 |
| 1 | PIC18F25K83-xSO | Package_SO:SOIC-28W_7.5x17.9mm_P1.27mm | U1 |
| 1 | Polyfuse | Fuse:Fuse_1206_3216Metric | F1 |
Questions
How big is the CANMCU PCB?
It measures 24.4 × 33 mm and has 4 copper layers, 1.6 mm thick.
What parts does the CANMCU use?
35 parts, built around the MCP2551-I/SN-HG and 1N4148WS. 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.
Where can I download the CANMCU KiCad files?
From the f-zhuk/CAN repository on GitHub, at the commit this page was made from: the board is CANMCU/Test.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Can I use the CANMCU design in my own project?
Its repository states no licence, so its author keeps all rights: ask f-zhuk before reusing the design.
More from f-zhuk/CAN
2- 2 layers65 × 100 mm

- 2 layers58.4 × 33 mm

Similar boards
- 4 layers100 × 100 mm

STM32Inverter
Zychlix/Inverter32
An open source, open hardware plug'n'play 3 phase motor inverter design. It
154 parts4 - 4 layers100 × 50 mm

- 2 layers67.3 × 54 mm

Jeep radio
latonita/jeep-canbus
Projects around CAN BUS in Chrysler Jeep - VES enabler, other small features
52 parts30MIT - 2 layers120 × 100 mm

Root
GonzaCerv/noah-hardware
This repo contains all the hardware description for the Noah project. Here lies 3D models, electronics PCB and Firmware software of the robot.
127 parts28MIT - 4 layers115 × 78 mm

- 4 layers103 × 82.4 mm

- 2 layers

- 4 layers77.6 × 30.1 mm
