Adafruit
Adafruit PiCowbell CAN Bus for Pico - MCP2515 CAN Controller
The Adafruit PiCowbell CAN Bus adds CAN bus connectivity to your Raspberry Pi Pico or Pico W, making it easy to interface with automotive, robotics, and indu...
The Adafruit PiCowbell CAN Bus adds CAN bus connectivity to your Raspberry Pi Pico or Pico W, making it easy to interface with automotive, robotics, and industrial sensor networks. Built around the popular MCP2515 CAN controller and TJA1051/3 transceiver, it communicates over SPI and supports both standard and extended frame formats at up to 1 Mbps.
CAN bus is a two-wire differential protocol originally designed for vehicles but now widely used in robotics and sensor networks. It offers better range and noise immunity than I2C, with simple two-wire connections that allow new nodes to join anywhere on the shared bus. Built-in collision detection ensures reliable communication even with multiple devices transmitting simultaneously.
Key Features
- MCP2515 CAN Controller – Well-supported chipset with drivers for Arduino and CircuitPython, requires only SPI plus two GPIO pins (CS and IRQ)
- TJA1051/3 Transceiver – Handles the physical CAN bus signalling with robust noise immunity
- 5V Charge-Pump Generator – Produces clean 5V for the transceiver from the Pico's 3.3V supply, no external power needed
- 3.5mm Terminal Block – Pre-soldered for quick access to CAN High, CAN Low, and ground lines
- 120Ω Termination Resistor – On-board with a cuttable jumper to disable when not at the end of a bus
- Pre-Connected CS and INT Pins – Default GPIO #20 (CS) and #21 (INT), re-assignable via solder jumpers on the underside
- STEMMA QT / Qwiic Connector – Right-angle JST SH connector for I2C devices on GPIO 4 (SDA) and GPIO 5 (SCL)
- Reset Button – Conveniently placed for quick program restarts
- Gold-Plated Pads – Every pad has a duplicate hole for easy solder-jumpering; ground pads marked with white silkscreen
Header Options
The PiCowbell ships with an assembled PCB and header that requires soldering. Several configurations are available depending on your setup:
- Stacking Headers – Plug into a breadboard or other accessories with sockets
- Socket Headers – Plug the Pico directly in for a solid, compact connection
- Short Socket Headers – Ultra-slim pluggable design; pair with Short Plug Headers on the Pico for a skinny sandwich
- Direct Soldering – Most compact and inexpensive, but permanent
Pin Configuration
- SPI (Arduino Philhower core) – Default SPI on GPIO 16 (MISO), 18 (SCK), and 19 (MOSI)
- SPI (CircuitPython / MicroPython) – Configure SCK=18, MOSI=19, MISO=16 in code
- I2C – GPIO 4 (SDA) and GPIO 5 (SCL), pre-configured in Arduino Philhower core; set manually in CircuitPython/MicroPython
- CAN CS – GPIO 20 (re-assignable via solder jumper)
- CAN INT – GPIO 21 (re-assignable via solder jumper)
Ideal For
- Reading OBD-II vehicle diagnostics via CAN bus
- Robotics sensor and actuator networks
- Industrial automation and monitoring
- Custom CAN bus projects with Raspberry Pi Pico or Pico W
Package Contents
- 1× Adafruit PiCowbell CAN Bus PCB (assembled with terminal block)
- 1× Header (requires soldering)
Resources
Jargon buster
Plain-language definitions for the technical terms used above.
- CAN bus
- CAN bus is a reliable two-wire communication network originally designed for vehicles and now common in machinery and robotics. It matters when you need multiple controllers or devices to share status and control messages in a noisy electrical environment.
- CircuitPython
- A beginner-friendly version of Python designed to run directly on microcontroller boards. If a product supports CircuitPython, you can often program it by copying code files onto the board rather than setting up a more complex toolchain.
- CS
- CS stands for chip select, a control pin used by SPI devices to tell which connected device should listen. It matters when you connect more than one SPI module to the same microcontroller, because each device usually needs its own CS pin.
- GPIO
- General-purpose input/output pins are microcontroller pins you can set in software to read signals, switch devices on and off, or connect to peripherals. The number of GPIO pins matters because it limits how many buttons, LEDs, sensors, and other parts you can wire directly to the board.
- Headers
- Rows of metal pins used to plug a module into a breadboard or connect it with jumper wires. Pre-soldered headers make the module easier to use straight away without needing to solder the pins yourself.
- I2C
- I2C is a two-wire communication bus used by many sensors and small modules. It matters because several I2C devices can share the same two wires, but each device needs a compatible address and your controller must support I2C.
- IRQ
- Short for interrupt request, a signal pin a device uses to get a microcontroller’s attention when something needs handling. It matters here because I2C communication with the sensor requires connecting the IRQ pin to a suitable input pin.
- LED
- A light-emitting diode is a small electronic component that lights up when current flows through it in the correct direction. In this kit, LEDs create the flashing effect, so polarity and correct soldering matter for the project to work.
- MicroPython
- A version of the Python programming language made to run on microcontrollers. It matters because it lets beginners write readable code to control LEDs, sensors, motors and displays without needing to start with lower-level languages.
- PCB
- A printed circuit board is a rigid board with copper tracks that connect electronic parts without loose wires. For this kit, the PCBs also form the airplane shape, so they are both the circuit base and part of the finished model.
- Qwiic
- Qwiic is a plug-in connector system for I2C devices that uses small 4-pin cables, so you can connect compatible sensors without soldering. It matters because your controller or adapter also needs Qwiic, or you will need a cable or breakout to wire it up.
- solder jumper
- A solder jumper is a small pair or group of pads on a circuit board that can be bridged or cut with solder to change a hardware setting. It matters because changing modes may require careful soldering rather than just changing software.
- SPI
- A fast serial communication bus often used for displays, memory cards, and sensors. It matters because SPI devices need specific pins for clock and data, plus a separate chip-select line for each device.
- STEMMA QT
- A small plug-in connector system for I2C boards that lets you connect compatible sensors and controllers without soldering. It matters because it can make wiring faster and less error-prone, especially when adding several small modules to a project.
- Terminal block
- A connector used to join wires together in a neat, removable, or serviceable way. For this product, it helps split one power input into several outputs without soldering.
Find this product in
Brands
Raspberry Pi