# Air hockey da appoggio — CAD e simulazione preliminare

Progetto separato dal plastico ferroviario. Quote in millimetri. Aggiornato il 17 ottobre 2026.

[Manuale di assemblaggio MAN-01](manuale-assemblaggio.html): otto fasi, 38 passi,
checklist e note locali, viste CAD e stampa completa a colori. Stato preliminare
e dettagli ancora da chiudere sono indicati nel punto della lavorazione.

## Richieste confermate e stato

Tavolo compatto per due adulti, senza gambe, appoggiato su tavolo da pranzo.
Cassone 900 × 500 mm; ingombro con porte 980 × 505 mm, altezza massima 126,5 mm.
Maniglie incassate, cassetto accessori, sensori nelle porte, display e pulsanti
+/−, suoni, regolazione aria, RGB 5050 tradizionali già disponibili.
Budget iniziale richiesto 100 euro; ESP32 e Arduino già disponibili. Gestione del tavolo con una ESP32. La variante storica CAM-01 conserva una seconda ESP32 camera; l’estensione approvata il 17 ottobre prevede **Raspberry per il display replay a colori con traiettorie**, con camera USB da selezionare. Costi della nuova estensione e modello Raspberry restano aperti. [Decisione display](adr/0003-display-frontale-replay.md).

Su richiesta dell'utente è stato adattato il CAD alla ricerca costruttiva:
**camera utile 25 mm, piano faesite 3 mm**, nove gruppi esplorabili e simulazione numerica.
Sono implementati e verificati geometria e calcolo preliminare; costruzione,
prestazioni reali, costo dei componenti e galleggiamento non sono collaudati.

## Display replay — estensione del 17 ottobre 2026

[Apri il display e il replay animato 3D](replay-display.html): confronto 10,1″/13,3″, quattro inquadrature, pausa, seek, velocità e traiettoria. Sono scene simulate dal CAD, non acquisizione o tracking reali. Nuove varianti [STEP 10,1″](STEP/airhockey_display.step) e [STEP 13,3″](STEP/airhockey_display13.step); centro schermo a quota620mm dal riferimento base. Le quote sono ingombri generici: display commerciale e stabilità da verificare.

## Stato attuale — BR-02, 17 ottobre 2026

Correzioni dell’audit applicate al CAD. [Decisione e motivi](adr/0002-correzioni-costruttive-e-porte-guidate.md)
· [Rapporto di verifica](verifica-dimensionale.md) · [BOM-03](BOM.html).
I controlli geometrici non sono collaudi fisici; componenti e materiali reali,
montaggi, tenuta, urti, maniglie e supporto camera richiedono prove.

## Geometria attuale — BR-02

- Cassone900×500, campo800×400; con le porte smontabili ingombro980×505×126,5.
- CampoZ95…98,741ugelliØ1/passo20 e8fori fissaggioØ3,4 con svasatureØ6,4.
- BaseOSB9Z4…13; fondo cameraMDF12Z58…70; aria utileZ70…95.
- Pareti lunghe824×25×12 e testate400×25×12; quattro giunti con facce12×25.
- Battute:2da784×8×12 e2da400×8×12, Z82…94. Guarnizione larga8,
  compressa nominale1 aZ94…95;8M3×20 a filo del campo con dadi/rondelle.
- Otto sostegni15×15×25 tra gli ugelli; deflettori70×25×3 con scarico8×13
  presso la battuta. Due mensole424×38×12 sostengono il fondo aZ58.
- Due porte: tunnel90, alto7,5 dopo raccordo10→7,5, largo110; fascio50dietro
  la linea aX±450,Z101,75. Pavimento56 aZ98, raccolta75×110 con sogliaZ57.
  Corpi sensori riservati10×20×8, asse da registrare sul pezzo reale.
- Cassetto180×94×36, interno174×88×33; alloggiamento208×100×44 aZ13…57.
- Soffiante97×95×33 indicativa, raccordo104×24×42,2, ingresso100×20.
  Aspirazione superiore nominale10; modello e regolazione reali aperti.
- Aperture display/pulsanti/potenziometro passanti. Profili RGB790 e comandi
  invariati; una ESP32 tavolo e seconda ESP32 camera nella varianteCAM-01.
- Variante canali: separatore3, setti784×12×3, larghezze17/20,5;
  battute ridotte a11 dal basso, minuteria rialzata1 e8foriØ7,4 nel separatore.

Preparazione aggiornata:3MDF930×520×12,1faesite1220×600×3,1OSB1250×620×9,
1abete1000×15×15;71€esposti nella ricerca16ottobre, taglio e trasporto esclusi.
[Tagli CSV](tagli-brico.csv) · [posizioni nominali](tagli-brico.json).
Minimi di taglio, rifilature, finitura e dimensioni reali restano da provare.

## Esplorazione 3D e pannello

`esplora.html` riunisce cinque viste CAD ruotabili: **Nove gruppi**, **Assemblato e
comandi**, **Impianto aperto**, **Camera e AI**, **Aria in 3D**, e mappe con selezione di camera, regime e quantità.
La mappa è consultabile foro per foro; i dati sono esportati anche in CSV.

Nel CAD assemblato, lo strumento **Position** apre otto cursori indipendenti
(Cornice, Piano, Camera, Fondo_camera, Servizi, Ventola, Elettronica, Cablaggi) e le pose **Assemblato** e
**Strati_separati**. Il gruppo base resta fisso. Selezione, nascondimento e
isolamento dei nove gruppi sono disponibili nell'albero del viewer.
La separazione esplosa è solo illustrativa, non una sequenza di montaggio validata.
Prima di riprodurre la clip strati, scegliere la posa Assemblato: pose e animazione si sommano.

Clip Preview:

- `strati`: apertura e richiusura dei nove gruppi in 12 secondi.
- `led`: ciano fisso 0–4 s, rosa acceso/spento a 2 Hz 4–7 s, respiro ciano
  7–10 s e lampeggi finali rosa 10–12 s. Tutte le strisce cambiano insieme.
- `partita`: aggiunge disco e cambio punteggio 2:3 → 3:3.
- `aria`, nel modello dedicato: traccianti illustrativi e getti corrispondenti
  alle portate calcolate. Dimensioni e velocità dell'animazione sono normalizzate.

La vista Aria 3D usa il caso **25 mm / 100%**. I selettori del pannello aggiornano
mappa e risultati, non la geometria o l'animazione CAD. L'effetto vittoria dei LED
è dimostrativo, non una regola di vittoria applicata al punteggio 3:3.
Gli stati RGB alternativi sono salvati senza volumi sovrapposti e resi esclusivi
in animazione; l'opacità rappresenta la pulsazione, non un'emissione fotometrica.

## Risultato aria e limiti

Rete stazionaria ridotta di 741 pressioni accoppiata alla curva SUNON
PF97331B1-B00U-A99, letta dal grafico del costruttore. Fori modellati con termine
viscoso e inerziale; raccordo con perdita concentrata. **Non è CFD 3D**.

Caso nominale: circa **39,1 m³/h**, camera **346,4–347,3 Pa**, media circa
**0,88 L/min per foro**. Il modello ideale restituisce piccole differenze spaziali;
non sono una promessa di uniformità reale. Variazioni delle perdite ipotizzate
producono circa **30,6–45,4 m³/h**: sensibilità delle ipotesi, non intervallo statistico.
Il getto d'ingresso, vortici, difetti, perdite, flusso presso i sostegni e disco
che copre i fori non sono risolti. Regimi 60/80% sono teorici, non percentuali PWM.

[Relazione di calcolo](simulazione/relazione.md) · [Fonti e curva SUNON](simulazione-fonti.md) ·
[Ricerca costruttiva](ricerca-canali-aria.md) · [Grafici](simulazione/risultati.png) ·
[Dati](simulazione/risultati.json) · [CSV fori](simulazione/fori.csv).

La soffiante è un riferimento di calcolo, non un acquisto definitivo. La variante
A99 non va pilotata con PWM sull'alimentazione; la regolazione elettrica richiede
una variante idonea o istruzioni del costruttore. Fissaggi definitivi, tenute, rigidità del piano, componenti effettivi e prezzo restano da verificare.
La nuova griglia laterale e l’aspirazione ravvicinata della ventola non sono risolte dal calcolo;
i numeri precedenti restano preliminari. Vedi [impianto ed elettronica](elettronica.md).

## Camera integrata e AI — CAM-01

[Proposta e CAD esplorabile](camera-ai.html) · [Note tecniche](camera-ai.md) ·
[STEP con camera](STEP/airhockey_camera.step).
Confermata dall'utente una seconda ESP32 per acquisizione/streaming e ambedue
le funzioni AI: commento/statistiche e analisi dei tiri. Proposta di posizione:
obiettivo sopra il centro a 700 mm dal piano, montante rimovibile a metà lato lungo,
seconda scheda nella testata, alimentazione nel tubo e buck separato nel vano.
HFOV ipotizzato 70° nel flusso 16:9: copertura ideale circa 980 × 551 mm.
Camera, FOV reale e supporto non ancora validati; ESP32-S3 con PSRAM proposta,
modello commerciale aperto. La geometria è una variante esplorabile, non modifica
la camera pneumatica. Il tavolo senza supporto conserva l'ingombro originario.
La variante fisica montata è circa 900 × 535 × 862 mm; i raggi virtuali non fanno
parte dell'ingombro costruito. Stabilità/fissaggi, ottica, rete e tracking da provare.
Un riscontro ufficiale di circa 20fps a 720p MJPEG non garantisce misure precise
sul disco veloce. Gateway/AI esterna proposti, nessun servizio attivo.
Il costo del video è extra da quotare; la stima 166–241 € non lo comprende.
EL-01 rimane il circuito del tavolo; il ramo CAM-01 è descritto nelle note,
con alimentazione/protezioni da ridimensionare dopo la selezione della scheda.

## Confronto con canali sotto le file

[Confronto e varianti CAD](confronto-aria.html) ·
[Relazione](simulazione/confronto/relazione.md) · [Dati](simulazione/confronto/risultati.json).
Prova numerica richiesta dall'utente, senza sostituire il progetto di riferimento.
Due varianti: 10 mm camera inferiore + 3 mm separatore + 12 mm canali = 25 mm;
18 setti formano 19 canali, uno o due ingressi 12 × 8 mm per fila. Stesso piano,
fori, raccordo e curva soffiante. Portata nominale: comune **39,08 m³/h**, canali
un ingresso **37,76** (−3,37%), due ingressi **38,59** (−1,25%).
Non emerge un vantaggio di uniformità nel modello ideale; lo scenario ipotizzato
con fori Ø0,95–1,05 mm porta tutte le architetture a circa 6,1% di CV.
Confrontati anche tre regimi, 18 sezioni e tre scenari di perdite accoppiati.
Rete ridotta stazionaria, non CFD 3D né collaudo. Getto, fughe, disco, rumore e
rigidezza non risolti; la soluzione a canali resta proposta, non decisione confermata.
CAD assemblati ed esplosi di entrambe le varianti, con separatore e canali separabili.
Incremento indicativo di materiale circa 1,44 dm³ netti, massa da determinare sul materiale reale,
19 pezzi strutturali e 19/38 aperture aggiuntive; costi da quotare.

## Schema elettrico

[Schema dettagliato EL-01](schema-elettrico.html) · [PDF](elettrico/schema-elettrico.pdf) ·
[Pin e collegamenti](schema-elettrico.md) · [Netlist](elettrico/netlist.json).
Una ESP32 WROOM, 17 GPIO, driver RGB, due cifre HT16K33, sensori, comandi,
filtri e connettori. Schema di riferimento proposto, con sezioni ventola e RGB
condizionate. Coerenza verificata in modo statico; nessun ERC, SPICE o collaudo fisico.
Le quote delle schede CAD restano indicative. La BOM include i dettagli EL-01.

## Distinta base

[BOM completa e stampabile](BOM.html) · [BOM Markdown](BOM.md) · [Dati BOM](BOM.json).
53 voci, comprese le 7 dell’estensione video da quotare: quantità e quote del CAD, materiali proposti, componenti già disponibili,
acquisti e realizzazioni distinti. Driver, fissaggi e cavi non ancora esecutivi
sono segnalati. Stima progettuale dei nuovi materiali **166–241 €**, non un
preventivo commerciale, esclusi utensili, lavorazioni esterne e spedizioni.
Il budget di 100 € non è ancora soddisfatto. La distinta non autorizza sostituzioni
nel CAD e non seleziona la soffiante: variante regolabile, RGB e piano restano aperti.

## Sorgenti e rigenerazione

| Entrypoint | Output | Scopo |
|---|---|---|
| `src/airhockey.py` | `STEP/airhockey.step` | CAD assemblato, gruppi, cursori, LED |
| `src/airhockey_strati.py` | `STEP/airhockey_strati.step` | Esploso statico immediato |
| `src/airhockey_impianto.py` | `STEP/airhockey_impianto.step` | Vano aperto per leggere ventola, schede e fili |
| `src/airflow.py` | `simulazione/risultati.json` | Sei casi camera/regime e sensibilità |
| `src/airhockey_aria.py` | `STEP/airhockey_aria.step` | Vista 3D del caso nominale |
| `src/airhockey_camera.py` | `STEP/airhockey_camera.step` | Variante con seconda ESP32, supporto, cavi e FOV ipotizzato |
| `src/compare_airflow.py` | `simulazione/confronto/risultati.json` | Camera comune e canali, regimi, sezioni e scenari |
| `src/publish_comparison.py` | pagina, relazione, grafici e CSV del confronto | Confronto leggibile |
| `src/airhockey_canali*.py` | quattro STEP di variante | Uno/due ingressi, assemblati ed esplosi |
| `src/publish_electrical.py` | PDF, SVG, pagina, Markdown e netlist | Fonte della proposta elettrica EL-01 |
| `src/publish_bom.py` | BOM Markdown, HTML e JSON | Fonte della distinta preliminare e della stima |
| `src/publish_results.py` | relazione, CSV, PNG | Risultati leggibili ed esportabili |

Con Python e `cadgen[snapshot]==0.7.11`, NumPy, SciPy e Matplotlib:
prima eseguire `src/airflow.py`, poi i quattro generatori CAD e `src/publish_results.py`.
I generatori CAD derivati richiamano il modello principale. I file STEP e JSON
sidecar vanno tenuti insieme per animazioni e cursori.
Il viewer CAD va avviato dalla cartella `airhockey`:
`python -m cadgen.cli viewer --host 127.0.0.1 --json --detach`.
Il pannello si serve con un normale server HTTP locale dalla stessa cartella;
`esplora.html` usa attualmente il viewer a `http://127.0.0.1:3245`.

## Verifiche

- STEP: solidi validi a volume positivo, campo e ingombri, volume dei 741 fori.
- `check_stratigraphy.py`: piano 3 mm, aria 25 mm, cassetto sotto il fondo,
  assenza d'intersezioni fondo/guide, gruppi esplorabili.
- `check_display_surfaces.py`: 16 coppie prima problematiche senza sovrapposizioni.
- `check_led_visibility.py`: profili visibili sopra il bordo e liberi dal bordo.
- `check_hardware.py`: una ESP32, nove gruppi, elettronica sotto la camera, fili esterni
  al volume utile e senza intersezioni col fondo, sedi di prese e display libere.
- `test_airflow.py`: inversa resistenza, spento, conservazione, simmetria e
  diminuzione portata con piano più spesso.
- `check_flow_geometry.py`: dimensioni del calcolo coerenti con STEP, ingresso,
  deflettori, tutti i casi convergenti e CSV con 741 fori.
- Snapshot CAD e grafici controllati visivamente; pannello provato con selezione
  camera/regime/mappa e lettura di un foro. Nessun collaudo fisico eseguito.

## Cronologia

- 16 ottobre 2026: primo concept 900 × 500, camera 70 mm e piano 6 mm,
  maniglie, cassetto, punteggio e demo LED.
- 16 ottobre 2026: eliminati sfarfallii dovuti a compenetrazioni di bordi,
  stati RGB, grafica, segni + e cassetto.
- 16 ottobre 2026: diffusori LED ampliati e resi visibili dall'alto, clip dedicata.
- 16 ottobre 2026: ricerca su camere, canali, deflettori e curve delle ventole.
- 16 ottobre 2026: su approvazione dell'utente, adattato CAD a camera 25 mm e
  piano 3,2 mm; cassetto sotto la camera, aggiunti fondo indipendente,
  sostegni, ingresso e deflettori. Creati sei strati esplorabili, calcolo aria,
  pannello interattivo e relazione con limiti espliciti. Implementazione digitale
  verificata; scelta commerciale della ventola e collaudo restano aperti.

- 16 ottobre 2026: aggiunti tre gruppi separabili per ventola, elettronica con una ESP32
  e cablaggi. Modellate griglia aria e presa DC con aperture nella parete; scassi per
  PCB display e corpi dei comandi. Creata vista Impianto aperto. Componenti e percorsi
  indicativi; nessuno schema elettrico esecutivo o collaudo fisico ancora realizzato.

Verifica dell’ampliamento: 205 solidi validi, ingombro invariato 900 × 505 × 116,5 mm;
otto cursori presenti nel viewer. Controlli di geometria, strati, superfici display,
LED, hardware e coerenza del calcolo superati; quattro test del modello aria superati.
Viste renderizzate assemblato/prese, esploso, impianto aperto e aria riviste.

- 16 ottobre 2026: creata BOM-01 con 46 voci e link al termine del pannello 3D.
  Separati pezzi fisici da stati grafici, quantità CAD da scorte, preventivi da stime.
  Budget preliminare 130–225 €: limite richiesto 100 € non ancora raggiunto.

- 16 ottobre 2026: aggiunto schema dettagliato EL-01 con 17 GPIO, componenti
  identificati, netlist e PDF/SVG. Aggiornata la BOM con i passivi e i quattro
  rami protetti. Ventola/RGB e fissaggi dei moduli restano da confermare;
  controllo statico e visivo, nessun collaudo elettrico.

Verifica EL-01: 15 pagine PDF renderizzate e riviste, testo entro pagina,
17 GPIO senza conflitti, 99 componenti/riferimenti nella netlist e link locali validi.
Nessun test elettrico reale eseguito.

- 16 ottobre 2026: su richiesta, provate numericamente e modellate due varianti
  a 19 canali. Stesso ingombro, confronto a tre regimi, 18 sezioni e scenari
  di perdite/tolleranze. Nessun vantaggio nominale rispetto alla camera comune;
  non validati getto e prestazioni fisiche. Varianti aperte alla revisione,
  nessuna sostituzione automatica del progetto. Verificati sette test numerici,
  geometria e snapshot STEP; relazione, CSV, grafici e BOM di variante collegati.

Verifica del pannello di confronto: caricate le varianti CAD nel viewer e provato
il selettore un/due ingressi. Tutti i 39 casi/scenari salvati convergono con
residui e bilanci nei limiti dei controlli. Il confronto non modifica la selezione
della ventola né costituisce una misura di galleggiamento o uniformità reale.

- 16 ottobre 2026: confermate due ESP32 e AI per commento/statistiche e tiri.
  Creata variante CAM-01 con obiettivo centrale a 70 cm, montante rimovibile sul
  lato lungo, scheda in testata e ramo di alimentazione dedicato. Copertura ideale
  calcolata, ingombri proposti e limiti di streaming espliciti. BOM estesa con
  7 voci extra da quotare; supporto/ottica/modulo ancora da confermare e collaudare.

## Video animato — 16 ottobre 2026

Su richiesta dell’utente, [film con riproduttore e capitoli](video.html) e
[MP4 scaricabile](video/airhockey-assemblaggio-partita.mp4): 28 secondi,
1280 × 720, 24 fps, senza audio. Strati separati 0–2 s, riassemblaggio
2–9 s, vista della partita da 10 s e vista virtuale della camera da 18 s.
Due gol dimostrativi aggiornano 2:3 → 3:3 → 4:3 e fanno lampeggiare
insieme le due strisce RGB. La camera resta nella posizione CAM-01 con HFOV
ipotizzato di 70°. Non sono ripresa reale, streaming, tracking AI o simulazione
fisica dei contatti fra battitori e disco. Separazione e movimento dei cablaggi
sono illustrativi e non validano il montaggio.

La geometria viene riutilizzata senza modifiche dalla variante con camera;
`src/airhockey_film.py` e `src/film_animation.mjs` generano il documento
`STEP/airhockey_film.step`. I tre lavori nativi di rendering sono registrati in
`checks/film-1.json`, `film-2.json`, `film-3.json`; `src/publish_video.py`
compone il film finale. Verificati esploso iniziale, chiusura dei gruppi,
movimento e stati RGB esclusivi con `checks/check_film.mjs`; revisione visiva
delle inquadrature e dei fotogrammi esportati in `video/`.

Verifica finale del film: H.264, 28,000 s, 1280 × 720 a 24 fps, circa 1,18 MB;
decodifica completa senza errori. Pagina e MP4 rispondono HTTP 200. Riproduzione
e salto al capitolo camera verificati nel browser (18 s; intervallo cercabile
0–28 s). La pagina usa una sorgente Blob locale per supportare i capitoli anche
con un server statico privo di richieste byte-range.

### Revisione del video — assemblaggio e colpi

Su richiesta dell’utente, inquadratura più vicina dedicata ai nove strati;
montante, testata e cavi verticali della camera sono omessi in questa sola sequenza per
concentrare il campo visivo sul montaggio. Tornano visibili nella partita.
Il disco attende il servizio; cinque contatti per scambio sono sincronizzati
a fotogrammi interi a 24 fps (0,625 / 1,875 / 3,125 / 4,375 / 5,625 s
dall’inizio dello scambio). Distanza fra i centri al contatto 49,5 mm,
somma dei raggi di disco (22) e battitore (27,5). Verificati numericamente
i contatti e l’assenza di sovrapposizioni durante il tiro. Il difensore si
sposta lateralmente prima del gol: il disco non attraversa il battitore.
Gol a 16,875 e 26 s del film. Rimane una coreografia dimostrativa, senza
calcolo dinamico degli urti; durata e capitoli restano invariati.

### Montaggio della camera nel video

Aggiunti 6 secondi dopo l’assemblaggio degli strati, su richiesta dell’utente.
Nuova durata finale **34 secondi**: tavolo 0–10 s, montaggio camera 10–16 s,
partita 16–24 s, vista dall’obiettivo 24–34 s. Il montante con il braccio
si avvicina da dietro per 3 s; successivamente la testata sale di 100 mm verso l’attacco inferiore
per 2,5 s, con una breve pausa finale. I cavi verticali compaiono a montaggio
terminato: la sequenza è illustrativa, non una verifica del percorso di montaggio
o un’animazione di posa dei cavi. La partita corretta viene conservata integralmente.
Gol nel montaggio finale a 22,875 e 32 s.

Clip CAD `cameraMount` e lavoro `checks/film-montaggio-camera.json`; le prove
verificano tavolo già chiuso, avvicinamento del supporto prima della testata e
posizioni finali coincidenti con il CAD assemblato. I capitoli del riproduttore
sono aggiornati a 0 / 2 / 10 / 16 / 24 secondi.

Verificato il nuovo MP4: 34,000 s, 1280 × 720, 24 fps, circa 1,42 MB,
decodifica completa senza errori. Revisionati i fotogrammi di avvicinamento,
aggancio e posizione finale; riproduzione del capitolo a 10 s verificata nel browser.

### Proposta aperta: una scheda per controllo e streaming — 16 ottobre 2026

L’utente chiede se una Nucleo o equivalente possa accorpare gestione tavolo e
streaming. Ricerca su fonti ufficiali: candidata **NUCLEO-N657X0-Q** con
STM32N657, camera MIPI CSI-2, encoder H.264 ed Ethernet; Wi-Fi mediante
espansione, non integrato. Negozio ST: ordine di grandezza 75 USD per la sola
Nucleo alla consultazione, camera ed espansioni escluse. L’esempio ufficiale
`VENC_RTSP_Server` di STM32CubeN6 è destinato alla STM32N6570-DK: sulla Nucleo
occorre verificare/adattare configurazione camera, memoria e rete; non è un
firmware completo già validato per il tavolo.

Alternative: ESP32-P4-Function-EV-Board con ingresso MIPI e H.264; è una sola
scheda ma usa un ESP32-C6 per il Wi-Fi. Raspberry Pi Zero 2 W: CSI, Wi-Fi,
GPIO ed encoder H.264, con sistema Linux e progettazione dei servizi di
controllo; ESP32-S3 con PSRAM: possibile integrazione MJPEG più economica,
ma GPIO disponibili e prestazioni simultanee vanno verificati. Nessuna misura
comparativa è stata eseguita. AI esterna resta distinta dal dispositivo di
acquisizione e controllo; driver RGB/ventola, alimentazioni e interfacce
rimangono necessari.

Nel CAD la camera è a 700 mm dal campo: concentrare l’elettronica richiede
anche scegliere posizione della scheda e collegamento camera. Un flat camera
lungo il montante non è automaticamente compatibile; alternativa da progettare:
scheda vicino al sensore e cablaggi di controllo/alimentazione verso il vano.
**Proposta aperta**, non sostituisce la scelta attuale delle due ESP32 e non
modifica ancora BOM, schema elettrico o modello.

Fonti ufficiali consultate:
- https://estore.st.com/en/nucleo-n657x0-q-cpn.html
- https://www.st.com/resource/en/flyer/flstm32n6.pdf
- https://www.st.com/resource/en/application_note/DM01124906.pdf
- https://wiki.st.com/stm32mcu/wiki/Connectivity:Wi-Fi_ST67W6X_CLI_Application
- https://docs.espressif.com/projects/esp-dev-kits/en/latest/esp32p4/esp32-p4-function-ev-board/user_guide.html
- https://www.raspberrypi.com/products/raspberry-pi-zero-2-w/
- https://github.com/espressif/esp32-camera

## Raccolta HTML completa — 16 ottobre 2026

Su richiesta dell’utente, `esplora.html` raccoglie ora in undici sezioni
requisiti, quote/materiali, ricerca aria, confronto canali, elettronica con
GPIO EL-01, camera/AI, tutte le schede discusse, software Rust/Python,
video da 34 s, distinta/budget e piano di prove. Conservati viewer e mappa
interattiva. Aggiunti indice interno, fonti e collegamenti alle tavole complete.

Ultime alternative software discusse: Embassy supporta N657, incluse periferiche
camera; la catena H.264/streaming completa in Rust non è stata verificata.
Proposta iniziale per N6: video ST in C con ThreadX/NetX Duo e logica in Rust,
con scheduling unico e interfaccia C/Rust circoscritta. Per Raspberry Pi
completo è stata suggerita Python: controllo partita, video e gateway/AI
separati; librerie native per acquisizione e compressione. Pi 4 con encoder
H.264 hardware candidato per streaming verso AI esterna; Pi 5 con encoder
software candidato per maggiore elaborazione locale. Nessun modello acquistato,
nessuna migrazione applicata a CAD, schema o BOM. Per Raspberry prevedere
lettura analogica esterna o modifica del potenziometro, driver di potenza,
nuovo bilancio di alimentazione, raffreddamento e verifica GPIO sotto carico.

Fonti: documentazione Embassy N657, esempi ST N6, documentazione ufficiale
rpicam/libcamera e libreria RPPAL, collegate nella sezione fonti HTML.
La raccolta distingue richieste confermate, implementazione virtuale, proposte
aperte e collaudi mancanti; il progetto resta separato dal plastico ferroviario.

Verifica documentale: 31 ID univoci, 59 collegamenti controllati con file
locali e ancore presenti; sintassi JavaScript valida. Nel browser confermati
undici sezioni, mappa nominale 39,0 m³/h e nessun errore dati; salvata
`render/progetto-html.png` come riscontro dell’impaginazione.

### Replay Full HD 120 fps — fattibilità da collaudare

L’utente chiede acquisizione e replay 1080p120, camera compresa. Aggiunto
un approfondimento nella sezione camera di `esplora.html`: camere ufficiali
Module 3 / HQ / Global Shutter non offrono tale modalità nelle specifiche
documentate; candidata Arducam USB3 UVC Global Shutter con ISP dichiarata
1080p120 in MJPEG, distinta dalle revisioni AR0234 limitate a Full HD60.
Specifica consultata nel testo indicizzato del produttore, apertura diretta
403: codice, revisione e modalità reali da confermare. Nessun acquisto o
benchmark eseguito. Proposta Pi 5, ricezione MJPEG senza ricodifica, buffer
circolare e salvataggio al gol, eventuale H.264 successivo. Non promessa di
encoding H.264 1080p120 in tempo reale. Riproduzione a 30 fps = rallentamento
4×, a 60 fps = 2×. Verificare frame persi/timestamp, bitrate, buffer, storage,
esposizione, luce e funzionamento simultaneo del gioco. Fonti nella pagina.

### Ricerca comparativa videocamere e Raspberry — 16 ottobre 2026

Su richiesta dell’utente confrontate otto camere, più la variante B0353, su
fonti primarie: [rapporto camere](ricerca-videocamere.md) e
[rapporto Pi 4 / Pi 5](ricerca-raspberry-video.md). Sintesi integrata in
`esplora.html#confronto-videocamere`. Esito: Pi 5 non obbligatorio per
registrazione720p120; Pi4 candidata con flussoMJPEG USB già compresso o
CSI/H.264 ottimizzato, con collaudo simultaneo ancora necessario. Pi5 preferibile
come margine per tracking locale se acquistato nuovo, non garanzia di AI120fps.

Correzione ottica: CM3 Standard a120fps ritaglia e a70cm non copre il campo
nel modello ideale; CM3 Wide copre circa1153×618mm, disco circa49pixel in720p.
La stima precedente57pixel si riferiva a un campo visivo ipotetico diverso.
B0610 è candidata GScolorUSB3; non confonderla con B0495 che dichiara50/80fps.
B0332 corrente dichiara100fps malgradoURL120. Prezzo CM3Wide esposto da Melopero
37,58€ ma non disponibile; B0610sample139,99USD indicizzato dal produttore.
Confermare revisione/modi/crop e prezzo consegnato prima degli acquisti.
Nessuna modifica a CAD, schema o distinta; proposte e benchmark separati.

### Computer vision e traiettorie nei replay — 16 ottobre 2026

Documentata su richiesta dell’utente la proposta in
[computer-vision-replay.md](computer-vision-replay.md), integrata in
`esplora.html#visione-replay` con voce nell’indice. Contiene calibrazione,
rilevamento OpenCV, tracking e confidenza, dati con timestamp/coordinate,
overlay web Canvas sincronizzato ed esportazione MP4, opzioni neurali e
collaudo. Conservati video e dati separati; tratti osservati, previsti e persi
sono distinti, i gol restano autorevoli dai sensori.

Proposta iniziale: Pi 4 con OpenCV e analisi della clip dopo il gol, senza
promettere disponibilità immediata. Pi 5 o PC/acceleratore come opzioni per
più lavoro locale o live; nessuna garanzia di inferenza neurale120fps. Python
coordina componenti nativi; AI esterna riceve eventi/statistiche/sequenze.
Nessun algoritmo, servizio, modello, acquisizione o collaudo è stato
implementato da questo aggiornamento documentale. CAD, schema e BOM mantengono
la configurazione a due ESP32, in attesa della scelta hardware.

Verifica documentale di questa integrazione: 76 collegamenti e 33 ID senza
file locali/ancore mancanti o duplicati; sintassi JavaScript valida. Nuova
sezione verificata nel browser, mappa senza errore dati e nessun overflow
orizzontale della pagina al viewport controllato. Anteprima salvata in
`render/computer-vision-documentazione.png`.

### Riscontro sul montaggio dei sensori gol — 16 ottobre 2026

Nota storica: le quote seguenti precedono BR-01. Ora il sensore è a Z=95,
il campo a Z=98 e il disco a Z=98…103; resta irrisolto l’allineamento ottico.

Alla domanda dell’utente è stato controllato il CAD: quattro ingombri
`sensore_IR_<x>_<y>` da 8 × 8 × 10 mm, a X=±425, Y=±60 e centro Z=85,
con incassi 8,4 × 8,4 × 10,4 nelle guide, finestre/coperchi illustrativi e
percorsi dei cavi. Non sono modelli dimensionali Adafruit2167 (il produttore
riporta20 × 10 × 8 mm), né un fissaggio esecutivo. Asse ottico e apertura
utile non sono modellati: il centro nominale85 mm è sotto il piano88 mm,
mentre il disco sul piano occupa88–93 mm. Il rilevamento nel tratto di
caduta non è verificato. Non dichiarare quindi già allineato il fascio:
servono riprogettazione della sede sul modulo reale, asse che intercetti
il disco nel passaggio previsto e verifica del percorso ottico, senza
assumere trasparenza IR del coperchio rosso generico. Il disegno attuale
mostra una predisposizione, non un montaggio validato. Nessuna modifica
geometrica applicata in questa verifica. Dettaglio renderizzato in
`render/sensori-porta-dettaglio.png`.

### Manuale di assemblaggio completo MAN-01 — 16 ottobre 2026

Su richiesta dell’utente creato [manuale interattivo](manuale-assemblaggio.html),
collegato in apertura e nella sezione dedicata di `esplora.html`. Comprende
otto fasi, 38 passi, 76 controlli, otto viste CAD già esistenti, pezzi/utensili
per passo, istruzioni ordinate, verifiche intermedie, note locali e stampa
integrale a colori con apertura automatica delle fasi. Appendici: quote
nominali estratte dalla BOM, GPIO estratti dalla netlist, accensioni progressive,
ricerca guasti e verbale. Fonte editoriale e generatore: `src/publish_manual.py`;
rigenerazione con `python3 airhockey/src/publish_manual.py` dalla radice del repo.
Checklist e note appartengono al browser e non sono aggiornamenti a CAD/BOM né
certificazioni di collaudo. Per conservarle fuori dal browser stampare in PDF.

La sequenza copre struttura, cassetto, recupero, aria, cornice, RGB, cablaggio,
EL-01, supporto CAM-01 e prove finali. Camera comune resta riferimento; la
variante a canali è un passo condizionato. Raspberry, video120fps e AI restano
alternative da selezionare/implementare: nessuna migrazione di schema o BOM.
Nessun firmware completo è stato creato da questo intervento documentale.

Registrata come proposta aperta l’idea del passaggio guidato mostrata nella
conversazione: larghezza110, tetto raccordato10→7,5, fascio nominale a3,75,
50 dietro la linea di gol, lunghezza illustrata circa90. Richiede più profondità
dei50 disponibili nel bordo attuale e prova di urti/inceppamenti, disco inclinato,
rimbalzi e impulsi veloci; non trasferita al CAD. Il riferimento Adafruit2167
ha risposta dichiarata <2ms, non una garanzia per tutti i tiri. A10/20m/s
ipotetici, discoØ44 centrale e piatto produce circa4,4/2,2ms di oscuramento.

Riscontro documentale sulla tenuta: il piano800×400 coincide con l’interno della
camera e non sormonta le pareti. Il CAD non definisce la battuta perimetrale,
la sua guarnizione e tutti i fissaggi esecutivi: una guarnizione semplicemente
sopra le pareti non ha sovrapposizione col piano. Il manuale richiede di risolvere
appoggio e tenuta prima di chiudere; nessun dettaglio meccanico inventato è
presentato come già costruibile. Fissaggi dei moduli, maniglie, raccordo e
supporto camera restano da validare sul materiale e sui componenti reali.

Le procedure di collaudo sono proposte operative, non prove effettuate. Nessun
CAD, schema elettrico o distinta è stato modificato da questa pubblicazione.

Verifica MAN-01: `checks/check_manual.py` controlla aggiornamento/persistenza
delle checklist, note dopo reload, apertura da indice, tutte le fasi in stampa,
immagini e assenza di overflow a320/390/1360px. Controllati91 riferimenti del
manuale e79 della pagina progetto, con ID univoci e file/ancore locali presenti.
Stampa di verifica di35 pagine a colori, senza pagine vuote e con tutti i38
titoli dei passi presenti; riviste copertina e pagine interne. Note stampate
come testo espandibile per non troncare il contenuto del campo. ManualeHTTP200;
mappa aria ancora39,0m³/h e pagina progetto senza overflow al viewport mobile
controllato. Anteprima: `render/manuale-assemblaggio.png`.

### MAN-01 revisione 2 — un’immagine per passaggio

Su richiesta, aggiunto un riferimento visivo ingrandibile a ciascuno dei38
passaggi, con didascalia specifica. Rimossi i soli otto banner di fase in favore
delle immagini dentro le singole operazioni. Riutilizzati render del progetto,
tavole EL-01 e fotogrammi CAD virtuali, esplicitamente distinti da fotografie
di un prototipo costruito. Per lavorazioni non visibili nei render creati13
schemi SVG: banco, assi, campione, pannelli, foratura, cassone, cassetto, porta
guidata, fondo camera, sostegni, problema della tenuta, taglio RGB e prova gol.
Gli schemi sono illustrativi, non dime, disegni esecutivi o modifiche al CAD.

Fonte degli schemi `src/manual_illustrations.py`, richiamata automaticamente da
`src/publish_manual.py`; asset in `render/manuale/`. Conservate le chiavi di
salvataggio di checklist e note. Verificati caricamento delle38 immagini,151
riferimenti locali/ancore e XML dei13 schemi; controllo browser esistente
superato a320/390/1360px. Anteprima dedicata in
`render/manuale-passaggio-illustrato.png`.
Stampa finale verificata:45 pagine senza pagine vuote e tutte le38 didascalie
dei passi presenti. Le immagini sono incluse anche nella stampa; la precedente
verifica di35 pagine si riferisce alla revisione1, con sole immagini di fase.

### Ricerca dei formati Brico io — 16 ottobre 2026

Su richiesta ricercati formati commerciali sul solo catalogo ufficiale Brico io:
[pannelli e servizio taglio](ricerca-materiali-bricoio.md),
[listelli e confronto dimensionale](ricerca-listelli-bricoio.md). Registrate
otto schede pannelli e otto schede abete con codici, misure convertite in mm,
prezzi esposti e fonti. Riepilogo collegato dalla sezione materiali HTML.

Pannelli riscontrati: faesite1220×600/1010×3, MDF930×520×12,
OSB1250×620×9 e alcuni truciolari. Non reperite schede correnti verificabili
per compensato/MDF da4/6/8; nessuna conclusione di assenza nei negozi.
Faesite descritta ambiguamente «laminato» / «grezzo levigato»: non confermata
come HDF bianco melaminico pronto al gioco. Versione forata bianca non dichiara
Ø/passo: non considerarla equivalente ai741foriØ1. Vecchio pioppo15mm
BRI11947 indicizzato ma scheda404: escluso dalle offerte correnti verificate.

Abete: lunghezze di categoria1000/2000/2500/3000; sezioni verificate
60×10,95×10,15×15,80×20,20×20 e40×20. Gli spessori10/20/30 sono i gruppi
più rappresentati nei filtri della categoria, non dati di vendita o stock locale.
Le sezioni non sostituiscono automaticamente i12mm del CAD o la camera25.
Taglio su misura di pannelli, assi e listelli confermato dalla pagina servizi;
tariffe, tolleranze e limiti da verificare nel negozio scelto. Nessun contatto,
ordine, modifica CAD/BOM o decisione tecnica definitiva effettuati.


### BR-01 applicata — 17 ottobre 2026

Confermata dall’utente l’adozione dei formati Brico io. Registrata la
[decisione BR-01](adr/0001-materiali-brico-io.md) e introdotti parametri comuni
per faesite3, MDF12, OSB9 e sostegni abete15×15. Conservati campo800×400,
741foriØ1 e camera25; piano ora aZ98, altezza massima126,5. Cassetto e
alloggiamento ridimensionati per gli spessori disponibili. Fondo camera12
con ingresso100×20 realmente passante. Aggiornati tutti i STEP, cablaggi,
variante camera, canali, risultati numerici e BOM-02.

Preparazione nominale con margine lama assunto3mm: tre pannelli MDF930×520,
una faesite1220×600, un OSB1250×620 e un listello1000×15×15.
[Tagli CSV](tagli-brico.csv) e [posizioni JSON](tagli-brico.json) verificati per
contenimento e assenza di sovrapposizioni. Non è una garanzia dei piccoli
tagli eseguibili in negozio. Prezzi della ricerca16ottobre:71€ di semilavorati;
stima tavolo166–241€, camera, taglio e trasporto esclusi.

MAN-01 revisione3 conserva38passi,76controlli e il salvataggio locale della
revisione precedente; immagini CAD e schemi aggiornati agli spessori BR-01.
Controllati checklist/note dopo ricaricamento, navigazione, stampa completa,
immagini e impaginazione da320a1360px. Stampa di verifica45pagine; tutti i38
passaggi presenti. I268collegamenti locali delle sei pagine principali risolvono.

Controlli su STEP esportati:209solidi validi nell’assemblato, camera25,
foro d’ingresso passante, cassetto libero dal fondo, sostegni fuori dagli ugelli;
entrambe le varianti a canali valide; camera a700mm dal campo, superfici display
senza compenetrazioni e LED visibili sopra il bordo. Corretti i frammenti
geometrici prodotti dalle unioni tangenti dei cavi camera: ora segmenti analitici
raccolti per cavo. Le tinte e i cavi restano rappresentazioni indicative.

Il calcolo nominale aggiornato restituisce39,1m³/h nella camera comune,
37,8con canali a un ingresso e38,6con due ingressi. Sono risultati della rete
ridotta, non CFD o prove fisiche. Restano aperti finitura del piano, fissaggi e
tenuta, soffiante regolabile effettiva, porte/sensori rapidi, componenti reali e
software; nessun collaudo fisico o acquisto effettuato.


Verifica numerica BR-01:11test automatici passati. Video rigenerato dal CAD:
34secondi,1280×720a24fps; verificati servizio, contatti disco/battitori,
assemblaggio prima del montaggio camera e stati RGB esclusivi. La ripresa è
una vista virtuale, non uno streaming reale del prototipo.


### Audit esteso — 17 ottobre 2026

Verificati tutti i10STEP esportati e gli ingombri di37componenti della lista
tagli, più8ingombri BOM. Le quote nominali corrispondono; l’audit delle
intersezioni strutturali ha invece individuato10compenetrazioni del recupero
disco con le testate. Confermati giunti della camera solo sullo spigolo,
sovrapposizione nulla del piano sulle pareti e2mmdi tetto sopra le tasche
comandi. Ripiano aZ56 contro soglia recuperoZ57. Non è quindi una verifica
positiva della costruibilità. Corretti i testi obsoleti della relazione aria
e i riferimenti storici; MAN-01rev4, BOM e dossier avvertono del blocco.
Nessuna nuova geometria costruttiva adottata in questo audit.
[Rapporto](verifica-dimensionale.md) e [dati](verifica-dimensionale.json).


### BR-02 — correzioni CAD del17ottobre2026

Su richiesta dell’utente corrette le interferenze anche nella fonte CAD,
non solo segnalate nei documenti. Giunti camera824/400, battute interne,
guarnizione1compressa,8fissaggi piano, mensole fondo e aperture comandi
passanti. Porte smontabili90 con fascio50dietro la linea, asseZ101,75 e
ripiano/soglia57; ingombro montato980×505. Aggiornate varianti a canali,
BOM-03, tagli, manualeMAN-01rev5, viste e coreografia del film.
Audit:10STEP validi,61componenti di taglio e8ingombri BOM coerenti;
zero intersezioni fra pezzi strutturali controllati nell’assemblato e nelle
due varianti. Undici test numerici e controlli dedicati a CAD/EL-01 passati.
Nessun collaudo fisico: compressione, rigidità, componenti reali, sensori
rapidi, urti e inceppamenti da provare. [Rapporto](verifica-dimensionale.md).

### 17 ottobre 2026 · accesso alla vista dei nove gruppi

Verificato nel browser il modello esploso `airhockey_strati.step`: geometria
visibile e tutti i nove gruppi presenti. Il primo caricamento può lasciare
il riquadro vuoto per alcune decine di secondi. Aggiunti avviso, apertura
a tutta pagina, ricaricamento e collegamento dalla sezione struttura alla
vista CAD. Nessuna modifica geometrica in questo intervento.

### 17 ottobre 2026 · Cloudflare Pages

Pubblicato il progetto su [Cloudflare Pages](https://airhockey-ay4.pages.dev),
con le dieci viste CAD precompilate, gruppi e animazioni, documenti, manuale,
video e download STEP. Il sito non richiede il visualizzatore locale.
Pacchetto e procedura in [deploy/airhockey](../deploy/airhockey/README.md).
Il dominio `airhockey.nicolasvaccari.com` è associato: creato il CNAME
verso `airhockey-ay4.pages.dev` dalla dashboard dopo la verifica
dell’autenticatore dell’utente. DNS, certificato e dominio confermati attivi da Pages. Verificato HTTPS
200 e contenuto identico alla versione pubblicata, mantenendo la
verifica del certificato; resolver locale temporaneamente in cache
negativa. Sito definitivo: [airhockey.nicolasvaccari.com](https://airhockey.nicolasvaccari.com).


### USB a colori e display replay — 17 ottobre 2026

Salvati i nuovi riscontri nella [ricerca videocamere](ricerca-videocamere.md): ELP OV4689 USBFHD08S a colori con MJPEG 720p120 dichiarati, variante grandangolare KH100 e prezzo separato della variante L80; Waveshare OV9281 USB esclusa perché monocromatica. **L’utente esclude tutte le camere in bianco e nero.** Nessun acquisto o prova effettuati.

Richiesto display frontale da 10 o 13 pollici sul supporto camera, gestito dal Raspberry per replay con traiettorie; richiesta un’anteprima grafica e animata 3D. [Requisiti e proposta di layout](computer-vision-replay.md#display-sul-supporto-camera--richiesta-del-17-ottobre-2026). Proposta iniziale 10,1″ con confronto 13,3″; scelta hardware, staffe, stabilità e realizzazione ancora aperte. Nessuna modifica al CAD o alla distinta in questo aggiornamento.


### Display e replay 3D — implementazione del 17 ottobre 2026

Dopo l’approvazione dell’utente realizzate due nuove varianti CAD e l’[anteprima interattiva](replay-display.html). Display frontale10,1″ come prima proposta, confronto13,3″; grafica grafite/azzurro/corallo, punteggio, replay colore dalla scenaCAD, scia progressiva e rimbalzo. Pausa, seek, tre velocità e modalità partita→gol→replay agiscono sullo stesso tempo della scena e della texture dello schermo. [Decisione](adr/0003-display-frontale-replay.md).

Verifica CAD:346 solidi validi e positivi per variante; pannelli fuori dal cono utile800×400. Tre snapshot ispezionati. Verifica browser di entrambe le misure e viewport390px: nessun erroreJS o richiesta fallita, controlli di ripresa illuminata, parti animate, pausa, seek, velocità, scia e ciclo superati. Ridotte le primitive dei GLB3026→299, mantenendo313 nodi, trasformazioni e triangoli; circa289mila triangoli per modello. Non è un benchmark sul Raspberry.

Sorgenti: `src/airhockey_display.py`, `src/airhockey_display13.py`, `src/display_geometry.py`. Rigenerazione: eseguire le due sorgenti, poi `checks/export_replay_glb.py` e `checks/optimize_replay_glb.mjs`; il passaggioGLB nativo preserva i nomi necessari all’animazione, che l’export cadgen0.7.11 raggruppa per materiale. Runtime Three.js0.186.1 locale con licenzaMIT e provenienza incluse.

Rimangono ingombri generici, attacchi e cablaggio illustrativi. Modello/peso del display, fissaggi reali, alimentazione, stabilità e vibrazioni da verificare. Nessuna acquisizione120fps, visione reale o prestazione Raspberry dimostrata dalla coreografia.
