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.

Features

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).

Software

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!

Notes

  • 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)

16 customer reviews

a day ago
Totally neccessary adjunct to the Pimoroni Presto, it gives IO capability that is not provided by the original device, working through the I2C interface. Works well, have not yet established speed capabilities but very welcome just the same.
by Trevor about IO Expander Breakout via REVIEWS.io
10 days ago
I bought this to add digital IO pins, ADC input and PWM output to my Presto which has only I2C for Input/Output. It is really easy to connect and I've found it to be really useful.
by Anthony about IO Expander Breakout via REVIEWS.io
4 years ago
A quick and simple way of adding additional GPIOs and some ADC channels to a raspberry pi (which it misses otherwise). Really simple to use with Python on the Pi using the excellent breakout garden HAT. I love the whole breakout garden range - it's such a simple but excellently executed idea that makes quick prototyping of inputs and outputs from the Pi and Pi Pico a simple case of plugging the cards into the base and writing some code to glue them all together.
by DAVID about IO Expander Breakout via REVIEWS.io
4 years ago
Looking forward to use this with the Grow Hat to trigger some Grow LED’s and a float switch for a reservoir.
by Darrell about IO Expander Breakout via REVIEWS.io
4 years ago
Quick delivery. Very useful for multiple analogue inputs. Would be useful to have the option of an un-soldered header, and supplied with spare/loose straight and right-angled headers for end-user soldering (some of us "old school" types don't mind a bit of soldering :-)
by Anonymous about IO Expander Breakout via REVIEWS.io
4 years ago
Dans la même veine que les autres beakouts. Tres pratique à l'usage et la conception est parfaite.
by Stephane about IO Expander Breakout via REVIEWS.io
4 years ago
Great little board, I wish there was a Node-Red node to control it rather than having to revert to a Python node in Node Red. Not knowing Python it took me a little while to get my head around it.
by Christopher about IO Expander Breakout via REVIEWS.io
5 years ago
I'm using this to replace an I2C Itsy Bitsy M4 Express working as a master-slave handling sensor inputs on a Raspberry Pi based robot, and it was (rather obviously) a lot easier to set up, and while I like using the Itsy Bitsy, which has a 120MHz clock, I was surprised to find that the performance was about twice as good, about 85ms to read eight analog and digital pins, whereas the Itsy Bitsy was doing that at about 173ms. All in all this board is a success. My only criticism is that it'd be nice if the header was either not already soldered on (though I realise some people would prefer that), or was available with that option. If I'd had the option I'd probably have used a right angle header but it is a minor beef. It would be really great if someone from Pimoroni would flesh out a python example of using the Nuvoton MS51 microcontroller for some other purpose, there seems to be huge possibility there, like using the MS51 as a controller in its own right since it's already on the I2C bus.
by Murray about IO Expander Breakout via REVIEWS.io
5 years ago
Nice breakout! Your python-code makes the difference. One thing to note though: the holes of the I2C-connector don't properly line up. Maybe this is on purpose, but in this case it would have made more sense to let the already soldered pins face to the other side.
by Bernhard about IO Expander Breakout via REVIEWS.io

1 user photo