Benutzer-Werkzeuge

Webseiten-Werkzeuge


projekt:python

Dies ist eine alte Version des Dokuments!


Python

☚ zurück

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.

Überblick

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.1770571486.txt.gz · Zuletzt geändert: von torsten.roehl