PCF8574 IO Expansion Board

From Waveshare Wiki
Jump to: navigation, search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
PCF8574 IO Expansion Board
PCF8574-IO-Expansion-Board-1.jpg

PCF8574, I2C interface, 8-bit parallel port
{{{name2}}}

{{{name3}}}

{{{name4}}}

{{{name5}}}

Overview

The PCF8574 IO Expansion Board is used as a remote 8-bit I/O expander for I2C-bus. Up to 8 PCF8574, IO Expansion Board can be connected to the I2C-bus, providing up to 64 I/O ports.
The PCF8574 IO Expansion Board features an I2C pinheader on one side and an I2C connector on the opposite side. Hence, it's more flexible to connect the board to your development system. The board also supports I2C cascading, allowing the use of multi modules connected to the I2C bus at the same time by connecting the pinheader and connector.

Features

  • Chip: PCF8574
  • Working voltage: 3.3V/5V
  • IO: 8
  • Interface: I2C

Pinouts

Pin Description
VCC 3.3V/5V
GND Power ground
SDA I2C data input
SCL I2C clock pin

Beware of knock-offs

Please note that we've found some poor copies of this item in the market. They are usually made of inferior materials and shipped without any testing.

You might be wondering if the one you're watching or you've purchased in other non-official stores is original, feel free to contact us.

Raspberry Pi

Enable I2C Interface

Open a terminal and run the following commands:

sudo raspi-config 
Choose Interfacing Options -> I2C -> Yes.

Reboot Raspberry Pi:

sudo reboot

RPI open i2c.png

Install Library

If you use the bookworm system, you can only use lgpio library, bcm2835 and wiringPi can't be installed and used.

BCM2835

#Open the Raspberry Pi terminal and run the following command
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.71.tar.gz
tar zxvf bcm2835-1.71.tar.gz 
cd bcm2835-1.71/
sudo ./configure && sudo make && sudo make check && sudo make install
# For more, you can refer to the official website at: http://www.airspayce.com/mikem/bcm2835/

WiringPi

#Open the Raspberry Pi terminal and run the following command
cd
sudo apt-get install wiringpi
#For Raspberry Pi systems after May 2019 (earlier than that can be executed without), an upgrade may be required:
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
gpio -v
# Run gpio -v and version 2.52 will appear, if it doesn't it means there was an installation error

# Bullseye branch system using the following command:
git clone https://github.com/WiringPi/WiringPi
cd WiringPi
. /build
gpio -v
# Run gpio -v and version 2.70 will appear, if it doesn't it means there was an installation error

lgpio

#Open the Raspberry Pi terminal and run the following command
wget https://github.com/joan2937/lg/archive/master.zip
unzip master.zip
cd lg-master
sudo make install

# You can refer to the official website for more: https://github.com/gpiozero/lg

Python3

#python3
sudo apt-get update
sudo apt-get install python3-pip
sudo apt-get install python3-pil
sudo apt-get install python3-numpy
sudo pip3 install RPi.GPIO
sudo pip3 install spidev

Download examples

Open a terminal of the Raspberry Pi:

sudo apt-get install p7zip-full -y
sudo wget  https://files.waveshare.com/upload/1/14/PCF8574-Code.7z
7z x PCF8574-Code.7z -O./PCF8574-Code
cd PCF8574-Code/RaspberryPi/

Hardware connection

PCF8574 Raspberry Pi Description
Board order
VCC 5V Power input
GND GND Power ground
SDA 3 I2C data input
SCL 5 I2C clock pin

PCF8574 RPI 2.jpg

Run examples

C examples

cd ~/PCF8574-Code/RaspberryPi/
cd wiringPi
sudo make clean
sudo make 
sudo ./test

Python example

cd ~/PCF8574-Code/RaspberryPi/
cd python
sudo python3 PCF8574.py

Expected result

Check the voltage level of every IO, P0 ~ P3 is set to High and the P4 ~ P7 is set to Low.

C example
Python example

The STM32 examples are based on the STM32F103RBT6 and the STM32H743. The connection provided below is based on the STM32F103RB. If you need to use other STM32 boards, you may need to change the hardware connection and port the code yourself.

Use with STM32

PCF8574 STM32 2.jpg

Hardware connection

PCF8574 STM32 Description
VCC 3.3V Power input
GMD GND Power ground
SDA PB9 I2C data input
SCL PB8 I2C clock pin

Examples

The examples are developed based on the HAL libraries. Download the Demo codes archive to your PC. Unzip and find the STM32 project from PCF8574-Code\STM32\STM32F103RB\MDK-ARM.

  • Open the PCF8574 IO Expansion Board.uvprojx file by Keil.
  • Build and the project.
  • Program the project to your STM32 board.
  • Connect the UART1 of your STM32 board to the PC and check the serial data by SSCOM software.
PCF8574 STM32 1.jpg

The Arduino example is written for the Arduino UNO. If you want to connect it to other Arduino boards, you may need to change the connection.

Use with Arduino

Hardware connection

PCF8574 Arduino 2.jpg
PCF8574 Arduino Description
VCC 5V Power input
GMD GND Power ground
SDA SDA I2C data input
SCL SCL SCL clock pin

Examples

  • Download the demo codes to your PC and unzip them.
  • Install the Arduino IDE on your PC.
  • Go into PCF8574_Code/Arduino/PCF8574.
  • Run the PCF8574.ino file.
  • Select the correct Board and the Port.
MQ5 Arduino 1.jpg
  • Build the project and upload it to the board.
  • Open the serial monitor of the Arduino IDE or the SSCOM software and check the serial data.
PCF8574 Arduino 1.jpg

Running Effect

  • You can use a multimeter to test the voltage value of each IO port, the normal is that P0~P3 is high, and P4~P7 is low.
  • Open the serial debugging software to show the current level of the 8 IOs.

FAQ

 Answer:

No, I'm sorry it doesn't support long-distance communicating.

{{{5}}}


Resources

Support



Technical Support

If you need technical support or have any feedback/review, please click the Submit Now button to submit a ticket, Our support team will check and reply to you within 1 to 2 working days. Please be patient as we make every effort to help you to resolve the issue.
Working Time: 9 AM - 6 AM GMT+8 (Monday to Friday)