Proiect: Server Web cu Python (Flask)
Transformă-ți Raspberry Pi-ul într-un server web! Vom folosi Flask, un micro-framework popular pentru Python, pentru a crea o pagină web simplă care poate controla un LED conectat la pinii GPIO.
Componente Necesare
- 1x Placă Raspberry Pi (cu OS și rețea configurată)
- 1x LED și un rezistor de 330Ω
- 1x Breadboard și fire de legătură
Pasul 1: Instalarea Flask
Flask este o bibliotecă Python care trebuie instalată. Deschide un terminal pe Raspberry Pi (direct sau prin SSH) și rulează următoarea comandă:
pip3 install Flask
Pasul 2: Circuitul și Codul Sursă
Circuitul este identic cu cel de la tutorialul "Controlul unui LED", cu LED-ul conectat la pinul GPIO 17. Apoi, creează un fișier numit `app.py` și copiază codul de mai jos.
from flask import Flask, render_template_string
import RPi.GPIO as GPIO
# Seteaza pinul LED-ului
LED_PIN = 17
# Initializare GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(LED_PIN, GPIO.OUT)
# Creeaza aplicatia Flask
app = Flask(__name__)
# Defineste structura paginii web intr-un string
# Aceasta pagina va contine butoane pentru a aprinde si stinge LED-ul
TEMPLATE = """
Control LED
Control LED GPIO
Stare Curenta: {{led_status}}
"""
# Defineste "ruta" principala a site-ului
@app.route("/")
def home():
# Verifica starea curenta a LED-ului
led_state = GPIO.input(LED_PIN)
led_status_str = "Aprins" if led_state else "Stins"
# Trimite pagina web catre browser, inlocuind placeholder-ul {{led_status}}
return render_template_string(TEMPLATE, led_status=led_status_str)
# Defineste ruta pentru a aprinde LED-ul
@app.route("/led/on")
def led_on():
GPIO.output(LED_PIN, GPIO.HIGH)
return home() # Reincarca pagina principala
# Defineste ruta pentru a stinge LED-ul
@app.route("/led/off")
def led_off():
GPIO.output(LED_PIN, GPIO.LOW)
return home() # Reincarca pagina principala
# Porneste serverul web
if __name__ == "__main__":
# 'host="0.0.0.0"' face serverul vizibil in reteaua locala
app.run(host="0.0.0.0", port=5000, debug=True)
Pasul 3: Rularea Serverului
Găsește adresa IP a Raspberry Pi-ului cu comanda `hostname -I`. Apoi, pornește serverul din terminal:
python3 app.py
Acum, de pe orice dispozitiv din aceeași rețea, deschide un browser și accesează adresa `http://ADRESA_IP_A_PI-ULUI:5000`. Vei vedea o pagină web simplă cu butoane care pot controla LED-ul în timp real!