projekt:python_projekt_gpio
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| projekt:python_projekt_gpio [2026/02/16 17:41] – torsten.roehl | projekt:python_projekt_gpio [2026/02/24 07:40] (aktuell) – torsten.roehl | ||
|---|---|---|---|
| Zeile 6: | Zeile 6: | ||
| Ein Raspberry Pi kann LEDs, Sensoren, Taster oder Displays direkt über seine GPIO-Pins ansteuern. Diese Pins sind jedoch empfindlich, | Ein Raspberry Pi kann LEDs, Sensoren, Taster oder Displays direkt über seine GPIO-Pins ansteuern. Diese Pins sind jedoch empfindlich, | ||
| - | {{ : | + | {{ : |
| ====== Überblick ====== | ====== Überblick ====== | ||
| * Hardware ansteuern | * Hardware ansteuern | ||
| - | * Programmstruktur | + | * Environment |
| - | * Projekt: LED mit Python | + | * Minimalprogramm |
| - | * Projekt: | + | * [[project: |
| ---- | ---- | ||
| Zeile 51: | Zeile 52: | ||
| | Raspberry Pi Layout und Orientierung. | | | Raspberry Pi Layout und Orientierung. | | ||
| |{{ : | |{{ : | ||
| - | |< | + | |< |
| - | * **GND** | + | * <color # |
| - | * <color # | + | * Masse: |
| - | * <color # | + | |
| + | * <color # | ||
| + | * Versorgungsspannung: | ||
| + | * Masse: **GND** | ||
| + | | ||
| - | In diesem Kurs werden die oben aufgelisteten Pins verwendet! | ||
| </ | </ | ||
| + | |{{ : | ||
| + | |Adapterplatine zur Nutzung auf einem Steckbrett.| | ||
| + | |{{ : | ||
| + | |Alle Bauteile LED-Ampel und Temperatursensor die im Kurs verwendet werden sind angeschlossen| | ||
| ==== Verwendete Hardware | ==== Verwendete Hardware | ||
| - | === Hardware-Anbindung LED-Ampel-Modul (R/G/B + GND) === | + | |
| + | * Hardware-Anbindung LED-Ampel-Modul (R/G/Y + GND) | ||
| Dieses LED-Modul besitzt vier Anschlüsse: | Dieses LED-Modul besitzt vier Anschlüsse: | ||
| - | * **R** → rote LED | + | Wir verwenden folgende GPIO-Nummern. Falls andere gewählt werden muss der Quellcode entsprechend angepasst werden. |
| - | | + | |
| - | * **B** → gelbe LED (je nach Modul als Y oder B bezeichnet) | + | ^ Modul ^ Raspberry Pi GPIO ^ |
| - | * **GND** → gemeinsame Masse | + | | GND |
| + | | **<color #ed1c24>R</ | ||
| + | | **<color #22b14c>G</ | ||
| + | | **<color # | ||
| + | |||
| Zeile 74: | Zeile 88: | ||
| Auf dem Modul sind bereits Vorwiderstände (Kennzeichnung „331“ = 330 Ohm) verbaut. | Auf dem Modul sind bereits Vorwiderstände (Kennzeichnung „331“ = 330 Ohm) verbaut. | ||
| Es ist daher **kein zusätzlicher Widerstand erforderlich**. | Es ist daher **kein zusätzlicher Widerstand erforderlich**. | ||
| + | |||
| + | * **ON** | ||
| + | * **OFF** GPIO-Pin wird auf **LOW (0)** gesetzt, um die jeweilige LED auszuschalten. | ||
| + | |||
| + | < | ||
| Strom bei 3,3 V: | Strom bei 3,3 V: | ||
| Zeile 80: | Zeile 99: | ||
| | | ||
| Dies ist für den Raspberry Pi unkritisch. | Dies ist für den Raspberry Pi unkritisch. | ||
| - | Ein GPIO-Pin wird auf **HIGH (3,3 V)** gesetzt, um die jeweilige LED einzuschalten. | + | </ |
| - | **LOW (0 V)** schaltet sie aus. | + | |
| ++++ | ++++ | ||
| - | |||
| - | |||
| - | === Anschluss am Raspberry Pi === | ||
| - | Wir verwenden folgende GPIO-Nummern. Falls andere gewählt werden muss der Quellecode entsprechend angepasst werden. | ||
| - | |||
| - | ^ Modul ^ Raspberry Pi GPIO ^ | ||
| - | | GND | beliebigen GND | | ||
| - | | R | z.B. GPIO17 | ||
| - | | G | z.B. GPIO27 | ||
| - | | B/Y | z.B. GPIO22 | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | ===== Programmstruktur anlegen ===== | ||
| ===== Environment anlegen ===== | ===== Environment anlegen ===== | ||
| <WRAP center round box 80%> | <WRAP center round box 80%> | ||
| Zeile 104: | Zeile 107: | ||
| Lege eine Umgebung | Lege eine Umgebung | ||
| - | * '' | + | * '' |
| - | Hierfür muss der Ordner '' | + | Hierfür muss der Ordner '' |
| </ | </ | ||
| Zeile 115: | Zeile 118: | ||
| </ | </ | ||
| - | Wechsle | + | <note important> |
| - | === Programmstruktur === | + | **Wechsle in die Environment** |
| - | Folgende Programmstruktur wird verwendet. | + | Die Programmierung erfolgt nun immer mit der gewählten Umgebung! |
| - | + | < | |
| - | * '' | + | source ~/devel/ |
| - | * '' | + | |
| - | | + | |
| - | | + | |
| - | + | ||
| - | < | + | |
| - | gpio_led/ | + | |
| - | ├── gpio_env | + | |
| - | └── src | + | |
| - | ├── core | + | |
| - | │ | + | |
| - | │ | + | |
| - | │ | + | |
| - | └── ledcontrol.py | + | |
| </ | </ | ||
| + | * Für alle **Python-Projekte** im Kurs verwenden wir diese eine Umgebung: **course_env**! | ||
| + | </ | ||
| + | ==== Pakete & Bibliotheken installieren ==== | ||
| - | Lege alle Verzeichnisse so an, wie oben dargestellt. | ||
| - | Alle Dateien – bis auf '' | ||
| - | |||
| - | Die '' | ||
| - | |||
| - | <code bash> | ||
| - | touch __init__.py | ||
| - | </ | ||
| - | |||
| - | <note tip> | ||
| - | {{ : | ||
| - | </ | ||
| - | === Pakete & Bibliotheken installieren === | ||
| Systemweit GPIO-Unterstützung über '' | Systemweit GPIO-Unterstützung über '' | ||
| Zeile 156: | Zeile 136: | ||
| </ | </ | ||
| - | Jetzt die **ENV** aktivieren und '' | + | Jetzt die **ENV** aktivieren |
| <code bash> | <code bash> | ||
| - | source ~/devel/gpio_led/gpio_env/ | + | source ~/devel/projects/course_env/ |
| pip install RPi.GPIO | pip install RPi.GPIO | ||
| </ | </ | ||
| + | ===== Minimal Programm ===== | ||
| + | Dieses Programm ('' | ||
| + | Pin und Befehl werden im **ADJUST AREA** angepasst. | ||
| + | '' | ||
| - | ===== 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%%**), | ||
| - | === gpio_hw.py === | ||
| - | <code python | + | <code python |
| - | import RPi.GPIO as GPIO | + | |
| - | PIN = 17 | + | # |
| - | GPIO.setmode(GPIO.BCM) | + | import RPi.GPIO as GPIO |
| - | GPIO.setup(PIN, GPIO.OUT) | + | |
| - | def on(): | + | # START ADJUST AREA |
| - | | + | PIN = 17 # PIN wählen |
| - | + | VALUE = GPIO.HIGH | |
| - | def off(): | + | # END ADJUST AREA |
| - | GPIO.output(PIN, | + | |
| - | + | ||
| - | def status(): | + | |
| - | return GPIO.input(PIN) | + | |
| - | + | ||
| - | def cleanup(): | + | |
| - | GPIO.cleanup() | + | |
| - | </code> | + | |
| - | + | ||
| - | === logic.py === | + | |
| - | + | ||
| - | <code python logic.py> | + | |
| - | from core import gpio_hw | + | |
| - | + | ||
| - | def turn_on(): | + | |
| - | gpio_hw.on() | + | |
| - | return " | + | |
| - | + | ||
| - | def turn_off(): | + | |
| - | gpio_hw.off() | + | |
| - | return " | + | |
| - | + | ||
| - | def get_status(): | + | |
| - | return " | + | |
| - | </ | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | === ledcontrol.py === | + | |
| - | + | ||
| - | <code python ledcontrol.py> | + | |
| - | #!/ | + | |
| - | + | ||
| - | from core import logic | + | |
| - | from core import gpio_hw | + | |
| def main(): | def main(): | ||
| - | print(" | ||
| - | | + | |
| - | while True: | + | |
| - | cmd = input("on / off / status > ").strip() | + | GPIO.setup(PIN, GPIO.OUT) # Als Ausgabe PIN festlegen |
| - | if cmd == " | + | GPIO.output(PIN, VALUE) # Output setzen! |
| - | print(logic.turn_on()) | + | |
| - | elif cmd == " | + | |
| - | print(logic.turn_off()) | + | |
| - | elif cmd == " | + | |
| - | print(logic.get_status()) | + | |
| - | | + | |
| - | pass | + | |
| - | | + | |
| - | gpio_hw.cleanup() | + | |
| if __name__ == " | if __name__ == " | ||
| Zeile 242: | Zeile 177: | ||
| </ | </ | ||
| - | + | === Programm ausführen | |
| - | ==== 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: | + | |
| <code bash> | <code bash> | ||
| - | cd ~/ | + | chmod 775 led_simple.py |
| - | ./ledcontrol.py | + | ./led_simple.py # Script ausführen! |
| </ | </ | ||
| + | Hierfür muss das Programm ausführbar gemacht werden ('' | ||
| - | Bei erfolgreichem Start erscheint die Eingabeaufforderung von '' | + | ===== Projekt: LED mit Python |
| - | + | * [[project: | |
| - | < | + | |
| - | + | ||
| - | === 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. | + | |
| - | + | ||
| - | + | ||
| - | <note tip> | + | |
| - | Falls beim Start des Programms die Fehlermeldung | + | |
| - | + | ||
| - | <color # | + | |
| - | + | ||
| - | erscheint, wurde der Abschnitt **„Pakete & Bibliotheken installieren“** vermutlich nicht vollständig beachtet. Bitte diesen Abschnitt erneut sorgfältig durchgehen. | + | |
| - | </ | + | |
| - | + | ||
projekt/python_projekt_gpio.1771263660.txt.gz · Zuletzt geändert: von torsten.roehl
