Raspberry Pi: GPIO - General Purpose Input Output

Raspberry Pi: GPIO - General Purpose Input Output

General Purpose Input Output, kurz GPIO, bezeichnet programmierbare Ein- und Ausgänge, die man für unterschiedliche Zwecke nutzen kann. GPIOs werden auf Platinen als Lötpunkte oder Pins in Form einer Stiftleiste herausgeführt und dienen als Schnittstelle zu anderen Systemen, Schaltungen oder Bauteilen, um diese über einen Raspberry Pi zu steuern. Dabei kann der Raspberry Pi bei entsprechender Programmierung digitale Signale von außen annehmen (Input) oder Signale nach außen abgeben (Output).
Viele der GPIOs erfüllen je nach Einstellung und Programmierung unterschiedliche Funktionen. Neben den typischen GPIO-Ein- und Ausgängen finden sich aber auch Pins mit der Doppelfunktion für I2C, SPI und eine serielle Schnittstelle.

Die GPIOs sind oftmals nur als Lötpunkte oder, beim Raspberry Pi vom Modell abhängig, als zweireihige Stiftleiste herausgeführt. Je nach Modell weist ein Raspberry Pi eine Stiftleiste mit 26 oder 40 Pins auf, wovon allerdings nicht alle zur Ein- oder Ausgabe dienen. Einige Pins führen ein festgelegtes +5V-, +3,3V- oder 0V-Potential.

GPIO-Belegung

Die GPIOs sind oftmals nur als Lötpunkte, beim Raspberry Pi vorteilhafterweise als Stiftleiste, herausgeführt. Je nach Modell weist ein Raspberry Pi eine Stiftleiste mit 26 oder 40 Pins auf, wovon allerdings nicht alle zur Ein- oder Ausgabe dienen. Einige Pins führen ein +5V-, +3,3V- oder 0V-Potential.

Die Funktion vieler Pins sind flexibel gestaltet, manche sogar doppelt belegt. Das heißt, vor deren Nutzung muss man ihnen per Programmierung eine Funktion zuteilen. In jedem Fall muss vor der Nutzung eines GPIO dessen Funktion initialisiert werden. Ausgenommen sind die Potential-führenden Pins. Deren Spannung ist immer fest eingestellt.

Elektrische Eigenschaften

Die GPIO-Pins weisen mehrere elektrische Eigenschaften auf, die für Elektronik-Einsteiger verwirrend sein können. Es ist allerdings allgemein so, dass alle elektrischen Systeme elektrische Eigenschaften aufweisen, die beachtet werden müssen, weil es sich dabei häufig um Kenngrößen und Grenzwerte handelt, die über Funktion und Funktionsweise des elektrischen Systems entscheiden. Oder einfach ausgedrückt, die Beachtung der elektrischen Eigenschaften jedes einzelnen elektronischen Bauteil entscheidet darüber, ob eine Schaltung funktioniert oder nicht. Oder ob das System nach der Inbetriebnahmen Schaden nimmt und anschließend einen Defekt aufweist.

Grundsätzlich, der Raspberry Pi wird mit 5 Volt gespeist. Allerdings arbeitet der System on Chip auf Basis von 3,3 Volt, was bedeutet, dass auch die GPIOs mit 3,3 Volt arbeiten. Sowohl eingangs- als auch ausgangsseitig.
Desweiteren verträgt ein GPIO nur ein paar Milliampere (mA) Strom. Je nach Quelle ist von einem anderen Wert die Rede. Man spricht von maximal 16 mA. Wobei Ein- und Ausgänge bereits mit 0,5 mA sicher schalten. Wenn man es sich bei der Dimensionierung einfach haben will, dann kann man mit 1 oder 2 mA rechnen. Je nach Beschaltung sollte man aber nicht mehr als 8 mA aus einem GPIO ziehen.

Die Belegung der GPIO-Stiftleiste weist auch +5V-Pins auf, die dazu dienen ein +5V-Potential anzubieten, wenn äußere Schaltungen diese benötigen. Allerdings ist auch hier die Stromentnahme begrenzt. Auf insgesamt 50 mA für alle GPIO-Pins zusammen.
Das bedeutet, über einen GPIO-Pin kann man keine externen Schaltungen betreiben. Die müssen eine eigene Stromversorgung haben. Beispielsweise durch ein zweites USB-Netzteil oder ein USB-Netzteil mit einem zweiten USB-Port.

Steuern der GPIO-Ausgänge und -Eingänge über einen Webserver

Wenn man beispielsweise per Webserver auf Scripte zugreift, die die GPIO-Pins steuern, dann kann es sein, das es nicht funktioniert, obwohl die aufgerufenen Scripte auf der Kommandozeile funktionieren. Das liegt daran, weil es für den Zugriff auf die GPIOs eine eigene Benutzergruppe mit dem Namen "gpio" gibt. Darüber stolpert man gerne, weil man auf der Kommandozeile die Scripte mit dem Benutzer "pi" ausführt und der sich schon in der Gruppe "gpio" befindet, also zur Ausführung der Scripte berechtigt ist.
Der Benutzer des Webservers ist aber nicht "pi", sondern in der Regel "www-data". Damit ein über diesen Benutzer aufgerufenes Script die GPIOs steuern darf, muss dieser Benutzer in die Benutzergruppe "gpio".

sudo usermod -G gpio -a www-data

Anschließend muss man noch den Webserver neu starten.

Stromversorgung über den GPIO

Es sind bestimmt schon viele Raspberry Pis gestorben, weil Basteleien an den GPIO-Pins nicht korrekt verschaltet wurden. Ein einzelner GPIO-Pin liefert höchstens 16 mA. Alle GPIO-Pins zusammen höchstens 50 mA. Geht man beim Modell B+ von 40 GPIO-Pins aus, von denen aber nur 26 Stück als Ein- und Ausgänge beschaltet werden können, dann liegt der Strom, den man aus einem GPIO-Pin ziehen darf, wenn man alle gleichzeitig als Ausgang nutzt, bei unter 2 mA.
Da man nicht alle Pins gleichzeitig als Ausgang nutzen wird, sollte die Stromentnahme pro Pin nicht höher als 3 bis 5 mA liegen. Je weniger, desto mehr Pins kann man als Ausgang benutzen und desto stabiler läuft das Ganze.
In der Regel reicht es, wenn man mit einem Strom von 0,5 bis 1 mA an einem GPIO-Ausgang arbeitet.

Hinweis: Die GPIO-Pins eignen sich zum Schalten, aber nicht zur Stromversorgung durch externe Schaltungsteile. Die brauchen ihre eigene Stromversorgung. Zum Beispiel durch ein zweites USB-Netzteil. Oder einem USB-Netzteil mit einem zweiten USB-Port.

Übersicht: GPIOs beschalten

Übersicht: GPIOs steuern und programmieren

Sicherheitshinweis

Wenn man die Pins beschaltet, dann sollte man sicherstellen, dass die Pins entsprechend Ihrer Funktion beschaltet sind. Also ein Eingang als Eingang und ein Ausgang als Ausgang. Wenn man zwei Ausgänge miteinander verbindet und einer auf 0 V liegt und der andere auf 3,3 V, dann fließt hier ein Strom von Ausgang zu Ausgang. Das kommt einem Kurzschluss gleich, was den GPIO dauerhaft beschädigen kann.

Weitere verwandte Themen:

Hardware-nahes Programmieren mit dem Raspberry Pi, Python und GPIO Zero

Elektronik-Set Raspberry Pi Edition

Das "Elektronik-Set Raspberry Pi Edition" ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit Python und GPIO Zero.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Verschiedene Zustände auswerten und anzeigen lassen
  • LED mit Taster einschalten und ausschalten
  • Relais-Board steuern
  • LED, Relais-Board und Motor über ULN2003A steuern
  • Ampel- und Lauflicht-Steuerung
  • Herunterfahren per Taster
  • Reaktionsspiel mit Tastern und LEDs
  • Eigene Steuerungen programmieren

Elektronik-Set jetzt bestellen

Frag Elektronik-Kompendium.de

Elektronik-Set Raspberry Pi Edition
Elektronik-Set Raspberry Pi Edition

Elektronik erleben mit dem Raspberry Pi mit Python und GPIO Zero

  • Leichter Einstieg ins Hardware-nahe Programmieren mit Python und GPIO Zero
  • Experimentieren und Programmieren ohne Vorkenntnisse
  • Sofort Loslegen mit All-in-one-Set

Elektronik-Set jetzt bestellen

Elektronik-Fibel

Elektronik einfach und leicht verständlich

Die Elektronik-Fibel ist ein Buch über die Grundlagen der Elektronik, Bauelemente, Schaltungstechnik und Digitaltechnik.

Das will ich haben!