Anschlußklemmbrett eines 3-Ph-Motors


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


Raspberry Pi: GPIOs mit Bash steuern


Es gibt mehrere Möglichkeiten, die GPIOs des Raspberry Pi anzusprechen. Wenn man schnell die GPIOs testen und prüfen möchten, ohne gleich ein Python-Programm erstellen zu müssen, kann dies mit Bash direkt im LXTerminal erledigen können. Mit Bash ist es sogar möglich, kleine Scripte zu erstellen, die dann wie normale Programme zum Laufen gebracht werden können. Die Bash Programmierung erfolgt direkt im LXTerminal, keine weiteren Programme müssen gestartet werden. Bei Erstellung von Scripten wird ein Texteditor verwendet. Ein solcher Eingabe-Editor kann einfach mit dem Kommando „nano“ geöffnet werden.

Die Schaltung

Folgend ein kleines Beispiel mit 3 Tastern und zwei Leuchtdioden. Nachdem die Eingänge und Ausgänge getestet wurden, wird ein einfaches Script, an dem die Taster und Leuchtdioden teilnehmen, erstellt. Mit dem ersten Taster wird die erste Leuchtdiode eingeschaltet. Mit dem zweiten Taster die zweite. Beim Betätigen des dritten Tasters wird ein Blinkmodus aktiviert und die beiden Leuchtdioden werden dann abwechselnd ein- und ausgeschaltet.

Der Schaltplan

Zunächst skizzieren wir einen Schaltplan. Es werden insgesamt fünf Pins des Raspberry Pi in Anspruch genommen. Für die Aufgabe kann jeder beliebige Pin gewählt werden. Drei Pins, an die die Taster S1 bis S3 angeschlossen werden, werden dann anschließend als Eingänge definiert. Mit dem vierten und fünften Pin, die als Ausgänge definiert werden, werden die Leuchtdioden angesteuert. Mit drei Pulldown Widerständen R1 bis R3 stellen wir sicher, dass die Eingänge des Raspberry Pi bei geöffneten Tastern den Wert Low haben.

Schaltplan

Schaltplan

Beispiel für den Aufbau einer Testschaltung:

Testschaltung

Testschaltung

Bevor man sich dem Script widmet, sollen die einzelnen Verbindungen überprüft werden. Zu beachten ist, dass manche Funktionen nur dem Root-Nutzer zugänglich sind (Bei Bedarf „sudo“ voranstellen). Mit einigen Kommandos in dem LXTerminal wird die Leuchtdiode LD1 ein- und ausgeschaltet:

$ cd /sys/class/gpio - in das Verzeichnis /sys/class/gpio wechseln.
$ echo 27 > export - Es wird das Verzeichnis gpio27 generiert
$ echo out > gpio27/direction - Der Anschluss GPIO27 (Pin 13) wird als Ausgang definiert
$ echo 1 > gpio27/value - Der Ausgang wird auf High gesetzt. Die Leuchtdiode geht an.
$ echo 0 > gpio27/value - Mit der Eingabe wir die Leuchtdiode wieder ausgeschaltet.

Wenn man mehr erfahren möchte, was im Hintergrund passiert, kann man mit "cd gpio27" in das neu angelegte Verzeichnis wechseln, mit "ls" den Inhalt auflisten lassen und z.B. mit "nano value" sich die "value" Datei anschauen. Hier steht eine 1, wenn man den Ausgang auf High setzt, oder eine 0, wenn der Ausgang wieder abgeschaltet wird. Mit "unexport" werden GPIOs wieder deaktiviert.

$ echo 27 > unexport

Ähnlich verfahren wir, um einen Eingang zu prüfen:

$ cd /sys/class/gpio - in das Verzeichnis /sys/class/gpio wechseln (falls noch nicht geschehen)
$ echo 16 > export - Es wird das Verzeichnis gpio16 generiert
$ echo in > gpio16/direction - Der Anschluss GPIO16 (Pin 36) wird als Eingang definiert
$ cat gpio16/value - Eingang GPIO16 abfragen. Bevor man „Enter“ betätigt, hält man den Taster S1 gedrückt. Als Ergebnis erscheint im Terminal eine 1 (eins).

Das Script

Nachdem alle Anschlüsse geprüft wurden, kann ein Script geschrieben werden. Bash ist eine eigenständige Programmierungssprache, hat viele Anhänger und wird oft eingesetzt. Das Programm (Script) wird in einer Textdatei geschrieben, die anschließend ausführbar gemacht werden muss. Mit

$ sudo nano LED

wird eine Datei mit den Namen "LED“ angelegt. Hier kann man direkt mit Erstellung des Scripts beginnen. In diesem Fall befindet sich "LED“ im pi-Verzeichnis. Das Script:


# ----------------------------------------------------------
# Raspberry Pi, GPIOs mit Bash steuern
# ----------------------------------------------------------
                       # Ausführung mit Bash 
#!/bin/bash
                       # GPIO-Schnittstelle generieren 
sudo echo 27 > /sys/class/gpio/export
sudo echo out > /sys/class/gpio/gpio27/direction

sudo echo 22 > /sys/class/gpio/export
sudo echo out > /sys/class/gpio/gpio22/direction

sudo echo 16 > /sys/class/gpio/export
sudo echo in > /sys/class/gpio/gpio16/direction

sudo echo 20 > /sys/class/gpio/export
sudo echo in > /sys/class/gpio/gpio20/direction

sudo echo 21 > /sys/class/gpio/export
sudo echo in > /sys/class/gpio/gpio21/direction

Ende=0
                       # HAUPTPROGRAMM 
  while [ $Ende -eq "0" ]; do
                       # Sequenz Leuchtdiode 1 EIN  
    Taster1=$(cat /sys/class/gpio/gpio16/value)
    if [ $Taster1 -eq "1" ]; then
        echo 1 > /sys/class/gpio/gpio27/value
        echo 0 > /sys/class/gpio/gpio22/value
    fi
                       # Sequenz Leuchtdiode 2 Ein  
    Taster2=$(cat /sys/class/gpio/gpio20/value)
    if [ $Taster2 -eq "1" ]; then
        echo 1 > /sys/class/gpio/gpio22/value
        echo 0 > /sys/class/gpio/gpio27/value
    fi
                       # Sequenz Blinker  
    Taster3=$(cat /sys/class/gpio/gpio21/value)
    if [ $Taster3 -eq "1" ]; then
      Blinker=1
      for i in {1..20}; do
        echo 1 > /sys/class/gpio/gpio27/value
        echo 0 > /sys/class/gpio/gpio22/value
        sleep 0.3
        echo 0 > /sys/class/gpio/gpio27/value
        echo 1 > /sys/class/gpio/gpio22/value
        sleep 0.3
      done
      Ende=1
    fi
  done
                       # GPIO-Schnittstelle wieder deaktivieren 
  for j in 16 20 21 22 27; do
    sudo echo $j > /sys/class/gpio/unexport
  done
 
# ----------------------------------------------------------
        

Nachdem das Listing erstellt wurde wird die Datei mit Strg+O abgespeichert. Mit STRG+X kann sie dann verlassen werden. Das Programm (Script) wird im LXTerminal, nachdem es ausführbar gemacht wurde, gestartet:

$ chmod +x LED
$ ./LED


Kurzvideo

Kurzvideo: GPIOs mit Bash-Script ansprechen


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz