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