Firmware del ponte ESP32 per le centraline DS200 / DS300: le porta senza cavo al Cronometro web — in rete (WebSocket) o via Bluetooth — e pubblica i dati su MQTT. Per vedere la gara serve il Cronometro web. Installalo e configura la rete dal browser. ⚠️ La parte più acerba del sito.
Il flash dal browser richiede Web Serial: usa Chrome, Edge o Opera
su desktop, servendo la pagina via https:// o http://localhost.
Collega la scheda ESP32 al PC via USB. Chiudi ogni altro programma che usa la porta seriale
(Arduino IDE Serial Monitor, pio device monitor, ecc.).
Premi il pulsante, scegli la porta USB dell'ESP32 e segui la procedura. A fine flash il pulsante propone “Connect to Wi-Fi” (via Improv): scegli la tua rete e inserisci la password — niente captive portal necessario.
In alternativa al WiFi via Improv-Serial, il firmware espone un captive portal
DS200-Setup e legge i default da config.h / .env.
Il firmware supporta anche Improv via Bluetooth: senza cavo, da telefono o PC,
apri improv-wifi.com
(con Web Bluetooth: Chrome/Edge) oppure l'app Home Assistant, scegli il dispositivo
ds200 e inserisci la rete. Si può disattivare con ENABLE_IMPROV_BLE 0.
Dopo la connessione, l'ESP32 mostra il suo indirizzo IP sulla seriale. Apri
http://<ip>/ oppure http://ds200.local/: il ponte serve il
Cronometro web vero, quello di questo sito, e si collega da solo. I dati vengono
anche pubblicati su MQTT con timestamp NTP.
Il ponte espone la centralina in tre modi, tutti insieme: pagina servita
da lui, WebSocket /ws e Bluetooth (servizio NUS). Il Bluetooth è l'unico che
funziona dal sito pubblicato senza configurare niente — vedi il passo qui sotto.
Una pagina servita in https:// non può aprire un ws:// verso un
indirizzo di rete locale: il browser lo blocca, ed è una regola di sicurezza, non un difetto
da aggirare. Ci sono due strade:
ds200.tuodominio.it → 192.168.x.y),
puoi ottenere un certificato Let's Encrypt con la verifica DNS-01 e caricarlo su
http://ds200.local/cert. Da lì il ponte risponde anche in
https://, e il Cronometro pubblicato può collegarsi in
wss://ds200.tuodominio.it/ws.Nessuna autorità firma un indirizzo IP privato: serve per forza un nome. E la chiave privata resta in chiaro nella memoria del dispositivo — va bene per una centralina da pista, non per altro.
File (presenti quando la pagina è ospitata su GitHub Pages / build CI):
Flash completo via esptool (immagine unita):
esptool.py --chip esp32 --baud 921600 write_flash 0x0 ds200-esp32-merged.bin
Factory reset (cancella tutto: WiFi/MQTT salvati incl.):
esptool.py --chip esp32 erase_flash
Aggiornamento via rete: non funziona, e non è un difetto di questa
pagina. La tabella delle partizioni in uso ha una sola area applicativa, quindi non esiste uno
slot dove scrivere il firmware nuovo mentre gira quello vecchio — né da browser né con
ArduinoOTA. Si aggiorna via USB. La pagina /update del dispositivo lo dice
guardando le partizioni vere, invece di offrire un modulo che fallisce.
Build locale: cd esp32 && pio run — i .bin sono in
esp32/.pio/build/esp32dev/; l'immagine unita si crea con lo script di merge in
esp32/README.