ESP32 CAN Bus Shield


Introducing the ESP32 CAN Shield, now in its latest iteration (version 1.2)  equipped with a built-in OBD2 pins breakout! This development kit boasts a CAN transceiver, OBD2 plug, a 3.3V buck converter and a selectable CAN bus Read-Only mode.

Compatible with the 30 pin ESP32 DevKit V1 version ONLY. Add it to your cart here or get it from Amazon*, AliExpress* or your favourite electronic store.

What is included: the shield, 2x males headers & an OBD2 plug. If you require the XH2.54 connector instead of the OBD2, please leave a note on the checkout page.

Need an enclosure? click here

Availability: In stock

SKU: MDY01237 Category:

This is a custom, machine assembled, CAN shield designed to fit the 30 pin ESP32 DevKit1 board version. It is equipped with a CAN transceiver. This shield can operate with power ranging from 7 volts to 15.5 volts, which means you can connect it directly to a car battery thanks an efficient buck converter.


The shield complements the ESP32 CAN controller by adding a CAN transceiver offering:

  • Data Rates: up to 1 Mbps
  • Compatible With ISO 11898-2
  • Cross-wire protection
  • Over temperature (thermal shutdown) protection
  • EMI and ESD bus protection using NUP2105


The shield can be efficiently powered by 12V automotive source through its onboard buck converter, offering:

  • Max Input Voltage:
    • without enabling the voltage divider: 24 Volt
    • with the voltage divider enabled: 15.5 Volt
  • Max Input Current: 2 Amp
  • Frequency: 570 kHz
  • Outputs 3.3V to the ESP32 board
  • Overvoltage transient protection
  • Thermal shutdown protection

120Ω & ADC Features

By default, the shield comes with a voltage divider on GPIO32 and a 120Ω CAN termination resistor disabled. These features can be activated by soldering solder-jumpers on the shield, labeled ‘ADC D32’ and ‘CAN 120’ respectively.


The shield includes three LEDs. The first is a Red LED, which is always on when the shield is powered. The second and third LEDs are Blue and Green and are connected to GPIO26 and GPIO27 for general usage.


The shield offers two operational modes: RW and R. Toggle between these modes using a physical switch connected to the CAN transceiver:

    • RW mode: the transceiver is active, allowing the shield to Read and Write to the CAN bus. The Rs pin is connected to ground through a 10kΩ, and the driver boasts a slew rate of ~15 V/μs.
    • R mode : The transceiver enters a low-current standby mode, switching off the driver while keeping the receiver active. In this mode, the shield can only Read from the CAN bus and cannot write to it. Rs is connected to 3.3V.


esp32 can bus wiring
  • Car’s CAN High to CAN-High
  • Car’s CAN Low to CAN-Low
  • Car’s Power Source to Power-12V
  • Car Ground to Power-Gnd


ESP32 Dev Kit 1 CAN Shield



You have the option to code the ESP32 directly with:

  • Espressif IoT Development Framework – TWAI (Two Wire Automotive Interface) [Advanced]
  • Arduino using one of the following:

Reminder: Ensure to correctly assign pins for your CAN library: use GPIO05 for CAN_RX and GPIO04 for CAN_TX.

Arduino [ESP32-CAN sample code]


Changes since v1.0

  • Version 1.0: the original shield
  • Version 1.1: added a voltage divider on GPIO32, a 120Ω CAN termination resistor, and a physical toggle switch enabling the CAN transceiver to toggle between “Listen-only” and “Do-Not-Transmit” modes.
  • Version 1.2 (current): added an OBD2 connector pinout, an extra LED on GPIO27, layout improvement, larger text, relocation of solder-jumpers to the top side, and the creation of a custom 3D printable case.

Video Overview of the Original v1.0

(*) are affiliate links.

Weight 30 g
Dimensions 5 × 2.8 × 1.6 cm
Shopping Cart