Sommario:

Controllo WiFi del treno modello utilizzando MQTT: 9 passaggi
Controllo WiFi del treno modello utilizzando MQTT: 9 passaggi

Video: Controllo WiFi del treno modello utilizzando MQTT: 9 passaggi

Video: Controllo WiFi del treno modello utilizzando MQTT: 9 passaggi
Video: SHELLY & HOME ASSISTANT Funzionamento in Locale e in CLOUD. Protocollo coloT. Domotica facile shelly 2024, Dicembre
Anonim
Controllo WiFi del treno modello utilizzando MQTT
Controllo WiFi del treno modello utilizzando MQTT

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

Principi operativi
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

Scambio di dati MQTT e configurazione
Scambio di dati MQTT e configurazione

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

Controllore del treno
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

Controllo del treno LEGO
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

Telecomando
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

Controller del sensore
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

Controllore di uscita
Controllore 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

Controller finiti
Controller finiti
Controller finiti
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.

Consigliato: