Während der letzten drei Jahre habe ich verschiedene Raspberry Pi Roboter gebaut. So habe ich die GPIO Pins des Rapberry Pi vielfältig eingesetzt. Die Roboter die ich im letzten Jahr gebaut habe wurden immer komplexer und ich hatte bald keine freien GPIO Pins mehr an meinem Raspberry Pi übrig. So habe ich mich auf die Suche gemacht nach einer GPIO Erweiterung für meine Projekte. Dieser Port Expander sollte günstig und in der Raspberry Pi Community weit verbreitet sein. So sollte dieser Port Expander eine breite Unterstützung durch die Community haben.
Bei meiner Suche habe ich den PCF8574 Chip gefunden der auf eine kleine Platine gelötet ist und so zusätzliche 8 I/O Ports anbietet. Das PCF8574 Board wird über den I2C Bus an den Raspberry Pi angeschlossen. Das macht das Anschließen mit vier Female-To-Female Kabeln sehr einfach. Es gibt auch im Internet eine Vielzahl in Python programmierte Programme und Bibliotheken die für das PCF8574 Board zusammen mit einem Raspberry Pi entwickelt wurden.
Das folgende Bild zeigt mein Setup mit einem Relais und dem I/O Port Expander im Vordergrund. Die Getriebemotoren auf der linken Seite gehören zu einem anderen Test.
Es ist auch möglich mehrere I/O Port Expander als eine Kette hintereinander zu schalten. Es ist ein entsprechender Stecker auf jedem PCF8574 vorgesehen der ein Einstecken eines weiteren Borads rechts ermöglicht. Es muss nur jedem Board eine eindeutige I2C Adresse vergeben werden. Das ist über die gelben Jumper direkt durch stecken möglich. So können verschiedene I2C Geräte in einem Roboter verbaut werden ohne das es zu Konflikten mit der I2C Adresse kommt.
Das nächste Bild zeigt das Relais und den I/O Port Expander. In dem vorderen Bildbereich ist das Board mit den gelben Jumpern für das setzen der I2C Adresse zu sehen. Im Hintergrund ist das Relais schon am Port Expander angeschlossen.
Nach dem Anschließen des Port Expanders am Raspberry Pi über den I2C Bus (im Bild die vier linken Kabel) und dem Verbinden des Relais an das PCF8574 Board (mittig vom Baord) ist es an der Zeit die notwendige Python Software zu installieren. Ich habe auch ein kleines Python Programm für Testzwecke geschrieben das mein Relais schaltet.
Komponenten List
Raspberry Pi 3 Model B Kit
Das hier angebotene Kit ist sicher für alle interessant die noch keinen eigenen Raspberry Pi haben und sich sonst alle Komponenten einzelnen kaufen müssten.
I2C Level Shifter
Der I2C Level Shifter wird benötigt um zwischen der 3,3V Welt des Raspberry Pi und der 5V Welt vieler I2C Sensoren und Geräte hin und her schalten zu können.
PCF8574 Board
Das Board ist ideal um weitere I/O Ports am Raspberry Pi zu ergänzen.
Software Installation
Das folgende Kapitel beschreibt die Schritte die notwendig sind um die Software und Bibliothek zu installieren die Du benötigst um das PCF8574 Board am Raspberry Pi zum Laufen zu bekommen. Ich habe ein aktuelles Raspbian als Betriebssystem verwendet.
Bitte installiere alle Software Pakete mit den folgenden Befehlen auf Deinem Raspberry Pi nacheinander.
Befehl: sudo apt-get update
Befehl: sudo apt-get install libffi-dev
Mein Programm verwendet eine von dem User “flyte” geschriebene Bibliothek. Mit dieser ist es sehr einfach möglich den PCF8574 Chip zu steuern. Die Software liegt auf GitHub unter der folgenden URL:
GitHub page: https://github.com/flyte/pcf8574.
Um die Software des Users “flyte” von GitHub zu installieren kannst Du auch den folgenden Befehl ausführen.
Befehl: sudo pip install pcf8574
Nach der Installation ist es möglich über Python mit dem PCF8574 I/O Port Expander zu kommunizieren.
Python Test Program
Ich habe ein kleines Test Programm geschrieben um mein vierfach Relais zu testen. Das Programm schaltet lediglich die I/O Ports des PCF8574 Chips und schaltet so das angeschlossene Relais. Das Relais schaltet dann entsprechend dem Status des I/O Ports ein oder aus.
Du kannst das Programm hier herunter laden, entpacken und im Terminal Fenster auf Deinem Raspberry Pi ausführen.
Download: PCF8574 – Relais Control
Das Programm steht auch auf meinem GitHub Repository zur Verfügung:
GitHub page: https://github.com/custom-build-robots/.
Nach dem Ausführen des Programmes siehst Du im Terminal Fenster Informationen über den Schaltzustand der I/O Ports des Port Expanders. Der Python Programmcode soll Dir eine Idee geben eigene Programme und Steuerungen umgesetzt werden können.
Zusammenfassung
Wenn Du keine freien GPIO Pins mehr an Deinem Raspberry Pi zur Verfügung hast, dann ist das PCF8547 Board als I/O Expander ideal. Es bietet Dir 8 zusätzliche Ports an die Du schalten kannst. Du kannst dabei nicht nur den Status des Ports setzen sondern Du kannst diesen auch auslesen. Das ist perfekt für den Fall, dass Du Knöpfe und Schalter in Deinem Projekt verwendest. Mit dem I2C Bus ist es sehr einfach das Board am Raspberry Pi anzuschließen.
Danke für das tolle Tutorial 🙂 Es wäre toll, wenn Du noch etwas auf den Level Shifter eingehen könntest. Ich habe ihn mir besorgt, aber keine Ahnung wie er angeschlossen werden muß :/ Ich würde gerne an dem PCF8574 ein Relaisboard betreiben.