web_led.py

Raspberry Pi 5 (model-5) · Archivo : web_led.py · Lenguaje : Python · Uso : Commander une sortie GPIO depuis une page web locale (démon, contrôle simple)

Un servidor Flask minimo expone /on y /off para controlar un LED en GPIO17 desde cualquier navegador de la red. Con la placa en Wi-Fi (puce I/O RP1, USB-C 5 V/5 A (27 W), deux ports CSI, connecteur JST pour caméra/ventilateur), la IP sale con hostname -I. Escucha en 0.0.0.0:8000; nunca exponga la placa a Internet.

Hardware

Una Raspberry Pi 5 (BCM2712 quad-core a 2,4 GHz, chip de E/S RP1, GPIO de 40 pines, alimentación USB-C de 5 V/5 A recomendada, dos puertos CSI de cámara). LED + resistencia de 330 ohmios, red local (Ethernet, Wi-Fi o dongle USB segun modelo).

Cableado

LED en GPIO17 (pin 11) con resistencia a GND. Nada mas aparte de la red.

Funcionamiento

Cada URL es una ruta Flask: la vista llama a led.on/off y vuelve a renderizar con led.value. El servidor de un hilo basta para una demo.

Ejecución

Copia el script en la placa (scp) y ejecútalo con python3. En Bookworm, gpiozero 2.x controla los pines mediante el chip RP1; mantén gpiozero y python3-rpi.gpio actualizados (sudo apt full-upgrade). Se recomienda fuente de 5 V/5 A.

Variantes

Botones radio para varios GPIO; unidad systemd como servicio; flask-login antes de exponer en red. Se recomienda una fuente de 27 W (5 V/5 A); sin ella, USB se limita a 600 mA en total.

web_led.py

# web_led.py — page web locale pour allumer/eteindre une LED (Flask).
# Deps: sudo apt install python3-flask python3-gpiozero
from flask import Flask
from gpiozero import LED

app = Flask(__name__)
led = LED(17)

@app.route("/")
def index():
    etat = "allumee" if led.value else "eteinte"
    return (f"<h1>LED {etat}</h1>"
            '<p><a href="/on">Allumer</a> | <a href="/off">Eteindre</a></p>')

@app.route("/on")
def on():
    led.on()
    return index()

@app.route("/off")
def off():
    led.off()
    return index()

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000)

← Volver a la ficha