Control tren WiFi model folosind MQTT: 9 pași
Control tren WiFi model folosind MQTT: 9 pași
Anonim
Control tren WiFi model folosind MQTT
Control tren WiFi model folosind MQTT

Având un vechi sistem de modele de trenuri la scară TT, am avut o idee despre cum să controlez locomotivele individual.

Având în vedere acest lucru, am făcut un pas mai departe și mi-am dat seama de ce este necesar nu numai pentru a controla trenurile, ci pentru a avea câteva informații suplimentare despre întreaga structură și pentru a controla altceva (lămpi, întrerupătoare de șină …)

Așa se naște sistemul de modele controlate prin WiFi.

Pasul 1: Principiile de funcționare

Principii de funcționare
Principii de funcționare

Principiul principal este de a controla fiecare element individual, fie de la un singur controler, fie de la mai multe surse de control. Acest lucru are nevoie în mod inerent de un strat fizic comun - cel mai evident WiFi - și de un protocol comun de comunicare, MQTT.

Elementul central este brokerul MQTT. Fiecare dispozitiv conectat (tren, senzor, ieșire …) are voie să comunice numai prin intermediul Brokerului și poate primi doar date de la Broker.

Inima dispozitivelor este un controler WiFi bazat pe ESP8266, în timp ce brokerul MQTT rulează pe un Raspberry pi.

La început, acoperirea Wifi este asigurată de un router WiFi și totul este conectat prin wireless.

Există 4 tipuri de dispozitive:

- Controler de tren: are 2 intrări digitale, 1 ieșire digitală, 2 ieșiri PWM (pentru controlul a 2 motoare individuale de curent continuu), - Controler senzor: are 7 intrări digitale (pentru comutatoare de intrare, optosenzori …), - Controler de ieșire: are 8 ieșiri digitale (pentru comutatoare pe șină …), - Telecomandă WiFi: are 1 intrare incrementală a codificatorului, 1 intrare digitală (pentru a controla trenurile de la distanță).

Sistemul este, de asemenea, capabil să funcționeze de pe Node-Red (de pe tabletă, PC sau smartphone …).

Pasul 2: Schimb și configurare date MQTT

Configurare și schimb de date MQTT
Configurare și schimb de date MQTT

Pe baza protocolului MQTT, la început fiecare dispozitiv se abonează la un subiect dat și poate publica pe un alt subiect. Aceasta este baza comunicării rețelei de control a trenului.

Aceste povești de comunicare sunt plasate prin intermediul mesajelor formatate JSON, pentru a fi scurte și lizibile de către oameni.

Privind dintr-o perspectivă mai îndepărtată: rețeaua are un router WiFi cu propriul SSID (numele rețelei) și o parolă. Fiecare dispozitiv trebuie să le cunoască pe aceste 2 pentru a accesa rețeaua WiFi. Brokerul MQTT face parte și din această rețea, deci pentru a utiliza protocolul MQTT fiecare dispozitiv trebuie să cunoască adresa IP a brokerului. Și, în sfârșit, fiecare dispozitiv are propriul subiect pentru abonare și publicarea mesajelor.

Practic, o anumită telecomandă utilizează același subiect pentru a publica mesaje la care este subscris un anumit tren.

Pasul 3: Antrenează controlerul

Controler de tren
Controler de tren

Pentru a controla un tren de jucărie, practic avem nevoie de 3 lucruri: o sursă de alimentare, un controler activat WiFi și electronica driverului motorului.

Sursa de alimentare depinde de planul de utilizare efectiv: în cazul LEGO, aceasta este cutia de baterii Power Functions, în cazul unui set de trenuri "oldschool" TT sau H0, este sursa de alimentare de 12V a pistei.

Controlerul WiFi este un controler Wemos D1 mini (bazat pe ESP8266).

Electronica driverului de motor este un modul bazat pe TB6612.

Controlerul trenului are 2 ieșiri PWM controlate individual. Acut, unul este utilizat pentru controlul motorului, iar celălalt este utilizat pentru semnalizarea luminoasă. Are 2 inpus pentru detectarea bazată pe contactul reed și o ieșire digitală.

Controlerul acceptă mesaje JSON prin protocolul WiFi și MQTT.

SPD1 controlează motorul, de exemplu: mesajul {"SPD1": -204} este utilizat pentru a muta motorul înapoi la 80% putere (valoarea vitezei maxime este -255).

SPD2 controlează intensitatea luminii LED "sensibile la direcție": mesajul {"SPD2": -255} face ca LED-ul (înapoi) să strălucească la putere maximă.

OUT1 controlează starea ieșirii digitale: {"OUT1": 1} pornește ieșirea.

Dacă starea unei intrări se modifică, controlerul trimite un mesaj conform acesteia: {"IN1": 1}

Dacă controlerul primește un mesaj valid, îl execută și oferă un feedback brokerului. Feedback-ul este comanda executată efectiv. De exemplu: dacă brokerul trimite {"SPD1": 280} atunci motorul funcționează la putere maximă, dar mesajul de feedback va fi: {"SPD1": 255}

Pasul 4: Controlul trenului LEGO

Controlul trenului LEGO
Controlul trenului LEGO

În cazul trenului LEGO, schemele sunt puțin diferite.

Puterea provine direct din cutia bateriei.

Este nevoie de un convertor mini down down pentru a furniza 3,5V pentru placa Lolin bazată pe ESP8266.

Conexiunile sunt realizate cu un fir de extensie LEGO 8886, tăiat în jumătate.

Pasul 5: telecomandă

Telecomanda
Telecomanda

Controlerul publică numai mesaje către tren (definit de comutatorul BCD).

Prin rotirea codificatorului, telecomanda trimite fie mesaje {"SPD1": "+"}, fie {"SPD1": "-"}.

Când trenul primește acest mesaj de „tip incremental”, acesta își schimbă valoarea de ieșire PWM cu 51 sau -51.

În acest fel, telecomanda poate modifica viteza trenului în 5 trepte (fiecare direcție).

Apăsarea codificatorului incremental va trimite {"SPD1": 0}.

Pasul 6: Controler senzor

Controler senzor
Controler senzor

Așa-numitul controler senzor măsoară stările intrărilor sale și, dacă oricare dintre ele se modifică, publică acea valoare.

De exemplu: {"IN1": 0, "IN6": 1} în acest exemplu, 2 intrări au schimbat starea în același timp.

Pasul 7: Controler de ieșire

Controler de ieșire
Controler de ieșire

Controlerul de ieșire are 8 ieșiri digitale, care sunt conectate la un modul bazat pe ULN2803.

Primește mesaje prin subiectul abonat.

De exemplu, mesajul {"OUT4": 1, "OUT7": 1} pornește ieșirea digitală 4. și 7..

Pasul 8: Raspberry Pi și router WiFi

Am avut un router TP-Link WiFI folosit, așa că l-am folosit ca punct de acces.

Brokerul MQTT este un Raspberry Pi cu Mosquitto instalat.

Folosesc sistemul de operare Raspbian standard cu MQTT instalat cu:

sudo apt-get install mosquitto mosquitto-clients python-mosquitto

Routerul TP-Link trebuie să fie configurat pentru a avea o rezervare de adresă pentru Raspberry, deci după fiecare repornire Pi are aceeași adresă IP și fiecare dispozitiv se poate conecta la acesta.

Si asta e!

Pasul 9: Controlere finalizate

Controlere terminate
Controlere terminate
Controlere terminate
Controlere terminate

Iată controlerele terminate.

Scala TT a avut o dimensiune atât de mică încât o placă Lolin a trebuit să fie îngustată (tăiată) pentru a fi suficient de mică pentru a se potrivi în tren.

Binele compilate pot fi descărcate. Din motive de securitate, extinderea coșului a fost înlocuită cu txt.