Raspi, Arduino und ESP: GPIO-Pins per Extender erweitern

Wenn die integrierten GPIO-Pins am Arduino, ESP8266, ESP32 oder Raspi nicht reichen, hilft ein per I2C-Bus angeschlossener GPIO-Extender-Chip wie der MCP23017.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht 14 Kommentare lesen
Sehr viele GPIO-Pins an Arduino, Raspi und ESP
Lesezeit: 14 Min.
Inhaltsverzeichnis

Auf dem Basteltisch breiten sich die Teile fürs neueste Projekt aus: fünf Relais, eine LED, zwei Schalter und ein Temperatursensor. Kurz durchgezählt: Die Bauteile belegen 10 GPIO-Pins am Mikrocontroller. Der geplante ESP-12f hat aber nur acht nutzbare Pins. Was tun?

Eine Lösung sind GPIO-Extender wie der MCP23017, den man für weniger als einen Euro bekommt. Den Chip steuert der Mikrocontroller über den seriellen I2C-Bus an und der Baustein kümmert sich seinerseits ums Auslesen der Schalterstellung und das Schalten der Relais. Die seriellen Befehle kosten ein paar Millisekunden Zeit, dafür liefert der Chip satte 16 konfigurierbare digitale Ein- oder Ausgabe-Pins.

Einen I2C-Bus können alle gängigen Bastelplatinen bereitstellen: Die verschiedenen Arduinos reservieren dafür fest Pin 4 (Daten) und 5 (Zeitsignal). ESP8266 und ESP32 können jeweils zwei beliebige ihrer GPIO-Pins für I2C verwenden und arbeiten bei Bedarf sogar als Master für mehrere I2C-Busse. Beim Raspi muss man I2C über raspi-config aktivieren und findet das Zeitsignal anschließend an GPIO 5 und die Daten an GPIO 3.