- Home
- Products
- Motherboards
- waveshare

Waveshare MCP23017 IO Expansion Board I2C Interface Expands 16 I/O Pins Compatible with Both 3.3V and 5V Levels
Want the best price and purchase timing?
Our AI advisor analyzes real-time pricing across all channels to find you the best deal.
AI Verdict
A compact I2C expansion board that easily adds 16 digital I/O pins to 3.3V or 5V microcontrollers, perfect for permanent control boxes but frustrating for breadboard prototyping.
It is a highly effective way to add 16 digital I/O pins to a 3.3V or 5V microcontroller using just two I2C wires. The pre-soldered headers make it frustrating for breadboard prototyping, limiting its appeal mostly to users comfortable with custom wiring or soldering.
If you need PWM outputs for servos or LEDs, look for a PCA9685-based expansion board instead.
Regret Score™
Medium RiskLower is better — measures purchase-regret risk from real buyer complaints, review credibility, and product maturity
Issues discovered after purchase
Critically weak dimension
Amazon rating vs actual quality
Chance this product isn't for you
Pros
- Adds 16 digital I/O pins using only 2 I2C pins
- Built-in voltage translator handles both 3.3V and 5V logic without external shifters
- Pre-installed 10K pull-up resistors on the I2C lines
- Includes a PH2.0 connector and 20cm 6-pin cable for quick plug-and-play
- Interrupt pins (INTA, INTB) allow event-driven code instead of constant polling
Cons
- Header pins are soldered in a way that makes it incompatible with standard breadboards
- Changing the default 0x27 I2C address requires soldering tiny SMD jumper pads
- Daisy-chaining multiple boards requires soldering your own expansion headers
- Lacks PWM signal support for analog-style control
Dimension Scores
Onboard voltage translator handles 3.3V/5V seamlessly, though some users report needing an extra 0.1uF bypass cap for stability in noisy setups.
Provides 16 I/O pins and two interrupt pins, lacking PWM capabilities entirely.
Supports up to 8 stacked boards for 128 pins, requiring manual soldering to change addresses.
Relies on standard Arduino and Raspberry Pi MCP23017 libraries for easy integration.
Best For
- Expanding digital inputs/outputs for Raspberry Pi or Arduino projects with limited GPIO
- Reading multiple switches or driving multiple relays in a control box
- Mixed-voltage setups where the microcontroller is 3.3V but peripherals are 5V
Not Recommended For
- Breadboard prototyping without custom jumper wires
- Projects requiring PWM outputs for servo control or LED dimming
Watch Out For
- Not breadboard friendly — the pre-soldered header pins face the wrong direction, so you need female-to-male jumper wires to use it on a standard breadboard.
- Hardwired to I2C address 0x27 — you must solder tiny A0/A1/A2 jumper pads to change the address if you want to stack multiple boards.
- No PWM support — this board only handles digital high/low signals, preventing you from dimming LEDs or controlling servos.
- Daisy-chaining requires extra soldering — you cannot plug multiple boards together out of the box without adding your own expansion headers.
Full Specifications
| RAM | DDR3 |
| ASIN | B07P2H1NZG |
| Brand | waveshare |
| Series | MCP23017-E/SP MCP23017 16-Bit I/O Expander with Serial Interface |
| Model Name | MCP23017-E/SP MCP23017 16-Bit I/O Expander with Serial Interface |
| Item Weight | 0.704 ounces |
| Manufacturer | Waveshare |
| Power Source | DC |
| Wireless Type | Infrared |
| Processor Brand | Waveshare |
| Operating System | Linux |
| Item model number | MCP23017 IO Expansion Board |
| Package Dimensions | 3.58 x 2.05 x 0.83 inches |
| Included Components | MCP23017 IO Expansion Board, PH2.0 20cm 6Pin cable |
| Number of Processors | 1 |
| Connectivity Technology | I2C, Infrared |
| Is Discontinued By Manufacturer | No |
What Buyers Say
The biggest surprise with this board is its physical layout—the pre-soldered pins make it impossible to plug directly into a breadboard, which frustrates a lot of prototypers. Beyond that, it seamlessly bridges 3.3V and 5V systems thanks to the onboard translator. Users love the included PH2.0 cable for quick connections, but frequently complain about having to solder tiny SMD pads just to change the I2C address. It does exactly what it promises for digital I/O, provided you don't need PWM.
“Does the job perfectly for adding switches to my control box, but the pin layout makes it totally useless for breadboards unless you use jumper wires.”
Common Praise
- Built-in voltage translator handles 3.3V and 5V logic without external shifters
- Included 10K pull-up resistors on the I2C lines save wiring time
- PH2.0 connector and included cable make initial hookup very fast
- Interrupt pins work perfectly for detecting input state changes without polling
Common Complaints
- Pre-soldered pins are attached the wrong way for breadboard use
- Changing the default 0x27 I2C address requires soldering tiny jumper pads
- Daisy-chaining multiple boards requires soldering your own expansion headers
- Cannot generate PWM signals for servos or dimmable LEDs
Ownership Tips
- If you experience random resets or I2C lockups, soldering a 0.1uF ceramic capacitor between VCC and GND stabilizes the board.
- Newer revisions of the MCP23017 chip have a silicon errata making GPA7 and GPB7 output-only, which might break older code relying on them as inputs.
- The default I2C address is hardwired to 0x27, so you must modify the hardware before using two boards together.
Frequently Asked Questions
Can I plug this directly into a breadboard?
No. The pre-soldered header pins are oriented in a way that prevents it from sitting flat on a standard breadboard. You must use female-to-male jumper wires to connect it.
How many of these boards can I chain together?
You can stack up to 8 boards on a single I2C bus for a total of 128 I/O pins. You need to solder the A0, A1, and A2 jumpers to give each board a unique address.
Does it support both 3.3V and 5V logic?
Yes. It features an onboard voltage translator. You can safely connect it to a 3.3V Raspberry Pi or a 5V Arduino without needing an external level shifter.
Can this board output PWM signals?
No. The MCP23017 chip only supports standard digital high/low signals. It cannot generate PWM for dimming LEDs or controlling servos.
Do I need to add pull-up resistors to the I2C lines?
No. The board already includes built-in 10K pull-up resistors on the SDA and SCL lines.
Buying Guide
When buying an I/O expander, you need to know exactly what kind of signals you are sending. This board is strictly for digital signals—think simple on/off switches, relays, or basic LEDs. It connects via I2C, meaning it only eats up two pins on your main microcontroller. You must be comfortable with basic soldering if you want to chain multiple boards together or change the default address. The physical pin layout means you will be using jumper wires rather than plugging it straight into a breadboard.
I2C Interface
A communication method that lets you control all 16 new pins using only 2 pins on your main board, acting like a digital extension cord.
Onboard Voltage Translator
Allows the board to safely talk to both 3.3V brains (like a Raspberry Pi) and 5V brains (like an older Arduino) without frying anything.
Interrupt Pins (INTA/INTB)
Instead of your code constantly asking 'was a button pressed?', these pins tap your microcontroller on the shoulder the exact millisecond a change happens.
Alternatives
If you need to control servos or dim LEDs, look for a PCA9685 expansion board which supports hardware PWM. If you want a breadboard-friendly layout, look for a bare MCP23017 DIP chip.



