Raspberry Pi’s GPIO: Ein Tor zu unzähligen Projekten

Der Raspberry verfügt über 28 programmierbare Anschlüsse auch GPIO (General purpose input output) genannt und 12 für kontinuierliche externe Stromversorgung.

Diese Anschlüsse öffnen eine Welt voller Möglichkeiten, indem sie den Anschluss einer Vielzahl von Aktoren und Sensoren ermöglichen und so den Funktionsumfang des Raspberry Pi erheblich erweitern.

Jeder GPIO-Pin ist ein digitaler Anschluss, der zum Beispiel als Ausgangspin auf High (3,3 V) oder Low (0 V) gesetzt werden kann. Dies ermöglicht eine präzise Steuerung und Interaktion mit einer Vielzahl von Geräten wie LEDs, Relais, Motoren, Lautsprecher usw.
Sie könnten beispielsweise eine LED-Matrix anschließen und dann Text oder Bilder auf der Matrix anzeigen, oder Piezo-Lautsprecher anschließen und dann verschiedene Töne erzeugen, um Musik oder Sprache abzuspielen.

Wenn die GPIO-Pins des Raspberry Pi als Eingang konfiguriert werden, eröffnen sich weitere zahlreiche Möglichkeiten. So kann man sensorbasierte Projekte durchführen, interaktive Projekte mit Tasten und Schaltern erstellen, mit anderen Geräten kommunizieren, Alarmsysteme erstellen und sogar Ihre eigene Wetterstation aufbauen.
So könnte beispielsweise ein Taster oder Bewegungsmelder verwendet werden, um eine Lampe ein- und auszuschalten oder um ein bestimmtes Skript auf dem Raspberry Pi auszuführen.
Oder das verwenden der vielfältigen Sensoren können, um Daten aus der Umgebung zu sammeln und auf dieser Basis Aktionen auszuführen.

Da es keine Analogen Aus- oder Eingänge gibt, kann eventuell Pulsweitenmodulation als Softwarelösung weiter helfen oder Hardwareseitig, über diese Anschlüsse mit einer Erweiterungsplatine wie zum Beispiel dem ADS1115 ergänzt werden.

Es hilft auf jeden Fall, sich vorab von jedem Modul das angeschlossen werden soll, das Hersteller Datenblatt aufmerksam zu studieren und die zu erwartenden Funktion zu kennen.

Einige Funktionen sind an allen Pins verfügbar, andere an bestimmten Pins:

  • PWM (Pulsweitenmodulation)
    • Software-PWM an allen Pins verfügbar
    • Hardware-PWM verfügbar auf GPIO12, GPIO13, GPIO18, GPIO19
  • SPI
    • SPI0: MOSI (GPIO10); MISO (GPIO9); SCLK (GPIO11); CE0 (GPIO8), CE1 (GPIO7)
    • SPI1: MOSI (GPIO20); MISO (GPIO19); SCLK (GPIO21); CE0 (GPIO18); CE1 (GPIO17); CE2 (GPIO16)
  • I2C
    • Daten: (GPIO2); Takt (GPIO3)
    • EEPROM-Daten: (GPIO0); EEPROM-Uhr (GPIO1) somit nur eingeschränkt nutzbar!
  • Seriell
    • TX (GPIO14); RX (GPIO15)

Eine wichtige Einschränkung, die Anschlüsse nie mit mehr als 50mA belasten.

Den Belegungsplan mit weiteren Informationsquellen ist hier zu finden.


Aber genug der Theorie, wie diese interessanten GPIO verwendet werden können, soll diese Einführung euch näher bringen.

Wie auch bei den Arduino Boards, ist es ein guter Einstieg erstmal mit einer an Pin 18 angeschlossenen LED zu erfahren, wie diese mit einem Python Script zum blinken gebracht werden kann.

Um eine LED mit einem Raspberry Pi blinken zu lassen, benötigen Sie einige Materialien.

Materialien:
Raspberry Pi 3 / 4 / 5 (incl Zubehör + MicroSD-Karte)
Breadboard incl Jumper-Kabel
LEDˋs mit Vorwiderstände

Verdrahtung:
Die LED erhält einen Vorwiderstand von mindestens 160 Ohm, da an Pin 18 des Raspberry Pi, an dem die LED angeschlossen wird, im eingeschalteten Zustand 3,3 Volt anliegen. Die Verdrahtung wie immer vorab stromlos stecken und dann wenn fertig erst den Raspberry an das Netzteil anschließen.

Da bei den Rasperry Pi der Modelle 3 bis 5 die GPIO Bezeichnungen unverändert sind, habe ich mir eine Schablone als zusätzlich Hilfe für die Verdrahtung erstellt. Den Download für 3D Druck gibt es hier
(Dient nur zur Hilfe, vor Inbetriebnahme immer mit Hersteller Datenblatt abgleichen)


Wenn diese Vorbereitung abgeschlossen ist, kann es los gehen:

  1. Der Raspberry Pi benötigt erstmal ein Betriebssystem
    • Betriebssystem installieren:
      • Gehe auf die offizielle Raspberry Pi-Website und installiere den aktuellen Raspberry Pi Imager auf dem Heimrechner. Starte diesen.
      • Wähle den vorliegende Raspberry Pi Typ aus.
      • Dann das gewünschte Betriebssystem
        (zum Beispiel Raspberry Pi OS 64-Bit mit Desktop (Debian Bookworm))
      • Stecke eine schnelle MicroSD-Karte mit mindestens 32GB an den PC mit Internetanschluss und wähle diesen aus.
        • Optional kann hier schon Hostname, Benutzername, Passwort, WiFi-Zugangsdaten, Sprache eingestellt werden
  • Starte Schreibvorgang und bestätige das diese SD-Karte vorab gelöscht werden darf. Betriebssystem wird nun auf die Karte geschrieben
  • Hardware verbinden:
    • Stecke danach die microSD-Karte in den Raspberry Pi.
    • Verbinde (Micro-)HDMI-Monitor, Tastatur, Maus und geeigneten USB Netzteil.
    • Schalte den Raspberry Pi ein. (Bei erstem ist der Start automatisch)
  • Grundlegende Konfiguration:
    • Folge ggf. den Setup-Anweisungen auf dem Bildschirm.
    • Standard Password ist „raspberry“. Ändern Sie das Passwort für den Benutzer „pi“ (sofern nicht schon beim erstellen der Karte geschehen)
  • Optional kann unter Einstellungen/Konfiguration im Reiter Schnittstellen VNC aktiviert werden, um Remote von deinem Home-PC zu arbeiten.
  • Installiere nun die notwendige Software auf den Raspberry Pi, falls noch nicht geschehen. Benötigt wird Python und die Bibliothek RPi.GPIO.
    Öffne dazu das Terminal und arbeite diese 4 Befehle ab:

sudo apt-get update

sudo apt-get upgrade

sudo apt-get install python3

sudo apt-get install python3-rpi.gpio

  1. Erstelle eine Python-Datei (blink.py) mit zum Beispiel Mousepad unter Zubehör und füge den folgenden Code ein. Speichern dann im persönlichen Ordner.
import RPi.GPIO as GPIO
import time

# verwende GPIO Nummer statt Board Nummer 
GPIO.setmode(GPIO.BCM)

# Definiere den Pin, an den die LED angeschlossen ist
LED_PIN = 18

# Setze den LED-Pin als Ausgang
GPIO.setup(LED_PIN, GPIO.OUT)

try:
    while True:
        # LED ein
        GPIO.output(LED_PIN, GPIO.HIGH)
        time.sleep(1) # Warten Sie eine Sekunde

        # LED aus
        GPIO.output(LED_PIN, GPIO.LOW)
        time.sleep(1) # Warten Sie eine Sekunde
except KeyboardInterrupt:
    # Wenn das Programm mit Ctrl+C beendet wird, setzen Sie die Pins zurück
    GPIO.cleanup()

4. Führe das Programm mit dem Befehl python3 blink.py im Terminal aus.
Deine LED sollte jetzt blinken 🙂

Erweiterung zu einer Ampelsimulation:

Wenn jetzt an Pin 23 und 24 noch eine gelbe und grüne LED dazu kommt haben wir eine kleine Ampelanlage mit diesem Code:

import RPi.GPIO as GPIO
import time

# Setzen Sie den Pin-Modus
GPIO.setmode(GPIO.BCM)

# Definieren Sie den Pin, an den Ihre LED angeschlossen ist
LED_PIN1 = 18 # LED rot
LED_PIN2 = 23 # LED grün
LED_PIN3 = 24 # LED gelb

# Setzen Sie den LED-Pin als Ausgang
GPIO.setup(LED_PIN1, GPIO.OUT)
GPIO.setup(LED_PIN2, GPIO.OUT)
GPIO.setup(LED_PIN3, GPIO.OUT)

try:
    while True:
        # LED wird grün
        GPIO.output(LED_PIN3, GPIO.LOW)
        GPIO.output(LED_PIN1, GPIO.HIGH)
        time.sleep(3) # Warten Sie eine Sekunde
        GPIO.output(LED_PIN3, GPIO.HIGH)
        time.sleep(2) # Warten Sie eine Sekunde
        
        # LED ist grün
        GPIO.output(LED_PIN1, GPIO.LOW)
        GPIO.output(LED_PIN3, GPIO.LOW)
        GPIO.output(LED_PIN2, GPIO.HIGH)
        time.sleep(4) # Warten Sie eine Sekunde        
        
        # LED wird gelb

        GPIO.output(LED_PIN2, GPIO.LOW)
        GPIO.output(LED_PIN3, GPIO.HIGH)
        time.sleep(3) # Warten Sie eine Sekunde
except KeyboardInterrupt:
    # Wenn das Programm mit Ctrl+C beendet wird, setzen Sie die Pins zurück
    GPIO.cleanup()

Lesematerial:
Wer sich gerne tiefer in die Programmiersprache Python 3 hineinlesen möchte, dem Empfehle ich das Openbook von Rheinwerk. Die 5. Auflage des Buches gibt es hier kostenfrei online zu lesen.

Video:

3D-Druck:
Den einfachen Breadboard-Halter für den Raspberry Pi zum Ausdrucken gibt es hier. Zum Verschrauben habe ich kleine Blechschrauben 2mm*4 verwendet.

Die vorgestellte Schablone gibt es hier


,