Knowledge Base

The AB Electronics UK Knowledge Base provides support solutions, tutorials and troubleshooting guides.

Knowledge Base

IO Pi (Discontinued)

IO Pi Expansion board

IO Pi version one

This item has been replaced with the IO Pi Plus.

The IO Pi is a 32-channel digital expansion board designed for use with the Raspberry Pi computer platform. 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 inputs or outputs to the Raspberry Pi. The IO Pi Expander is powered through the host Raspberry Pi using the GPIO port, and extended pins on the GPIO connector allow you to stack the IO Pi along with other expansion boards.


  •  32 Digital Inputs/Outputs
  • Control via the Raspberry Pi I2C port
  • Stack up to 4 IO Pi boards on a single Raspberry Pi
  • Jumper selectable I2C addresses
  • External 5V Input with isolation 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 I2C address bits are selectable using the onboard 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 ports.

The IO Pi includes a 5V port that can be isolated from the Raspberry Pi via an isolation jumper. You can use a separate high-current power supply to power the IO Pi, reducing the load on the Raspberry Pi. The use of an external supply is recommended if you plan on connecting more than one IO Pi to your Raspberry Pi.

I2C Address Selection

The MCP23017 contains three address select pins, which can be tied to Vss, Vdd.  This gives 8 possible I2C addresses for each chip. The IO Pi includes two MCP23017 chips so you can stack up to 4 IO Pi boards on a single Raspberry Pi. To simplify address selection on the IO Pi, we have included a set of address selection pins which can be configured using the included jumpers. The illustrations below show the four recommended configurations for your IO Pi and the associated I2C addresses.

Disconnect the IO Pi from the Raspberry Pi before changing the address pins. The address pins are tied to Vdd (high) via a 10K resistor, so the jumper connects a pin to ground (low).

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

When you purchase the IO Pi, the address selection jumpers will be pre-configured to the following addresses. IC1 Port = I2C Address: 0x20, IC2 Port = I2C Address: 0x21

Default I2C config

Recommended Address Configurations

Configuration 1: 
IC1 Port = I2C Address: 0x20
IC2 Port = I2C Address: 0x21

Config 1

Configuration 2: 
IC1 Port = I2C Address: 0x22
IC2 Port = I2C Address: 0x23

Config 2

Configuration 3: 
IC1 Port = I2C Address: 0x24
IC2 Port = I2C Address: 0x25

Config 3

Configuration 4: 
IC1 Port = I2C Address: 0x26
IC2 Port = I2C Address: 0x27

Config 4

Input Ratings & Specifications

Vdd (5V input pin when isolation jumper is removed): 4.5V - 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


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

If you are installing more than one IO Pi on a single Raspberry Pi board, then you must configure the address select jumpers for each IO Pi as shown on page 2 of this datasheet.

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

A mounting kit (sold separately) can be used to secure the IO Pi to the Raspberry Pi.


Click to View
Click to view the schematic PDF.

Mechanical Drawings

Click the image to enlarge

Sample Code

We have Python libraries available for this expansion board. You can download all of the libraries from GitHub at:

To download the Python libraries to your Raspberry Pi, type in the terminal:

git clone


Our Knowledge Base has several IO Pi and IO Pi Plus tutorials.

IO Pi Tutorials

Was this article helpful? Yes No

Please tell us how we can improve this article:

Created 11/05/2016 | Last Updated: 01/01/2024

Related Expansion Boards

Order a IO Pi Plus Photo of IO Pi Plus
IO Pi Plus

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

£14.39 Ex VAT: £11.99
Add to Basket
Order a IO Zero 32 Photo of IO Zero 32
IO Zero 32

32 channel digital I/O expander for the Raspberry Pi

£13.19 Ex VAT: £10.99
Add to Basket
Order a Expander Pi Photo of Expander Pi
Expander Pi

Analogue, Digital and RTC Expansion Interface for the Raspberry Pi

£27.59 Ex VAT: £22.99
Add to Basket

Related Articles

ADC Pi (Discontinued)
ADC Pi V1 and V2 expansion boards
Serial Pi (Discontinued)
Serial Pi RS232 Expansion board
Expander Pi (Discontinued)
Information for Expander Pi expansion board Legacy Product
Logic Level Converter (Discontinued)
Information for Logic level converter
RTC Pi (Discontinued)
Product Information for the version one RTC Pi board
ADC DAC Pi (Discontinued)
2 Channel ADC and 2 Channel DAC for the Raspberry Pi
Buffer Pi - Legacy Product
Bi-directional voltage-level translator for the Raspberry Pi
RTC Alarm Pi (Discontinued)
RTC Clock Module with alarm for the Raspberry Pi
Com Pi (Discontinued)
Com Pi for the Raspberry Pi
IO Pi Plus 1.0 (Discontinued)
IO Pi Plus 1.0 Legacy version information
Delta-Sigma Pi (Discontinued)
Delta-Sigma Pi ADC Board
IO Pi (Discontinued)
IO Pi Expansion board
IO Pi Zero (Discontinued)
Legacy product information for the IO Pi Zero
1 Wire Pi (Discontinued)
1 Wire Pi expansion board legacy information
1 Wire Pi Plus 1.0 (Discontinued)
1 Wire Pi Plus 1.0 - Legacy version information