Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
GPIO Projekte
Ein Raspberry Pi kann LEDs, Sensoren, Taster oder Displays direkt über seine GPIO-Pins ansteuern. Diese Pins sind jedoch empfindlich, da sie direkt mit dem Prozessor verbunden sind. Deshalb muss beim Aufbau der Hardware sorgfältig gearbeitet werden: richtige Spannungen verwenden, Bauteile korrekt anschließen und Änderungen nur im ausgeschalteten Zustand vornehmen. Ziel ist es, einfache Schaltungen sicher aufzubauen und die Grundlagen für spätere Projekte mit Elektronik zu erlernen.
Überblick
- Hardware ansteuern
- Programmstruktur anlegen
- Projekt: LED mit Python
- Projekt: Temperatursensor mit Python
Details
Hardware ansteuern
Ein Raspberry Pi kann LEDs, Sensoren, Taster oder Displays direkt über seine GPIO-Pins ansteuern. Diese Pins sind jedoch empfindlich, da sie direkt mit dem Prozessor verbunden sind. Deshalb muss beim Aufbau der Hardware sorgfältig gearbeitet werden: richtige Spannungen verwenden, Bauteile korrekt anschließen und Änderungen nur im ausgeschalteten Zustand vornehmen. Ziel ist es, einfache Schaltungen sicher aufzubauen und die Grundlagen für spätere Projekte mit Elektronik zu erlernen.
Anfänger sollten sehr vorsichtig sein! Tatsächlich ist ein Arduino für erste Experimente (wegen des geringeren Preises) häufig die bessere Wahl.
Bitte alle Anweisungen beachten und im Zweifel den Tutor fragen.
Gerade Anfängern passiert es leider immer wieder, dass sie versehentlich genau das Falsche tun.
- Hardware-Anpassungen nicht durchführen, während der Raspberry Pi mit Strom versorgt ist.
- Vor der Inbetriebnahme die Hardware vom Tutor kontrollieren lassen.
- Niemals GPIO-Pins direkt mit 5 V verbinden.
- Keine Kurzschlüsse zwischen Pins verursachen (also keine zwei Pins direkt mit einem Kabel verbinden).
Beim Raspberry Pi gelten für die GPIO-Pins grob folgende elektrische Grenzen:
- max. ca. 16 mA pro GPIO-Pin
- max. ca. 50 mA insgesamt über alle GPIOs zusammen
Verwendete Hardware
Hardware-Anbindung LED-Ampel-Modul (R/G/B + GND)
Dieses LED-Modul besitzt vier Anschlüsse:
- R → rote LED
- G → grüne LED
- B → gelbe LED (je nach Modul als Y oder B bezeichnet)
- GND → gemeinsame Masse
Auf dem Modul sind bereits Vorwiderstände (Kennzeichnung „331“ = 330 Ohm) verbaut. Es ist daher kein zusätzlicher Widerstand erforderlich.
Technisches Prinzip
Das Modul ist als Common-Cathode aufgebaut:
- Alle LEDs teilen sich eine gemeinsame Masse (GND).
- Jede LED wird über einen 330 Ω Widerstand angesteuert.
- Ein GPIO-Pin mit 3,3 V reicht aus, um die LED zu betreiben.
Strom bei 3,3 V:
(3,3 V − ca. 2,0 V LED) / 330 Ω ≈ 4 mA
Dies ist für den Raspberry Pi unkritisch.
Anschluss am Raspberry Pi
| Modul | Raspberry Pi GPIO |
|---|---|
| GND | GND (Pin 6 oder beliebig GND) |
| R | z.B. GPIO17 (Pin 11) |
| G | z.B. GPIO27 (Pin 13) |
| B/Y | z.B. GPIO22 (Pin 15) |
Hinweis: Die GPIO-Nummern sind frei wählbar. Die oben genannten sind nur ein Beispiel.
Schaltschema
GPIO → LED (mit 330 Ω Widerstand) → GND
Ein GPIO-Pin wird auf HIGH (3,3 V) gesetzt, um die jeweilige LED einzuschalten. LOW (0 V) schaltet sie aus.
Sicherheitshinweise
- Keine 5 V auf GPIO-Pins geben.
- GND des Moduls muss mit GND des Raspberry Pi verbunden sein.
- Pro GPIO maximal ca. 16 mA, Gesamtstrom aller GPIOs beachten.
Beispieltest (Konsole)
# LED an GPIO17 kurz testen echo 17 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio17/direction echo 1 > /sys/class/gpio/gpio17/value sleep 2 echo 0 > /sys/class/gpio/gpio17/value
Danach wieder freigeben:
echo 17 > /sys/class/gpio/unexport
Ergebnis
Das LED-Ampel-Modul kann direkt am Raspberry Pi betrieben werden. Es sind keine zusätzlichen Widerstände oder Pegelwandler notwendig.
Programmstruktur anlegen
Environment anlegen
Aufgabe: Anlegen einer Python-Environment
Lege eine Umgebung
~/devel/projects/refexio_advanced/refexio_advanced_envan.
Hierfür muss der Ordner ~/devel/projects/refexio_advanced bereits vorhanden sein.
Wechsle anschließend in die Umgebung, um das Example zu bearbeiten!
Programmstruktur
Folgende Programmstruktur wird verwendet.
gpio_led– Projektordner im Verzeichnis~/develgpio_env– Python-Environmentsrc– Ordner für den Quellcode (engl. source)core– Unterordner insrc
gpio_led/
├── gpio_env
└── src
├── core
│ ├── gpio_hw.py
│ ├── logic.py
│ └── __init__.py
└── ledcontrol.py
Lege alle Verzeichnisse so an, wie oben dargestellt.
Alle Dateien – bis auf __init__.py – kommen später dazu.
Die __init__.py muss lediglich vorhanden sein, damit Python dieses Verzeichnis als Modulverzeichnis erkennt. Dies kann mit dem folgenden Befehl erledigt werden:
touch __init__.py
Pakete & Bibliotheken installieren
Systemweit GPIO-Unterstützung über apt zur Verfügung stellen:
sudo apt install python3-rpi.gpio
Jetzt die ENV aktivieren und RPi.GPIO installieren:
source ~/devel/gpio_led/gpio_env/bin/activate pip install RPi.GPIO
Projekt: LED mit Python
Hardware
Quellcode (Sourcecode)
Der Sourcecode besteht aus drei Dateien: das eigentliche Programm ledcontrol.py sowie die Dateien im Hintergrund (im Verzeichnis core), die für die Programmlogik und die Hardware-Ansteuerung benötigt werden. Im Kurs wird das Programm ausführlich erklärt. Diese Dateien enthalten noch keinen Header – dies sollte geändert werden.
gpio_hw.py
- gpio_hw.py
import RPi.GPIO as GPIO PIN = 17 GPIO.setmode(GPIO.BCM) GPIO.setup(PIN, GPIO.OUT) def on(): GPIO.output(PIN, GPIO.HIGH) def off(): GPIO.output(PIN, GPIO.LOW) def status(): return GPIO.input(PIN) def cleanup(): GPIO.cleanup()
logic.py
- logic.py
from core import gpio_hw def turn_on(): gpio_hw.on() return "on" def turn_off(): gpio_hw.off() return "off" def get_status(): return "on" if gpio_hw.status() else "off"
ledcontrol.py
- ledcontrol.py
#!/usr/bin/env python3 from core import logic from core import gpio_hw def main(): print("GPIO CLI gestartet (CTRL+C beendet)") try: while True: cmd = input("on / off / status > ").strip() if cmd == "on": print(logic.turn_on()) elif cmd == "off": print(logic.turn_off()) elif cmd == "status": print(logic.get_status()) except KeyboardInterrupt: pass finally: gpio_hw.cleanup() if __name__ == "__main__": main()
Testen des Programms
Bevor mit dem Projekt weitergearbeitet wird, muss überprüft werden, ob das LED-Programm korrekt gestartet werden kann.
Dazu müssen folgende Voraussetzungen erfüllt sein:
- die Python-Environment ist aktiviert,
- die Programmstruktur wurde korrekt angelegt,
- der Abschnitt „Pakete & Bibliotheken installieren“ wurde vollständig gelesen und umgesetzt.
Anschließend wird in den Quellcode-Ordner gewechselt und das Programm gestartet:
cd ~/devel/gpio_led/src ./ledcontrol.py
Bei erfolgreichem Start erscheint die Eingabeaufforderung von ledcontrol.py:
on / off / status >
Verhalten bei Eingaben testen
- on → die LED wird eingeschaltet und „on“ ausgegeben.
- off → die LED wird ausgeschaltet und „off“ ausgegeben.
- status → der aktuelle Zustand wird angezeigt.
- unbekannte Eingabe → das Programm bleibt aktiv und fordert erneut zur Eingabe auf.
Wenn das Verhalten wie beschrieben ist, läuft das Programm korrekt und die Einrichtung war erfolgreich.
ModuleNotFoundError: No module named 'RPi.GPIO'
erscheint, wurde der Abschnitt „Pakete & Bibliotheken installieren“ vermutlich nicht vollständig beachtet. Bitte diesen Abschnitt erneut sorgfältig durchgehen.




