Seit längerem bin ich auf der Suche nach einem Modul mit dem ich die I/O Schnittstelle des Raspberry Pi erweitern kann. Wichtig dabei war mir, dass dies sehr komfortabel am besten mit einer Python Bibliothek geht. Der MCP23017 Chip bietet eine I2C Schnittstelle über die seine Eingänge und Ausgänge angesprochen werden können.
Von Adafruit gibt es einen Python Bibliothek mit der auf den MCP23017 Chip zugegriffen werden kann und die Eingänge geschalten bzw. ausgelesen werden können. Somit ist der Chip, verbaut auf einem kleinen Board, mit seinen 16 Ein- und Ausgängen ideal für meine Anwendungsfälle.

Raspberry Pi MCP23017 port expander

Raspberry Pi MCP23017 port expander

MCP23017 Anwendungsfälle

Ich möchte z. B. ein kleines Relais mit dem Board schalten um einen IR Scheinwerfer aktivieren zu können. Aber es sollte auch möglich sein die günstigen HC-SR04 Ultraschallsensoren mit diesem Board um eine I2C Schnittstelle zu erweitern. Das nachfolgende Bild zeigt die Platine mit dem aufgelöteten MCP23017 Chip als Port Expander für den Raspberry Pi.

Raspberry Pi MCP23017 front chip

Raspberry Pi MCP23017 front chip

MCP23017 I2C Adresse einstellen

Auf der Rückseite des Boards sind ei Eingänge und Ausgänge entsprechend ihrer Funktion nummeriert. Mit den Anschlüssen A0 / A1 / A2 kann die I2C Adresse gesetzt werden. Ich habe dazu den Pin A2 mit einem Jumper Kabel an Vcc (5V) angeschlossen und so die Adresse 0x26 erhalten.

Für das Board passende Stiftleisten waren im Lieferumfang mit enthalten. Diesen nur noch auf das kleine Board aufgelötet werden.

Raspberry Pi MCP23017 back numbering

Raspberry Pi MCP23017 back numbering

MCP23017 Python Bibliothek:

Ich hatte auf GitHub nach einer Bibliothek für den MCP23017 Chip gesucht und ein Projekt gefunden. So habe ich dieses in meinen Account geforked und die Dokumentation etwas angepasst. Die Bibliothek funktioniert unter Raspbian zusammen mit einem Raspberry Pi und diesem MCP23017 Board perfekt.

Webseite: https://github.com/custom-build-robots/Raspberry-Pi-MCP23017-library

Damit euch die Ansteuerung der Pins des MCP23017 Boards leichter fällt habe ich ein kleine Übersicht als Tabelle erstellt.

Programm Pin MCP23017 Board B MCP23017 Board A Programm Pin
8 B0 A0 16
7 B1 A1 15
6 B2 A2 14
5 B3 A3 13
4 B4 A4 12
3 B5 A5 11
2 B6 A6 10
1 B7 A7 9

Ich habe einen kleinen Versuchsaufbau mit einem HC-SR501 Bewegungsmelder aufgebaut. Das Programm “pir-HC-SR501-test.py” dafür ist mit ein paar Zeilen sehr klein und steht ebenfalls auf GitHub zur Verfügung.

MCP23017 PIR sensor HC-SR501

MCP23017 PIR sensor HC-SR501

Technische Daten:

Das wirklich tolle an diesem Chip ist, dass je nach Spannung die an Vcc angelegt wird das Board mit 3,3V oder 5,0V betrieben werden kann. So kann dieses z. B. über einen 3,3V zu 5,0V I2C Level-Shifter komfortabel mit dem Raspberry Pi über den I2C Bus angeschlossen werden und gleichzeitig 5,0V Sensoren oder auch Schalter angeschlossen werden. Wichtig ist nur, dass auf der Seite vom Raspberry Pi nie eine Spannung größer 3,3V an den I2C Bus angelegt wird.

16-Bit Remote Bidirektionale I/O-Port:
-I/O pins standardmäßig als Eingang geschalten

High-Speed I2C Schnittstelle:
-100 kHz
-400 kHz
-1,7 MHz

High-Speed SPI Schnittstelle:
-10 MHz (maximal)

Funktionen:

Drei Pins um die Hardwareadresse setzen zu können für bis zu acht Geräte am I2C Bus.
Externer Pin für einen Hardware Reset.

Betriebsspannung:
-1,8 V zu 5,5 V @-40 ° C bis + 85 ° C
-2,7 V zu 5,5 V @-40 ° C bis + 85 ° C
-4,5 V zu 5,5 V @-40 ° C bis + 125 ° C

(Visited 1.707 times, 1 visits today)