Raspberry Pi – Shell Script zum steuern der GPIOs

Um GPIOs über ein sh-script (Shell Skript) zu steuern / auszulesen gibt es zum Beispiel das Paket „WiringPi„. Mit diesem Paket können ganz einfach die GPIOs am Raspi in den verschiedenen Programmiersprachen sowie per Konsole angesteuert werden. Vor der Installation des Pakets muss der Raspberry Pi wie hier beschrieben aktualisiert werden.

1. Installation

Installiert wird das Paket über den Befehl:

sudo apt-get install wiringpi

Falls es bei der Installation Probleme geben sollte, kann das WiringPi-Paket auch über GIT bezogen werden:

sudo apt-get install git-core (falls GIT noch nicht vorhanden, dann installieren)
git clone git://git.drogon.net/wiringPi (Daten herunterladen)
cd wiringPi (in das Verzeichnis wiringPi wechseln)
./build (Installationsscript ausführen um WiringPi automatisch einzurichten)

Es kann aber auch manuell installiert werden:

wget http://project-downloads.drogon.net/files/wiringPi.tgz (Daten herunterladen)
tar xfz wiringPi.tgz (entpacken)
cd wiringPi/wiringPi (in das Verzeichnis wechseln)
make (kompilieren, weitere Infos: https://wiki.ubuntuusers.de/Programme_kompilieren/)
make install (installieren)
cd ../gpio (in das Verzeichnis wechseln)
make (kompilieren)

2. Beispiel-Befehle und PIN-Belegung

Nach der Installation ist das Paket direkt benutzbar. In der Konsole kann es zum Beispiel durch den Befehl

gpio -v

getestet werden. Dieser Befehl gibt die Version aus. Hier eine Übersicht über die Befehle: http://wiringpi.com/the-gpio-utility/

Um einzelne GPIOs an- oder auszuschalten gibt man folgende Befehle ein:

gpio mode 7 out

Auswirkung: Es wird festgelegt wie der WiringPi Pin 7 verwendet werden soll. In dem Fall soll er als Ausgang dienen. Weiter unten zeige ich die unterschiedlichen Parameter des mode Befehls.

gpio write 7 1

Auswirkung: WiringPi Pin 7  wird angeschalten.

gpio read 7

Auswirkung: Status des WiringPi Pin 7  wird ausgelesen.

gpio write 7 0

Auswirkung: WiringPi Pin 7  wird ausgeschalten.

gpio readall

Auswirkung: Zustand aller Pins wird angezeigt.

ACHTUNG: Die WiringPi Pins unterscheiden sich von den GPIO Bezeichnungen der Pins. Hier ist ein Überblick über die unterschiedlichen Bezeichnungen:


Quelle: http://wiringpi.com/pins/

Sollen nicht die WiringPi Pins verwendet werden sondern die „Raspberry Bezeichnung“, verwendet man den Befehl

-g

Beispiel:

gpio -g write <pin> 1

Parameter des mode Befehls:

gpio mode <pin> in/out/pwm/clock/up/down/tri

Dies stellt den Modus eines Pins als Eingangs-, Ausgangs-, PWM- oder Clock-Modus ein. Zusätzlich kann man die internen Pull-Up / Down-Widerstände auf Pull-Up, Pull-Down oder None stellen. Nähere Infos unter: http://wiringpi.com/the-gpio-utility/

3. Shell-Skript erstellen

Um die GPIOs per sh-Script zu schalten muss zuerst ein Script erstellt werden:

sudo nano gpio.sh

Inhalt des Scripts:

#!/bin/bash
gpio mode 7 out 
gpio write 7 1
sleep 5
gpio write 7 0
sleep 1
done

Erklärung:
gpio mode 7 out: Der Pin 7 wird als Ausgang definiert.
gpio write 7 1: Der Pin 7 wird angeschalten.
sleep 5: 5 Sekunden warten.
gpio write 7 0: Der Pin 7 wird ausgeschalten.
sleep 1: 1 Sekunden warten.

Script ausführbar machen:

sudo chmod +x gpio.sh

Script ausführen:

/home/pi/gpio.sh

Dieses Script kann zum Beispiel für die Sprachsteuerung mit Jarvis verwendet werden.


6 Kommentare

martin · 10. Juli 2019 um 22:30

das script wirft nur „Syntaxfehler beim unerwarteten Wort `done'“ aus

    CS · 11. Juli 2019 um 10:46

    Hallo Martin,

    prüfe mal bitte ob Du alles korrekt abgeschrieben / kopiert hast oder ob noch zusätzliche Sachen in Deinem Skript integriert sind.
    Funktionieren die Zeilen einzeln im Terminal wie unter Punkt 2 (Beispiel-Befehle und PIN-Belegung)?

    Gruß Christian

Stefan · 1. Oktober 2019 um 19:22

Hallo,
tolle Sache, danke für deine Anleitung. Ich habe eine Frage, wie spreche ich das Shell Script an ?
Also was muss ich sagen, das das Script ausgeführt wird ?
Habe dazu nichts gefunden oder überlesen…

Danke für deine Hilfe.

Gruß
Stefan

Endric · 6. Januar 2020 um 17:24

Hallo,

ein super Tutorial, wofür ich sehr dankbar bin. Habe versucht nun ein Skript für Jarvis zu erstellen. Bei der Ausführung bekomme ich aber immer die Fehlermeldung: /usr/local/bin/jarvis: Zeile 367: /home/pi/servo1.sh: Keine Berechtigung.
Ich habe als User alle Rechte, kann Jarvis aber nicht als su starten, weil ich dann die Meldung bekomme, das Jarvis kein Root braucht.

Weisst Du woran das liegen kann?

Viele Grüße
Endric

    CS · 16. Februar 2020 um 9:35

    Hallo Endric,

    sorry für die späte Rückmeldung. Kurze Rückfrage, kommt die Fehlermeldung nur bei Deinem Skript? Oder auch bei dem obigen Beispielskript von mir?

    Grüße Christian

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Translate »