IO Pi Plus

32 channel MCP23017 digital I/O expander for the Raspberry Pi

£11.99 each (excluding VAT: £9.99)
162 available
Product Code:IOPi Plus 2.1
Add a Screw Terminals 2 pin 5mm
for only £0.69 each ex vat
Order 5mm Pitch 2 Pin 16A PCB Screw Terminal
Add a 40 Pin Single Row Header
for only £0.99 each ex vat
Order Connector suitable for the Raspberry Pi Zero
Add a Mounting Kit Four Pack
for only £3.49 each ex vat
Order Mounting kit to use on our Raspberry Pi boards
Share: Twitter Facebook


  •  32 Digital I/O pins*
  • Control via the Raspberry Pi I2C port
  • Python, MicroPython, C, C++, Node.js and .Net Core libraries
  • Stack up to 4 IO Pi Plus boards on a single Raspberry Pi
  • Solder jumper selectable I2C addresses
  • External 5V Input with an isolation solder jumper
  • Based on the MCP23017 from Microchip Technologies Inc
  • Configurable interrupt output pins - Configurable as active-high, active-low or open-drain
  • INTA and INTB can be configured to operate independently or together
  • Configurable interrupt source  - Interrupt-on-change from configured register defaults  or pin changes
  • Polarity Inversion register to configure the polarity of the input port data

The IO Pi Plus digital expansion board gives you 32 I/O pins for your Raspberry Pi and other compatible single-board computers. The board is based around the MCP23017 16-bit I/O expander from Microchip Technology Inc. A pair of MCP23017 expanders are included on the board, allowing you to connect up to 32 digital signals to your Raspberry Pi.

The IO Pi Plus can be powered through the host Raspberry Pi using the 40-pin GPIO port or an external power supply. Extended pins on the GPIO connector allow you to stack the IO Pi Plus and other expansion boards.

The I2C address bits are selectable using the onboard solder jumpers. The MCP23017 supports up to 8 different I2C addresses, so with two MCP23017 devices on each IO Pi, you can stack up to 4 IO Pi boards on a single Raspberry Pi, giving a maximum of 128 I/O pins. This could be expanded further using our I2C Switch expansion board.

The IO Pi Plus includes a 5V port that can be isolated from the Raspberry Pi via an isolation solder jumper marked "Link" on the PCB so that you can use a separate high-current power supply to power the IO Pi, reducing the load on the Raspberry Pi. An external supply is recommended if you connect multiple IO Pi Plus boards to your Raspberry Pi. The 5V input is compatible with our 5mm screw terminals.

To use the IO Pi Plus externally from the Raspberry Pi, you will need to connect the 3.3V (Pin 1), SDA (Pin 3), SCL (Pin 5) and Ground (Pin 6) pins from the Raspberry Pi GPIO header to the corresponding pins on the IO Pi Plus. The 5V pin will also need to be connected if you are not using an external 5V power supply.

How to use:

Our knowledge base has a series of step-by-step guides that will guide you through setting up and using your IO Pi Plus.

IO Pi Plus Tutorials

* Microchip recommends that pin 8 (GPA7) and pin 16 (GPB7) are used as outputs only.  This change was made for revision D MCP23017 chips manufactured after June 2020. See the MCP23017 datasheet for more information.

Legacy IO Pi Versions

See our KB article for previous versions of this board.

Code Libraries and Demos

This expansion board has Python, MicroPython, C, C++, Node.JS, .Net Core, Arduino and Home Assistant libraries available to get you started with your next project.  You can download all of the libraries from GitHub at: or click on the logos below for your selected programming language.


We have tested the IO Pi Plus on the following platforms.

Model Status
Raspberry Pi Pico series
Raspberry Pi Model A / B
Raspberry Pi 1 Model A+ / B+
Raspberry Pi 2 Model B
Raspberry Pi 3 Model A+ / B / B+
Raspberry Pi 4 Model B
Raspberry Pi 5
Raspberry Pi Zero
Raspberry Pi Zero W / Zero 2 W
Raspberry Pi Compute Module 4 IO Board
Raspberry Pi 400
Orange Pi
Asus Tinker Board

IO Pi Plus Tutorials

PCB Header Assembly Jig

IO Pi (Discontinued)

IO Pi Plus 1.0 (Discontinued)

MicroPython Library and Demos

Expansion Board Compatibility on the Raspberry Pi

ODroid C1 Ubuntu I2C Setup

ODroid C2 Ubuntu I2C Setup

Orange Pi computer boards introduction

Asus Tinker Board Introduction

C Library and Demos

Cases to use with our boards

CPP Library and Demos

Customs and Manufacturing Information

ODroid Board Introduction

Python Library and Demos

Samba Setup on Raspberry Pi

Set a static IP Address on Raspberry Pi OS Buster

Set a static IP Address on Raspberry Pi OS Bookworm

I2C and SMBus on the Tinker Board

.Net Core Libraries

Arduino Library and Demos

Windows 10 IOT Library & Demos

Node JS Library and Demos

Set a static IP Address on Raspberry Pi OS Wheezy

IO Pi Plus Tutorial 1 - The Blinking LED

IO Pi Plus Tutorial 2 - Push the Button

I2C Part 1 - Introducing I2C

I2C Part 2 - Enabling I2C on the Raspberry Pi

I2C Part 3 - I2C tools in Linux

I2C Part 4 - Programming I2C with Python

IO Pi Plus Tutorial 3 - Introducing Interrupts

IO Pi Plus Tutorial 4 - More Interrupts

Using Pythonpath with the Python Libraries

Connecting Expansion Boards to the Raspberry Pi 400

IO Pi Plus with Raspberry Pi Pico

IO Pi Plus Tutorial - MQTT Reading the Ports

IO Pi Plus Tutorial - MQTT Control

Driving Relays or higher loads with the IO Pi Plus

Other Code Samples

Relay Board for the IO Pi Plus 2.1

16 Channel Opto-Isolated Input Board


Microchip MCP23017


Product thumb
IO Pi Plus
£11.99 each (excluding VAT: £9.99)

Technical Details

Input Ratings & Specifications

Vdd (5V pin on I2C bus)
2.7V - 5.5V
All digital inputs and outputs:
0 - Vdd
Current at I/O Pin (sourced or sunk):
25 mA
Maximum current on a single I/O Bank (1 MCP23017 device):
125 mA

3D CAD Model

Click to downloadIO Pi Plus - 3D CAD File (STEP Format)


Click to View
View the schematic PDF.

Mechanical Drawings

Mechanical Drawing

Click the image to enlarge.

Product thumb
IO Pi Plus
£11.99 each (excluding VAT: £9.99)

Assembly Instructions

The IO Pi Plus is supplied with the 40-pin GPIO connector unsoldered. Before using the IO Pi Plus, you need to solder the connector onto the PCB. The power link and I2C address selection are configured using solder jumpers. For convenience, we supply the IO Pi Plus with the power link jumper and one address selection jumper pre-soldered.

The I/O input pads are spaced 2.54mm apart. You can solder wires directly to the board or use 2.54mm pitch headers. The IO Pi Plus is compatible with 20-pin IDC vertical and right-angle headers allowing you to use ribbon cables to connect your external devices to the board.

To install the IO Pi, press the 40-pin connector down onto the Raspberry Pi GPIO pins with the board sitting over the top of the Raspberry Pi.

When installing more than one IO Pi on a single Raspberry Pi board, you must configure the address select jumpers for each IO Pi.

Remove the isolation jumper when connecting an external power supply to the 5V port.

Assembly Guide Video

Watch our assembly guide on YouTube. (opens in a new window)

PCB Header Assembly Jig

Download and print our PCB Header Assembly Jig to hold your circuit board when soldering the header pins.


I2C Address Selection

The MCP23017 contains three address-select pins, which can be tied to Vss or Vdd.  This gives 8 possible I2C addresses for each chip. To simplify address selection on the IO Pi Plus, we have included a set of address selection pads which can be configured by applying a small solder bridge across the required pads. The I2C address table shows your IO Pi Plus's recommended configurations and associated I2C addresses.

Disconnect the IO Pi Plus from the Raspberry Pi before changing the i2c address. The address pins are tied to GND (low) via a 10K resistor, so the jumper is used to connect a pin to Vcc (high).

Default Configuration (IC1 = 0x20, IC2 = 0x21)

I2C Address Table

2 1 0 Address

You may also like

Important Information

This development board/kit is intended for use for ENGINEERING DEVELOPMENT, DEMONSTRATION, OR EVALUATION PURPOSES ONLY and is not considered by to be a finished end-product fit for general consumer use. As such, the goods being provided are not intended to be complete in terms of required design-, marketing-, and/or manufacturing-related protective considerations, including product safety and environmental measures typically found in end products that incorporate such semiconductor components or circuit boards. Persons handling the product(s) must have electronics training and observe good engineering practice standards. This development board/kit does not fall within the scope of the European Union directives regarding electromagnetic compatibility, restricted substances (RoHS), recycling (WEEE), FCC, CE or UL, and therefore may not meet the technical requirements of these directives or other related directives. Note: documents in Portable Document Format (PDF) require Adobe Acrobat Reader 5.0 or higher to view, download Adobe Acrobat Reader or other PDF reading software for your computer or mobile device.