Adafruit
Adafruit GPIO Expander Bonnet - 16 Additional I/O over I2C
The Adafruit GPIO Expander Bonnet adds 16 extra digital I/O pins to your Raspberry Pi over I²C. Based on the MCP23017 chip, it plugs directly onto the Pi's 4...
The Adafruit GPIO Expander Bonnet adds 16 extra digital I/O pins to your Raspberry Pi over I²C. Based on the MCP23017 chip, it plugs directly onto the Pi's 40-pin header and communicates via SDA/SCL, leaving your other GPIO pins free. Each pin can be configured as a digital output (up to 20 mA per pin) or as an input with optional internal pull-up resistors.
By default, the expander runs at 5V logic (with level-shifted I²C at 3.3V), making it suitable for driving white, blue, or green LEDs that may not work reliably at 3.3V. A solder jumper lets you switch to 3.3V logic if needed. With address select jumpers, you can stack up to 8 bonnets on a single Pi for a total of 128 additional GPIO pins.
Key Features
- 16 Extra Digital I/O Pins – Grouped into two 16-pin connectors, each with a matching ground pin
- MCP23017 I²C GPIO Expander – Controlled via SDA/SCL, no extra GPIO pins consumed
- Output: Up to 20 mA Per Pin – Drive LEDs directly (recommended total under 125 mA for the chip)
- Input with Internal Pull-Ups – Connect buttons and switches without extra resistors
- Interrupt Support – INTA and INTB pins available for solder connections to detect GPIO changes
- 5V or 3.3V Logic – Default 5V logic with solder jumper option for 3.3V
- Stackable – Address select jumpers (0x20–0x27) allow up to 8 bonnets for 128 GPIO total
- CircuitPython Support – Python 3 library for quick setup and configuration
Ideal For
- Raspberry Pi projects needing more digital I/O pins
- LED control arrays and indicator panels
- Button matrix and switch input expansion
- Multi-sensor and multi-actuator setups
Package Contents
- 1× Adafruit GPIO Expander Bonnet – Assembled and tested with slim 2×20 header
- 2× 16-pin IDC sockets (unsoldered, for optional installation)
Resources
Jargon buster
Plain-language definitions for the technical terms used above.
- 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.
- 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.
- 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.
- SDA/SCL
- SDA and SCL are the two signal lines used by an I2C bus: data and clock. Seeing these names helps you identify the correct connections when wiring I2C devices, even though Qwiic cables usually hide that wiring for you.
- 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.
- UPS
- An uninterruptible power supply is a battery-backed power system that keeps a device running when external power is unplugged or fails. For an embedded computer, it helps prevent sudden shutdowns that can corrupt files or interrupt a project.
Find this product in
Brands
Raspberry Pi
Related Tutorials
Free guides on learn.littlebird.com.au