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
CS · 1. Oktober 2019 um 21:41
Hallo Stefan,
schau Dir bitte diesen Teil nochmal an:
https://schmidt-feldberg.de/sprachsteuerung-auf-dem-raspberry-pi-mit-jarvis-teil-2-start-und-konfiguration/
Unter Punkt 3 steht dieser Beispielaufruf:
*Starte Skript*== /home/pi/meinscript.sh
Ich hoffe das hilft Dir weiter.
Viele Grüße
Christian
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