2076257

8 Ports mehr am Raspberry Pi

13.05.2015 | 08:30 Uhr |

Die GPIO-Ports auf dem Raspberry Pi können schnell knapp werden, wenn es darum geht, mehrere Geräte gleichzeitig anzusteuern. Erweitern Sie!

Christian Immler, Jahrgang 1964, arbeitet seit mehr als 20 Jahren als Autor und hat es auf über 200 veröffentlichte Computer-Titel gebracht. Neben Themen wie 3D-Visualisierung, PDA-Betriebssysteme, Linux und Windows hat ihn auch der Raspberry Pi gepackt. Sein neuestes Buch, erschienen bei Franzis, heisst " Raspberry Pi - Mach's einfach ". Ein Thema, das Sie in diesem Buch nicht finden, ist seine Beschreibung des Portexpanders PCF8574 / PCF8574A.

Die GPIO-Ports auf dem Raspberry Pi können schnell knapp werden, wenn es darum geht, mehrere Geräte gleichzeitig anzusteuern. Portexpander am i2c-Bus bieten die Möglichkeit, die Anzahl der GPIO-Ports um ein Vielfaches zu vergrößern. Der Chip PCF8574 ist ein besonders einfacher und kostengünstiger Portexpander, der acht Ports zur Verfügung stellt und in vielen vorkonfigurierten i2c-Displays eingebaut ist.

Die Anschlüsse P0...P7 sind eine 8 Bit breite GPIO-Schnittstelle, die binärcodiert angesteuert wird.

Die Anschlüsse VCC und GND sind die Stromversorgung für den Portexpander. VCC kann an +3,3 V oder +5 V angeschlossen werden, damit lässt sich die gleiche Stromversorgung auch für das Display nutzen. GND wird an 0 V angeschlossen.

Die Anschlüsse A0, A1, A2 legen die Adresse des Portexpanders fest. An den drei Anschlüssen lassen sich mit HIGH- oder LOW-Signalen binärcodiert die Zahlen von 0 bis 7 darstellen.

Es gibt zwei Versionen des Chips, die sich nur in den Adressen unterscheiden:

Zwei Chip-Versionen, die sich nur in den Adressen unterscheiden
Vergrößern Zwei Chip-Versionen, die sich nur in den Adressen unterscheiden
© Christian Immler

Für die Programmierung ist es wichtig, das interne Anschluss-Schema zwischen LCD-Display und Portexpander zu kennen. Das nächste Programm verwendet ein weitverbreitetes Anschluss-Schema vorgefertigter Displaymodule:

Anschluss-Schema
Vergrößern Anschluss-Schema
© Christian Immler
Anschluss-Schema
Vergrößern Anschluss-Schema
© Christian Immler

i2c-LCD-Displays (PCF8574) ansteuern

Das Programm i2c_display08.py zeigt die gleichen Informationen wie das vorherige Programm auf einem Display an, das über den Portexpander PCF8574 gesteuert wird.

Das Programm i2c_display08.py
Vergrößern Das Programm i2c_display08.py
© Christian Immler

So funktioniert es:

Bei den Definitionen ist nur noch die Geräteadresse nötig, keine Adressen für zwei GPIO-Ports. LCD_RS und LCD_ enthalten die Bitmuster für die beiden Steuersignale. Je nach Schaltplan müssen diese entsprechend geändert werden.

In der Funktion lcd_byte() werden Daten im 4-Bit-Modus übertragen. Dazu werden die entsprechenden Steuersignale addiert, und alles zusammen wird in zwei Blöcken auf dem 8-Bit-GPIO-Port übertragen. Im ersten Block werden die höheren vier Bits mit Rightshift (>>) auf die unteren vier Stellen verschoben. Im zweiten Block werden die oberen vier Bits durch bitweises UND (&) mit 0x0F auf 0 gesetzt.

In dem Moment, in dem LCD_E von 1 auf 0 wechselt, werden die zuvor auf den Datenregistern vorhandenen Bits auf das Display geschrieben. Die Tabelle zeigt die Bitmuster in der Übersicht:

Bitmuster in der Übersicht
Vergrößern Bitmuster in der Übersicht
© Christian Immler

Hinweis für alle Bastler:
Wenn auch Sie ein kreatives Projekt entwickelt haben, schreiben Sie uns. Wir würden Ihre Konstruktionen, nützlich oder einfach nur schräg, gern auf www.pcwelt.de/hacks vorstellen. Schreiben Sie an Birgit Götz - hacks@pcwelt.de. 

0 Kommentare zu diesem Artikel

PC-WELT Hacks - Technik zum Selbermachen?

Raspberry Pi erfreut sich gerade unter Bastlern einer großen Beliebtheit. Kein Wunder, denn mit der 35-Euro-Platine lassen sich viele spannende Projekte realisieren. Vom Mediacenter, Netzwerkspeicher, Fotomaschine bis hin zum Überwachungssystem ist alles möglich. Dieser Bereich ist aber nicht nur dem Raspberry Pi gewidmet, sondern bietet auch viele Tipps, Tricks und Anleitungen für andere spannende Bastelprojekte.

2076257