FLASH SALE!   🛍️   Get a stonking 40% off Inventor 2040 W – an all-in-one board for making contraptions that can move, sense things, make noise, and talk to the internet!!

IO Expander Breakout

by Pimoroni

Add oodles of extra analog-friendly input and output pins to your Raspberry Pi (or Raspberry Pi Pico) project!

This breakout uses a clever Nuvoton MS51 microcontroller and some I2C magic to give you a whopping 14 additional input/output pins to connect things up to. Eight of the pins are hooked up to an Analog to Digital Converter so you can easily use old skool analog sensors with your Raspberry Pi, as well as passive components that use an analog signal (like light dependent resistors). 

Six of the pins can be used as (up to 16-bit) PWM outputs - great for controlling devices that require a simulated analog output, like servos or non-addressable LEDs.

You can attach it to your Pi's GPIO directly or via a breadboard with the included headers, but it's also compatible with our fancy solderless Breakout Garden, which makes it super easy to use several different breakouts at the same time. Why not couple it with one of of our teeny display breakouts to show the results from all those lovely sensors?

What's new? ✨

Breakouts made after August 2023 have the long side of the pin headers pointing out of the back of the breakout instead of the front - this is so we can do one sided assembly, which makes our production team happy.


Kit includes

  • IO Expander Breakout
  • 1x5 straight male header
  • 1x5 right angle female header

We've designed this breakout board so that you can solder on the piece of right angle female header and pop it straight onto the bottom left 5 pins on your Raspberry Pi's GPIO header (pins 1, 3, 5, 7, 9).


We've put together a Python library to use with your IO Expander, together with some handy examples that show you how to interact with different kinds of devices.

You can also use this breakout with Raspberry Pi Pico and other RP2040 boards, using C++ or Pirate brand MicroPython.

Additionally, there's an Arduino port of our library - thanks Chris!


  • The default I2C address is 0x18, but it's possible to change this in software if you'd like to use multiple IO Expanders, or avoid conflicts with other I2C devices.  The new address will be saved in flash memory, so will persist if unpowered.
  • This board uses a Nuvoton MCU with our custom firmware but if you're brave and hackerly, you can substitute your own firmware to change the way this board works and have a super cheap and capable microcontroller (though this is not for the faint of heart!)
  • Dimensions: 26x24.5x12mm (LxWxH)