Railway Simulator
Una stazione ferroviaria simulata, con hardware reale collegato al software.
Dentro il progetto
Le scelte, collegate.
Segui ogni ramo dal vincolo all’effetto. Apri una scelta per approfondire il ragionamento e consultare le fonti.
Punto di partenza
Collegare una stazione fisica al suo modello digitale.
Arduino rileva gli eventi; FlexSim rappresenta i treni. Tra i due serve uno stato condiviso per posizioni, binari e passaggi a livello.
- Il mio contributo
- Ho progettato lo schema dati e sviluppato il backend Express, l’assegnazione dei binari e i test Jest/Supertest. Ho inoltre documentato API e Process Flow e contribuito al modello FlexSim.
- Lavoro di squadra
- Il firmware Arduino è stato sviluppato dal collega; sul modello FlexSim abbiamo lavorato entrambi.
Vincolo
Hardware e simulazione devono leggere le stesse informazioni.
Scelta 01
Coordinare lo stato con API e database
Esplora la sceltaChiudi il dettaglioIl mio contributo
Ho definito lo schema SQL, sviluppato servizi ed endpoint del backend e implementato la ricerca e l’assegnazione del primo binario disponibile alla fermata di un treno.
- Perché questa scelta
- Un’applicazione Express espone endpoint REST e servizi distinti per treni, stazioni, rotte e binari. PostgreSQL conserva le relazioni; il servizio cerca un binario disponibile per la stazione di arrivo.
- Il compromesso
- Il backend diventa un punto centrale da mantenere disponibile. Cercare il primo binario libero è una regola semplice; non equivale a un sistema di ottimizzazione ferroviaria.
- Nel progetto
- app.js monta le route /api/v1. I servizi di binari e rotte implementano ricerca del binario disponibile, assegnazione e rilascio.
Esplora le fonti
Effetto
Assegnazioni e occupazione passano dallo stesso backend.
Vincolo
La posizione fisica può divergere da quella mostrata dal modello.
Scelta 02
Rilevare, interrogare, riallineare
Esplora la sceltaChiudi il dettaglioIl mio contributo
Ho implementato l’aggiornamento dell’occupazione dei binari al variare della rotta, documentato i Process Flow e contribuito al modello FlexSim, anche con l’aggiunta dei passeggeri alla seconda stazione.
- Perché questa scelta
- Arduino Nano invia posizione e stato del passaggio a livello con richieste HTTP. FlexSim interroga periodicamente il server e riallinea l’AGV all’ultima posizione rilevata; attende la chiusura della sbarra prima di avanzare.
- Il compromesso
- Il polling è semplice da integrare, ma introduce attesa e richieste ripetute. La frequenza di lettura non garantisce sincronizzazione istantanea.
- Nel progetto
- Lo sketch invia PUT alle API. Il Process Flow documentato confronta le posizioni e usa la modalità Teleport per correggere lo scostamento.
Esplora le fonti
Effetto
Gli eventi fisici guidano l’avanzamento della simulazione.
Vincolo
L’integrazione deve restituire un riscontro anche sul banco fisico.
Scelta 03
Chiudere il ciclo con display e test
Esplora la sceltaChiudi il dettaglioIl mio contributo
Ho scritto test unitari per i servizi e test di integrazione delle API, inclusi passaggi a livello e assegnazione dei binari. Il codice Arduino per LCD e servomotore è del collega.
- Perché questa scelta
- Il Nano legge lo stato dei binari e lo passa via seriale a un Arduino UNO. Quest’ultimo aggiorna display LCD e servomotore. Test Jest e Supertest verificano servizi ed endpoint separatamente.
- Il compromesso
- I test software non dimostrano da soli il funzionamento di sensori, cablaggi e modello 3D: la verifica dell’intero ciclo richiede anche il banco hardware.
- Nel progetto
- BinarioLCD.ino gestisce seriale, LCD e servo. Il repository contiene test unitari e test API che richiedono un database di test dedicato.
Esplora le fonti
Effetto
Lo stato torna al mondo fisico sotto forma di informazioni e movimento.
Dove portano le scelte
Un ciclo completo tra evento, stato e rappresentazione.
Il prototipo universitario integra firmware, backend e modello FlexSim: dal rilevamento del treno alla posizione simulata, fino al display e alla sbarra. Il lavoro centrale è definire come sistemi diversi si scambiano informazioni.
Il progetto in pratica
