projekt:python
Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Python
Python ist eine interpretierte, plattformunabhängige Programmiersprache für Automatisierung, Webanwendungen, Datenanalyse, KI und wissenschaftliche Berechnungen. Sie ist Open Source, weit verbreitet und besonders beliebt für Hobby- und Bastelprojekte dank der großen Auswahl an Bibliotheken. Raspberry Pi setzt bewusst auf Python und etablierte es gezielt als zentrale Sprache für Bildung und Experimente.
Von den vielen Möglichkeiten, Python zu benutzen, befassen wir uns lediglich mit dem interaktiven Modus in der Shell und der Verwendung von Skripten. Im Bereich Web/Server werden wir FastAPI einführen.
Raspberry-Pi-Kursprojekt: GPIO-App mit wachsender Architektur
- erst reines Python
- dann Dauerprozess
- dann Web-API
- dann Apache davor
- EIN Projekt, keine Neuentwicklung
ENV: gpio_projects Projektpfad: ~/devel/gpio_projects
PHASE 1 – Reines Python + GPIO
0) System vorbereiten
sudo apt update sudo apt install -y python3 python3-pip python3-venv
1) Projektordner anlegen
mkdir -p ~/devel/gpio_projects cd ~/devel/gpio_projects
2) Virtuelle Umgebung anlegen (NAME: gpio_projects)
python3 -m venv gpio_projects source gpio_projects/bin/activate pip install RPi.GPIO
3) Projektstruktur Phase 1
gpio_projects/ ├── gpio_hw.py ├── logic.py ├── main.py └── gpio_projects/ # ENV (gpio_env) pi@raspi88:~/devel/gpio_projects $ tree -L 1 . ├── gpio_env ├── gpio_hw.py ├── logic.py └── main.py
4) 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()
5) logic.py
- logic.py
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"
6) main.py
- main.py
import logic import gpio_hw 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()
7) Start Phase 1
cd ~/devel/gpio_projects source gpio_projects/bin/activate python3 main.py
PHASE 3 – Web später
pip install fastapi uvicorn
systemd später mit dieser ENV
ExecStart=/home/pi/devel/gpio_projects/gpio_projects/bin/uvicorn api:app --host 127.0.0.1 --port 8000
Ergebnis
- ENV = gpio_projects
- Projekt = ~/devel/gpio_projects
- kein raspi_gpio_env mehr
- konsistent für alle Phasen
Anhang
- readme.txt
# [python env] ## env anlegen cd ~/devel/gpio_projects # ordner wechseln python3 -m venv gpio_env # env mit namen gpio_env erstellen ## aktivieren source ~/devel/gpio_projects/gpio_env/bin/activate # absoluter pfad zur env ## deaktivieren deactivate # env verlassen ## löschen cd ~/devel/gpio_projects # in projektordner wechseln rm -rf gpio_env # env-ordner entfernen
projekt/python.1770571060.txt.gz · Zuletzt geändert: von torsten.roehl
