Skip to the content
PCBKitNew board
4 layers43.4 × 19.4 mmCANduino, the printed circuit board in 3D

CAN based digital speedometer for Alfa Romeo Giulietta

Size
43.4 × 19.4 mm
Copper layers
4
Thickness
4.69 mm
Parts
26
Nets
41
Pads
102
Tracks, vias
218, 32
Pours
1
Routed
Yes
KiCad
KiCad 5 (file 20210126)
Created
13 Jul 2021
Updated
14 Jul 2021

Overview

CANduino is an open-source printed circuit board by FletcherJ1, from the FletcherJ1/CANSpeedo repository on GitHub, published under the CC0-1.0 licence. It is a 4-layer board of 43.4 × 19.4 mm with 26 parts on 41 nets, routed with 218 tracks and 32 vias.

It is built around the ATMEGA16M1-MU, TPS2115AIPWRQ1 and ECS-160-8-33B-CTN-TR, with the MM5Z5V1T5G and SMBJ9.0CA-Q among its other parts. Its parts include 11 capacitors, 4 resistors, 3 ICs, 2 connectors and 1 diode. It belongs with the AVR (ATmega, ATtiny) boards of this library.

Main components

5

README

README.md

OBD Digital Speedometer

This project sparked from not having a digital speed readout on the dashboard of my car (Alfa Romeo Giulietta) when driving in 'Normal' and 'Dynamic' mode. This uses the OBD-II port to read the vehicle speed and then print the speed onto the radio message. This radio message is sent from the radio module to the dashboard and requires the 'Radio Repetition' setting in the dashboard to be enabled for the message to be displayed. This message is sent only when the car is on and is sent at a 2hz rate.

The end result of this is shown below while I was testing the display output:

Vehicle information

The CAN network used is a 50Kbps network and is defined as the CAN-B network on the car (pins 1 and 9 on the OBD-2 port).

The car it has been tested on has 16" wheels and is a 2011 model. I'm not sure if the wheel diameter affects the speed value provided by CAN so the variable SPEED_DIVIDER_MPH might need to be changed to suit other vehicles and wheel diameters.

Hardware

The hardware used is centered around an ATmega16M1 because it has an in-built CAN controller and works with the Arduino framework. It also helps keep the PCB as small as possible and keeps components count down.

There is a power switch for powering via either the car through the OBD port or via the ICSP header. This isn't really needed but added to make software development slightly easier.

The PCB is designed using Kicad 5.99 and is made to fit an OBD-2 case found on eBay.

OBD-2 Plug Picture

The PCB is a 4 layer design because it didn't cost any more than a 2 layer design from JLCPCB. PCB Design

This fits in the car and still allows for the diagnostic panel to fit over the plug when it is plugged in.

Data dumps

I've also included some data dumps (under the /Dumps folder) containing can information when the car is in various states. Feel free to use this information as desired to decode additional parts of the cars CAN data.

I also included a file in the dumps with additional information I found and some more decoded CAN messages. This might be confusing to read through but should give some ideas.

I found plotting the data with graphs, I used Flow CSV Viewer, quite helpful to find multi-byte variables as well as what the variable may represent based on how the data changes.

Libraries Used

Credits

Parts

26
QtyValueFootprintReferences
5100nFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC3, C4, C6, C12, C15
31uFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC1, C5, C13
212pFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC7, C11
2MountingHoleMountingHole:MountingHole_6mm_PadH2, H3
110KResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR4
110uFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC2
11RResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR1
150RResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR3
1700RResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR2
1ATMEGA16M1-MUSamacSys_Parts:QFN65P700X700X100-33NH1
1Conn_01x04Connector_PinHeader_1.27mm:PinHeader_1x04_P1.27mm_VerticalJ2
1Conn_02x03_Odd_Even_MountingPinConnector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalJ1
1ECS-160-8-33B-CTN-TRSamacSys_Parts:ECS160833BCTNTRY1
1MM5Z5V1T5GSamacSys_Parts:SODFL1608X70NZ1
1SMBJ9.0CA-QSamacSys_Parts:DIONM5127X229ND1
1TJA1050T_CM,118SamacSys_Parts:SOIC127P600X175-8NIC4
1TPS2115AIPWRQ1SamacSys_Parts:SOP65P640X120-8NIC1
1ZXTR2105FFQ-7Package_TO_SOT_SMD:SOT-23_HandsolderingU1

Questions

How big is the CANduino PCB?

It measures 43.4 × 19.4 mm and has 4 copper layers, 4.69 mm thick.

What parts does the CANduino use?

26 parts, built around the ATMEGA16M1-MU, TPS2115AIPWRQ1, ECS-160-8-33B-CTN-TR and MM5Z5V1T5G. 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 CANduino KiCad files?

From the FletcherJ1/CANSpeedo repository on GitHub, at the commit this page was made from: the board is Hardware/CANduino.kicad_pcb and its schematic Hardware/CANduino.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the CANduino design in my own project?

Its repository publishes it under the CC0-1.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers76.9 × 38.8 mmDjiFriend, the printed circuit board in 3D

    DjiFriend

    theloukou/djiFriend

    Device for managing DJI Mini/Mini2 batteries

    46 parts1
  • 4 layers94 × 94 mmImu panelized, the printed circuit board in 3D

    Imu panelized

    olin-electric-motorsports/olin-electric-motorsports

    OEM Monorepo

    1,072 parts14
  • 2 layers81 × 58.4 mmCAN Logger, the printed circuit board in 3D

    CAN Logger

    olin-electric-motorsports/AdvancedResearch

    2020 Advanced Research

    61 parts5GPL-3.0
  • 2 layers34 × 34 mmByteworker, the printed circuit board in 3D

    Byteworker

    Bytewerk/byteworker-kicad

    Our famous byteworker now available in Kicad

    65 partsCC-BY-SA-4.0
  • 2 layers65 × 49 mmAIR Control Board, the printed circuit board in 3D

    AIR Control Board

    olin-electric-motorsports/MK_III-Boards

    Kicad files for our boards

    77 parts4MIT
  • 2 layers65 × 55 mmAIR Control Board, the printed circuit board in 3D

    AIR Control Board

    olin-electric-motorsports/MKIV-Boards

    KiCad files for the boards on 2018-2019 car

    79 parts1
  • 2 layers59.2 × 59.2 mmBms core, the printed circuit board in 3D

    Bms core

    kitspace-test-repos/kicad6-file-collection

    65 partsMIT