Sommario:
- Fase 1: Principi operativi
- Passaggio 2: scambio e configurazione di dati MQTT
- Passaggio 3: controllore del treno
- Passaggio 4: controllo del treno LEGO
- Passaggio 5: telecomando
- Passaggio 6: controller del sensore
- Passaggio 7: controller di uscita
- Passaggio 8: Raspberry Pi e router WiFi
- Passaggio 9: controller finiti
2025 Autore: John Day | [email protected]. Ultima modifica: 2025-01-13 06:57
Avendo un vecchio modello di treno in scala TT, ho avuto un'idea su come controllare le locomotive individualmente.
Con questo in mente, ho fatto un ulteriore passo avanti e ho capito cosa è necessario non solo per controllare i treni, ma anche per avere alcune informazioni aggiuntive sull'intero layout e controllare qualcos'altro (lampade, scambi ferroviari…)
È così che nasce il sistema di modellismo ferroviario controllato tramite WiFi.
Fase 1: Principi operativi
Il principio principale è controllare ogni elemento individualmente, da un singolo controller o da più fonti di controllo. Ciò richiede intrinsecamente un livello fisico comune - ovviamente WiFi - e un protocollo di comunicazione comune, MQTT.
L'elemento centrale è il broker MQTT. Ogni dispositivo connesso (treno, sensore, uscita…) può comunicare solo attraverso il Broker e può ricevere dati solo dal Broker.
Il cuore dei dispositivi è un controller WiFi basato su ESP8266, mentre il broker MQTT funziona su un Raspberry pi.
All'inizio la copertura Wi-Fi è fornita da un router Wi-Fi e tutto è collegato tramite wireless.
Esistono 4 tipi di dispositivi:
- Train controller: dispone di 2 ingressi digitali, 1 uscita digitale, 2 uscite PWM (per il controllo di 2 motori CC individuali), - Controller sensore: dispone di 7 ingressi digitali (per interruttori di ingresso, optosensori…), - Controller di uscita: dispone di 8 uscite digitali (per scambi ferroviari…), - WiFi remoto: dispone di 1 ingresso encoder incrementale, 1 ingresso digitale (per il controllo dei treni da remoto).
Il sistema è anche in grado di operare da Node-Red (da tablet, PC o smartphone…).
Passaggio 2: scambio e configurazione di dati MQTT
Basato sul protocollo MQTT, all'inizio ogni dispositivo si iscrive a un determinato argomento e può pubblicare su un altro argomento. Questa è la base della comunicazione della rete di controllo dei treni.
Questi racconti di comunicazione avvengono tramite messaggi in formato JSON, per essere brevi e leggibili dall'uomo.
Guardando da una prospettiva più lontana: la rete ha un router WiFi con un proprio SSID (nome della rete) e una password. Ogni dispositivo deve conoscere questi 2 per accedere alla rete WiFi. Anche il broker MQTT fa parte di questa rete, quindi per utilizzare il protocollo MQTT ogni dispositivo deve conoscere l'indirizzo IP del broker. E infine ogni dispositivo ha il suo argomento per la sottoscrizione e la pubblicazione dei messaggi.
In pratica, un determinato telecomando utilizza lo stesso argomento per pubblicare i messaggi a cui è abbonato un determinato treno.
Passaggio 3: controllore del treno
Per controllare un trenino, fondamentalmente abbiamo bisogno di 3 cose: un alimentatore, un controller abilitato al WiFi e l'elettronica del driver del motore.
L'alimentazione dipende dal piano di utilizzo effettivo: nel caso di LEGO, questa è la scatola della batteria Power Functions, nel caso di un treno "oldschool" in scala TT o H0, è l'alimentazione a 12V della pista.
Il controller abilitato WiFi è un controller Wemos D1 mini (basato su ESP8266).
L'elettronica del driver del motore è un modulo basato su TB6612.
Il controller del treno ha 2 uscite PWM controllate individualmente. In realtà uno è utilizzato per il controllo del motore e l'altro è utilizzato per la segnalazione luminosa. Dispone di 2 ingressi per il rilevamento basato su contatto reed e un'uscita digitale.
Il controller accetta messaggi JSON tramite WiFi e protocollo MQTT.
SPD1 controlla il motore, ad esempio: Il messaggio {"SPD1": -204} viene utilizzato per far retrocedere il motore all'80% di potenza (il valore di velocità massima è -255).
SPD2 controlla l'intensità della luce LED "sensibile alla direzione": il messaggio {"SPD2": -255} fa brillare il LED (indietro) alla massima potenza.
OUT1 controlla lo stato dell'uscita digitale: {"OUT1": 1} attiva l'uscita.
Se lo stato di un ingresso cambia, il controllore invia un messaggio in base ad esso: {"IN1": 1}
Se il controller riceve un messaggio valido, lo esegue e fornisce un feedback al broker. Il feedback è il comando effettivamente eseguito. Ad esempio: se il broker invia {"SPD1": 280} allora il motore funziona a piena potenza ma il messaggio di feedback sarà: {"SPD1": 255}
Passaggio 4: controllo del treno LEGO
Nel caso del treno LEGO, gli schemi sono leggermente diversi.
L'alimentazione proviene direttamente dalla scatola della batteria.
È necessario un mini convertitore step-down per fornire 3,5 V per la scheda Lolin basata su ESP8266.
I collegamenti sono realizzati con un filo di prolunga LEGO 8886, tagliato a metà.
Passaggio 5: telecomando
Il controller pubblica solo messaggi sul treno (definito dallo switch BCD).
Ruotando l'encoder, il telecomando invia messaggi {"SPD1": "+"} o {"SPD1": "-"}.
Quando il treno riceve questo messaggio di "tipo incrementale", cambia il suo valore di uscita PWM di 51 o -51.
In questo modo il telecomando può modificare la velocità del treno in 5 passaggi (per direzione).
Premendo l'encoder incrementale si invierà {"SPD1": 0}.
Passaggio 6: controller del sensore
Il cosiddetto controller del sensore misura gli stati dei suoi ingressi e, se uno di essi cambia, pubblica quel valore.
Ad esempio: {"IN1": 0, "IN6": 1} in questo esempio 2 ingressi hanno cambiato stato contemporaneamente.
Passaggio 7: controller di uscita
Il controller di uscita dispone di 8 uscite digitali, che sono collegate a un modulo basato su ULN2803.
Riceve messaggi attraverso il suo argomento sottoscritto.
Ad esempio il messaggio {"OUT4": 1, "OUT7": 1} attiva l'uscita digitale 4. e 7.
Passaggio 8: Raspberry Pi e router WiFi
Avevo un router WiFI TP-Link usato, quindi l'ho usato come punto di accesso.
Il broker MQTT è un Raspberry Pi con Mosquitto installato.
Uso il sistema operativo Raspbian standard con MQTT installato con:
sudo apt-get install mosquitto mosquitto-clients python-mosquitto
Il router TP-Link deve essere configurato per avere una prenotazione dell'indirizzo per il Raspberry, quindi dopo ogni riavvio il Pi ha lo stesso indirizzo IP e ogni dispositivo può connettersi ad esso.
E questo è tutto!
Passaggio 9: controller finiti
Ecco i controller finiti.
Il loko in scala TT ha dimensioni così ridotte che una tavola Lolin doveva essere ristretta (tagliata) per essere abbastanza piccola da adattarsi al treno.
I binari compilati possono essere scaricati. Per motivi di sicurezza, l'estensione bin è stata sostituita con txt.