tableau_bord.py

LattePanda Alpha · Archivo : tableau_bord.py · Lenguaje : Python · Uso : Servir un tableau de bord web mêlant PC et broches

Lo mejor del dúo en 25 líneas: la patilla del MCU y los contadores del PC se fusionan en una página HTML auto-refrescante. Cualquier teléfono de la red se vuelve la interfaz de la máquina.

Hardware necesario

Una LattePanda Alpha (x86 Intel m3-7Y30, Windows 10 o Linux) con su coprocesador ATmega32U4 compatible Arduino Leonardo en los conectores de 50 pines. Acceso de red (cable o Wi-Fi de la placa).

Cableado

Sin cableado para la demo; sensor en A0 para el valor. Abrir el puerto 8080 si hay cortafuegos.

Funcionamiento

Cada petición HTTP rele la patilla vía PinPong e interroga psutil; el refresco de 2 s mantiene la página viva sin JavaScript. http.server sobra en local. El ATmega32U4 es un Leonardo auténtico: prográmelo como « Arduino Leonardo » en el IDE por su puerto COM interno. En el anfitrión, la librería Python lattepanda de DFRobot habla con él por serie.

Para ir más lejos

Mando por escritura (botones HTML → POST → servo), o exposición a un dashboard MQTT.

tableau_bord.py

#!/usr/bin/env python3
# Tableau de bord : mesures MCU (PinPong) + etat hote, en HTTP local.
from pinpong.board import Board, Pin
import psutil
from http.server import BaseHTTPRequestHandler, HTTPServer
import time

Board().begin()
capteur = Pin(Pin.A0, Pin.IN)

class Gestionnaire(BaseHTTPRequestHandler):
    def do_GET(self):
        brut = capteur.read_analog()
        html = f"""<meta http-equiv=refresh content=2>
<h1>LattePanda</h1>
<p>A0 : {brut} / 1023 ({brut * 5 / 1023:.2f} V)</p>
<p>CPU : {psutil.cpu_percent():.0f} % — RAM : {psutil.virtual_memory().percent:.0f} %</p>
<p>Uptime : {time.time() - psutil.boot_time():.0f} s</p>"""
        self.send_response(200)
        self.send_header("Content-Type", "text/html; charset=utf-8")
        self.end_headers()
        self.wfile.write(html.encode())

print("http://<ip-de-la-panda>:8080")
HTTPServer(("0.0.0.0", 8080), Gestionnaire).serve_forever()

← Volver a la ficha