tableau_bord.py
Le meilleur du duo dans 25 lignes : la broche du MCU et les compteurs du PC fusionnent dans une page HTML auto-refresh. N'importe quel téléphone du réseau devient l'interface de la machine.
Matériel requis
Une LattePanda 3 Delta (x86 Intel N5105, Windows 10/11 ou Ubuntu) avec son coprocesseur Arduino compatible (ATmega32U4) relié aux deux connecteurs 50 broches. Accès réseau (câble ou Wi-Fi de la carte).
Branchement
Aucun câblage pour la démo ; capteur sur A0 pour la valeur. Ouvrir le port 8080 si pare-feu.
Fonctionnement
Chaque requête HTTP relit la broche via PinPong et interroge psutil ; le refresh de 2 s tient la page à jour sans JavaScript. http.server suffit largement en local. Côté hôte : pip install pinpong puis python3. Côté MCU : l'ATmega32U4 apparaît comme un port COM — programmez-le avec l'Arduino IDE (carte « Arduino Leonardo »).
Pour aller plus loin
Pilotage en écriture (boutons HTML → POST → servo), ou exposition vers 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()