Skip to content

Latest commit

 

History

24 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Basic GPIO Expander – MCP23017

License Code Platform PCB Status

A simpler, budget-friendly 16-channel GPIO expander based on the MCP23017. Perfect for hobbyists, prototyping, and educational projects. Chain up to 8 modules for 128 GPIOs controlled via I²C.

Basic GPIO Expander


✨ Features

  • 🧠 MCP23017 – 16-bit I²C I/O expander
  • 🔌 I²C Interface – Up to 8 devices on same bus (128 GPIO)
  • 🔢 Binary Address Selection – 3 jumpers + 3 LEDs show address (0-7)
  • 💡 Status LEDs – For each I/O channel (via testing board)
  • 🔋 Flexible Power – 5V/24V selectable via jumper
  • 🏗️ Compact Size – 100×40mm, fits JLCPCB $2 special offer
  • 🔍 Reverse Polarity Protection – MB2S bridge rectifier
  • 💰 Budget-Friendly – 15 fewer components than industrial version

📁 Repository Contents

Folder Description
📂 /GERBER Ready-to-order Gerber files
📄 /Schematic PDF + image exports
🖥️ /PCB_Layout PCB views (top/bottom/layers)
📸 /Images Real build photos + 3D renders
📁 /Software Arduino test code

🛒 How to Order

  1. Upload Gerber files to JLCPCB
  2. Select: FR-4 material / 1.6mm thickness / ENIG surface finish
  3. PCB Specifications:
    • Layers: 2
    • Size: 100mm × 40mm → Eligible for $2 special offer!
    • Color: Purple (or any color you like)
  4. Add stencil if you plan to assemble yourself

🔧 How to Assemble

SMD Assembly (Hot Plate / Reflow):

  1. Apply solder paste through stencil
  2. Place components (start with smallest first)
  3. Reflow on hot plate (245°C peak)
  4. Inspect under microscope for bridges

Through-Hole Assembly:

  1. Insert terminal blocks, jack connector, and jumpers
  2. Solder each pin with temperature-controlled iron
  3. Trim excess leads
  4. Clean with isopropyl alcohol

Assembly Order:

  1. SMD Components (resistors/caps → ICs → LEDs)
  2. Through-Hole Components (terminal blocks → connectors → jumpers)
  3. Final Inspection and cleaning

💻 How to Program

1️⃣ Set I²C Address

  • Use 3 jumpers (A0, A1, A2)
  • Jumper ON = Logic 0, Jumper OFF = Logic 1
  • Address = (A0 × 1) + (A1 × 2) + (A2 × 4)
  • Binary LEDs show the current address

2️⃣ Connect I²C

MCU → I2C_IN Connector (bottom left) VCC GND SDA SCL For chaining: I2C_OUT → Next Module's I2C_IN (bottom right → bottom left)

3️⃣ Upload Arduino Sketch

Check the Software folder for test code

⭐ Special Access

You can get direct access to this circuit files online through this link: Altium Online Access


📺 Watch the Tutorial

🎥 Click here for the full YouTube video


📜 License

This project is licensed under the MIT License – see the LICENSE file for details.


🙌 Support

If you try this project, share your build!
Star this repo if you found it useful.


About

🔍 A simpler, budget-friendly 16-channel GPIO expander based on the MCP23017. Perfect for hobbyists, prototyping, and educational projects. Chain up to 8 modules for 128 GPIOs controlled via I²C.

YouTube Tutorial Link

Topics

gpio-expander mcp23017 i2c arduino esp32 raspberry-pi open-hardware embedded-systems diy-electronics budget-electronics

About

Budget-friendly 16-channel GPIO expander based on MCP23017. I²C interface, chainable up to 8 modules (128 GPIO). Compact 100×40mm PCB fits JLCPCB $2 offer. Perfect for hobbyists, prototyping, and educational projects.

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages