Raspberry Pi: GPIO-Pins Belegung und ansteuern

Raspberry Pi: GPIO-Pins Belegung und ansteuern

Das was den Raspberry Pi so besonders oder erst zum Raspberry Pi macht sind die GPIO-Pin’s. GPIO steht für General Purpose Input Output und genau die Bezeichnung erklärt wozu die Pin’s gut sind. Wobei nicht alle 40 Pin’s auch wirkliche GPIO-Pin’s sind.

So agieren die GPIO-Pin’s als Schnittstelle zwischen dem Raspberry Pi zu anderen Geräten und digitalen Schaltungen. Unter anderem lassen sich mit den Pin’s Daten von Sensoren auswerten, elektronische Schaltungen einbinden und externe Geräte, wie z.B. Screen-Displays, Motoren oder LEDs steuern.

Belegung der GPIO-Pin’s

Wie bereits erwähnt, sind nicht alle 40 Pin’s auch wirkliche GPIO-Pin’s. Da vier der  Pin´s der Stromversorgung – zwei liefern 3,3 Volt und die beiden anderen 5 Volt – und acht als Masseanschluss (Ground) dienen. So bleiben letzten endlich insgesamt 26 GPIO-Pin’s übrig, von denen sich wiederum 17 wahlweise als Ein- oder Ausgang ansteuern lassen.

// Abbildung

Unterschieden bei der Zuordnung werden kann zwischen der eigentlichen Pin-Bezeichnung und der Nummerierung anhand der Anordnung. Beispielsweise entspricht Pin 16 dem GPIO23. Hinweis: Pin 1 erkennt man am quadratischen Lötpad.

GPIOs ansteuern

Die GPIO-Pin’s lassen sich sich beliebig programmieren. Raspbian, ergo das Betriebssystem des Raspberry Pi bringt ein eigenes GPIO-Subsystem als Schnittstelle für Anwendungen mit. Abgelegt werden die erforderliche Dateien zum ansteuern der GPIOs im Pfad

/sys/class/gpio/

Mittels der darin erhältlichen Dateien kann man mit den GPIO-Pin’s kommunizieren. Wie generell üblich, hat nur der Root Zugriff auf Konfigurations- und Kontrolldateien. Daher müssen die folgenden Befehle als Root-Benutzer ausgeführt werden.

Der erste Schritt zum steuern eines GPIOs besteht darin, einen Ordner zu erstellen. Hierzu bedient man sich dem Kommando:

~ $ echo [GPIO-Pin Nr.*] > /sys/class/gpio/export

* [GPIO-Pin Nr.*] als Platzhalte steht für den entsprechenden Pin, z.B. ~ $ echo 23 > /sys/class/gpio/export

Daraufhin erstellt das Kernel ein neues Verzeichnis /sys/class/gpio/gpio23. Enthalten im Verzeichnis sind die folgenden vier relevanten Dateien, samt Ausgangswert:

  • active_low = 0
  • direction = in
  • edge = none
  • value = 0

Die gesamte Steuerung des GPIO erfolgt anhand der vier Dateien.

Und die Bedeutung der Dateien ist…

Pin als Ein- oder Ausgang definieren, also ob man mit dem GPIO lesen (in) oder schreiben (out) möchte.

~ $ echo in >/sys/class/gpio/gpio23/direction

~ $ echo out >/sys/class/gpio/gpio23/direction

Entsprechende Ausgabe Aus-/ Einschalten

~ $ echo 0 >/sys/class/gpio/gpio23/value

~ $ echo 1 >/sys/class/gpio/gpio23/value

Ausgabewert initialisieren

~ $ echo low >/sys/class/gpio/gpio23/direction

~ $ echo high >/sys/class/gpio/gpio23/direction

Pin-Logik invertieren

~ $ echo 0 >/sys/class/gpio/gpio23/active_low

~ $ echo 1 >/sys/class/gpio/gpio23/active_low

Um alle Angaben wieder rückgängig zu machen, bedient man sich der Datei unexport.

~ $ echo 23 > /sys/class/gpio/unexport

GPIOs via Python ansteuern

GPIOs müssen nicht zwingend dateibasiert angesteuert werden. So existieren für diverse Programmiersprachen erstellte Bibliotheken, mit denen sich die GPIOs intuitiver bedienen lassen. Zwei solcher Bibliotheken für Python sind RPI.GPIO » und gpiozero ».

0 Kommentare

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht.