{"product_id":"adafruit-pcf8574-i2c-gpio-expander-breakout-stemma-qt-qwiic","title":"Adafruit PCF8574 I2C GPIO Expander Breakout","description":"\u003cp\u003eExpand your project possibilities, with the Adafruit PCF8574 GPIO Expander Breakout - an affordable 8 channel I2C expander.\u003c\/p\u003e\n\u003cp\u003eGPIO expanders work like this: you have a board with some number of GPIO but not enough for your project - maybe you need more buttons or LEDs. You \u003cem\u003ecould\u003c\/em\u003e upgrade to a board with massive number of GPIO \u003ca href=\"\/en-eu\/products\/adafruit-grand-central-m4-express-featuring-samd51-without-headers\" target=\"_blank\" rel=\"noopener noreferrer\"\u003elike the Grand Central\u003c\/a\u003e, or you could pop on one of these boards. Connect it over I2C and then you can send\/receive I2C commands to control the GPIO pins to write and read them. It's going to be slower than direct GPIO access, but maybe that doesn't matter if it takes a millisecond instead of a microsecond. You only need the two I2C pins, and you can even share the I2C port with other sensors and devices. Heck, you can even add more expanders for massive I\/O control!\u003c\/p\u003e\n\u003cp\u003eThe PCF8574 is a common, and \u003cem\u003eslightly unusual\u003c\/em\u003e I2C expander for folks who are used to the MCP230xx series:\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eFirst up, its very affordable - who doesn't love that?\u003c\/li\u003e\n\u003cli\u003eIt has 8 I\/O pins\u003c\/li\u003e\n\u003cli\u003eThree I2C address select jumpers mean up to 8 expanders to one bus for 64 total GPIO added\u003c\/li\u003e\n\u003cli\u003eEach pin can be an input with light pull-up or an output sink\u003c\/li\u003e\n\u003cli\u003eIRQ output will automatically alert you when input pins change value\u003c\/li\u003e\n\u003cli\u003eThis chip does not have a pin direction register. You cannot set the pins to be input or output - instead each pin has two possible states. Basically you can think of it as an open-drain output with a 100K resistor pull-up built in.\u003c\/li\u003e\n\u003cli\u003eOption one: Lightly pulled up 'input' - by default it will read as a high logic level, but connecting the GPIO to ground will cause it to read as a low logic level.\u003c\/li\u003e\n\u003cli\u003eOption two: Strong 20mA low-driving transistor sink output. This means the output is 'forced' to be low and will always read as a low logic level.\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cp\u003eThe pin direction \/ state thing is a little odd but it actually works fine for many purposes as long as you know what to expect.\u003c\/p\u003e\n\u003cp\u003eFor example, if you want to read a button or switch, connect one side to the PCF and the other side to ground. Then set the pin to 'light pull-up input' When the button is pressed it will read low, when released it will read high.\u003c\/p\u003e\n\u003cp\u003eIf you want to control an LED, connect the anode to positive voltage through a resistor. When the PCF pin is set to 'light pull-up input' the LED will be off. When the PCF pin is set to 'strong ground output' the LED will connect to ground and turn on.\u003c\/p\u003e\n\u003cp\u003eIf you want to send a GPIO output logic level to some other device or peripheral, the light pull-up acts as high logic out, the strong ground output acts as low logic out.\u003c\/p\u003e\n\u003cp\u003eIf you want to receive a GPIO input logic level, set the pin to light pull-up and then read the pin to determine if the GPIO input is high or low.\u003c\/p\u003e\n\u003cp\u003eBasically, the only thing to watch for is you cannot drive an LED that is expecting the expander GPIO to go high to turn on the LED, or connect a button input to a positive voltage without adding an additional pull-down resistor. If this is a bit confusing, worry not - all this stuff is taken care of for you in this \u003ca href=\"https:\/\/github.com\/adafruit\/Adafruit_PCF8574\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eArduino PCF8574 library\u003c\/a\u003e or \u003ca href=\"https:\/\/github.com\/adafruit\/Adafruit_CircuitPython_PCF8574\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eCircuitPython\/Python PCF8574 library\u003c\/a\u003e - you can pretend it has input\/output modes and the library will fake out what you are expecting.\u003c\/p\u003e\n\u003cp\u003eTo get you going fast, Adafruit spun up a custom-made PCB in the \u003ca href=\"\/en-eu\/collections\/stemma-qt\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eSTEMMA QT\u003c\/a\u003e form factor, making it easy to interface with. The STEMMA QT connectors on either side are compatible with the \u003ca href=\"\/en-eu\/collections\/qwiic\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eSparkFun Qwiic\u003c\/a\u003e I2C connectors. This allows you to make solderless connections between your development board and the PCF8574 or to chain it with a wide range of other sensors and accessories using a compatible cable.\u003c\/p\u003e\n\u003cp\u003e\u003ca href=\"\/en-eu\/products\/jst-sh-cable-qwiic-stemma-qt-compatible\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eQT Cable is not included, but we have a variety in the shop.\u003c\/a\u003e\u003c\/p\u003e\n\u003ch2\u003eTechnical Details\u003c\/h2\u003e\n\u003cp\u003eProduct Dimensions: 25.5mm x 17.7mm x 4.6mm \/ 1.0\" x 0.7\" x 0.2\"\u003c\/p\u003e\n\u003cp\u003eProduct Weight: 1.7g \/ 0.1oz\u003c\/p\u003e","brand":"Adafruit","offers":[{"title":"Default Title","offer_id":40165485609043,"sku":"ADA5545","price":5.95,"currency_code":"EUR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0174\/1800\/products\/5545-00.jpg?v=1745607859","url":"https:\/\/shop.pimoroni.com\/en-eu\/products\/adafruit-pcf8574-i2c-gpio-expander-breakout-stemma-qt-qwiic","provider":"Pimoroni Ltd","version":"1.0","type":"link"}