Aus Raspberry Pi Geek 12/2020

USB-GPIO-Bridge MCP2221 im Praxiseinsatz

© Eduardo Gonzalez Diaz, 123RF

GPIOs für alle

Bernhard Bablok

Wer ein Projekt am PC oder einem anderen SBC testen möchte, braucht oft eine GPIO-Leiste. Mit dem MCP2221 rüsten Sie diese bei Bedarf nach.

Fehlt an einem Rechner die GPIO-Leiste, liegt es nah, als Ausweichlösung einen Pi Zero per USB anzustöpseln. Das genügt für die Stromversorgung, und mit etwas Konfiguration [1] klappt via USB auch die Kommunikation zwischen Rechner und RasPi – etwa per Ethernet oder im seriellen Modus. Alternativ verwenden Sie einen Mikrocontroller; die Mitglieder der ESP-Familie kommunizieren dabei sogar drahtlos über WLAN.

Das Naheliegende ist aber nicht immer das Beste: Bei einem solchen Setup brauchen Sie zum Steuern ein Programm auf dem Pi Zero beziehungsweise dem Mikrocontroller und ein zweites auf dem anderen Rechner. Darüber hinaus gilt es noch, die Kommunikation zwischen den beteiligten Stellen zu implementieren. Das Problem ist sattsam bekannt, und die Industrie hat es mit sogenannten USB-GPIO-Brücken gelöst oder zumindest vereinfacht.

Der MCP2221

Ein typischer Vertreter dieser Gattung, der MCP2221 von Microchip, wandert schon für wenig Geld (2,30 Euro etwa bei Reichelt) über die Ladentheke. Abbildung 1 zeigt sein Pinout. Den Chip gibt es außerdem noch in der Version MCP2221A, die sich nur in der maximalen UART-Geschwindigkeit vom MCP2221 unterscheidet.

Abbildung 1: Das Pinout des MCP2221. (Quelle: Datenblatt)

Abbildung 1: Das Pinout des MCP2221. (Quelle: Datenblatt)

Der Chip führt neben vier GPIOs noch eine I2C- und eine serielle Schnittstelle (UART) heraus. Zwei USB-Datenleitungen, Spannung und Masse belegen die restlichen Pins. Den Chip gibt es als SO-14-SMD-Chip und bastlerfreundlich im DIP-14-Gehäuse. Ebenfalls bastlerfreundlich ist die einfache Integration in eigene Schaltungen: Der Chip benötigt nur zwei Kondensatoren, einmal ein 100-nF-Exemplar für Vdd und einmal einen Baustein mit 0,22 bis 0,47 µF für Vusb.

Den Chip gibt es fertig als Breakout sehr teuer von Microchip selbst (25 Euro) und für erschwinglichere 7 Euro von Adafruit (Abbildung 2). Wegen der enthaltenen Schaltpläne sollten Sie sowohl in das Microchip- Datenblatt zum Breakout [2] als auch in das Tutorial von Adafruit [3] einen Blick werfen. Letzteres enthält zusätzlich Anleitungen zur Installation der Software sowie Anwendungsbeispiele.

Abbildung 2: Das Adafruit-Breakout mit MCP2221 kostet wesentlich weniger als die Version von Microchip. Der US-Händler liefert zudem Beispiele für den Einsatz.

Abbildung 2: Das Adafruit-Breakout mit MCP2221 kostet wesentlich weniger als die Version von Microchip. Der US-Händler liefert zudem Beispiele für den Einsatz.

Das Adafruit-Breakout ist aber teurer als der blanke IC und in Deutschland nicht ganz so einfach erhältlich. Dafür bietet es einen USB-C-Anschluss, Pullups für die I2C-Pins und einen speziellen I2C-Konnektor (Stemma-QT) für passende Sensoren. Der Pegel der Pins liegt bei 3,3 Volt, per Durchtrennen des Tracers stellen Sie ihn auf 5 Volt um.

Anwendungsbeispiel

Abbildung 3 zeigt als Beispiel eine kleine Schaltung auf einem Breadboard. Ganz rechts befinden sich die Stromversorgung sowie die Zuleitung der USB-Daten. Hier kommt ein winziges Micro-USB-Breakout zum Einsatz, das es so oder ähnlich bei den üblichen Versendern für wenig Geld gibt.

Abbildung 3: Eine Beispielschaltung auf einem Breadboard verdeutlicht, wie Sie den MCP2221 in eine Schaltung integrieren.

Abbildung 3: Eine Beispielschaltung auf einem Breadboard verdeutlicht, wie Sie den MCP2221 in eine Schaltung integrieren.

Oberhalb davon sitzt ein winziges AMS1117-Breakout-Board, das die Spannung aus dem USB-Anschluss (5 Volt) auf 3,3 Volt wandelt. Der MCP2221 verträgt zwar die 5 Volt, der im Aufbau eingesetzte Sensor aber nicht – deswegen der Wandler.

In der Mitte rechts sitzt der MCP2221. Die drei Kondensatoren unterhalb des Chips sind der Tatsache geschuldet, dass gerade keine passende Variante mit 0,22 bis 0,47 µF griffbereit war. Daher kamen kurzerhand drei 100-nF-Kondensatoren zum Einsatz. Die Daten kommen über die beiden grünen Leitungen vom USB-Anschluss des PCs. Die langen orangefarbenen Kabel führen die I2C-Schnittstelle nach links zum Sensor und zum Display.

An der GPIO-Bridge hängen noch zwei LEDs mit Vorwiderstand. Die GPIOs des MCP2221 haben neben der normalen In- oder Output-Funktion noch alternative Funktionen: So blinkt GP3 vorn links mit entsprechender Konfiguration bei Daten auf dem I2C-Bus.

Links auf dem Breadboard sitzen ein SSD1306-Display und der Sensor BME280, der Temperatur und Luftdruck misst. Beide verfügen über ein I2C-Interface. Da der MCP2221 im Gegensatz zum RasPi keine eingebauten Pullup-Widerstände am I2C-Bus hat, benötigt er externe Widerstände gegen Vdd. Diese sehen Sie rechts vom Display.

Software installieren

Microchip liefert für den Baustein passende Treiber (auch für Linux) und Programme. Viel einfacher ist es aber, die Hardware mit CircuitPython [4] anzusteuern. Da es entsprechende Ports dieser Python-Variante für alle gängigen Betriebssysteme gibt, läuft das hier vorgestellte Programm auf Windows, Mac OS und Linux, auch auf dem RasPi. Bei Letzterem sparen Sie sich aber den MCP2221, denn der RasPi verfügt selbst über einen I2C-Anschluss.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 6 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
RASPBERRY PI GEEK KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Raspberry Pi Geek bei Google Play Readly Logo
Nach oben