Raspberry Pi: GPIO mit "sysfs" steuern und programmieren (Shell/Bash)

Die GPIOs werden auf dem Raspberry Pi als Dateien repräsentiert und befinden sich im Verzeichnisbaum unter "/sys/class/gpio" zu finden. Man bezeichnet das als "sysfs". Wenn man sich den Inhalt der Dateien anzeigen lässt, bekommt man den Zustand heraus. Das ist entweder "1" oder "0".

ls /sys/class/gpio

Bei der Steuerung und Programmierung muss man darauf achten, dass man nicht die Pin-Nummer wählt, sondern die BCM-Nummer des GPIOs. Im folgenden Beispiel konfigurieren wir den GPIO 17 (Pin 11) als Ausgang und den GPIO 18 (Pin 12) als Eingang.

Hinweis: Die Programmierung der GPIOs über "sysfs" ist nicht zu empfehlen. Der empfohlene Weg ist mit dem Kommandozeilentool "pigpio".

GPIO als Eingang oder Ausgang konfigurieren

Um einen GPIO zu konfigurieren muss man ihn zuerst erzeugen. Anschließend entscheidet man sich für die Richtung. Also entweder als Eingang oder Ausgang. Zuerst schalten wir den "GPIO 17" ein.

echo 17 > /sys/class/gpio/export

Wenn der GPIO als Eingang konfiguriert werden soll, dann gilt folgendes Kommando.

echo in > /sys/class/gpio/gpio17/direction

Wenn der GPIO als Ausgang konfiguriert werden soll, dann gilt folgendes Kommando.

echo out > /sys/class/gpio/gpio17/direction

Einen als Ausgang konfigurierten GPIO sollte man anschließend noch einen Zustand, also "high" oder "low" geben.

Zustand eines GPIO-Ausgangs setzten

Grundsätzlich kann man nur Ausgänge setzen. Um den Zustand eines GPIO-Ausgangs auf "high" zu setzen reicht folgendes Kommando.

echo 1 > /sys/class/gpio/gpio17/value

Um den Zustand eines GPIO-Ausgangs auf "low" zu setzen reicht folgendes Kommando.

echo 0 > /sys/class/gpio/gpio17/value

GPIO-Zustand ermitteln

Um den Zustand, also "high" oder "low", an einem GPIO zu ermitteln, reicht folgendes Kommando. Der GPIO kann sowohl ein Eingang als auch ein Ausgang sein.

cat /sys/class/gpio/gpio17/value

Die Ausgabe ist "1" für "high" oder "0" für "low".

GPIO deaktivieren

Wenn man GPIOs nicht mehr braucht, dann sollte man sie deaktivieren. Durch die folgenden Kommandos verschwinden die Dateien und Verzeichnisse der GPIOs wieder. Bei einem Neustart werden die GPIOs automatisch zurückgesetzt.

echo 17 > /sys/class/gpio/unexport

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!