Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
Ob starem sistemu modelov vlakov na lestvici TT sem imel idejo, kako posamezno nadzorovati lokomotive.
S tem v mislih sem šel še korak dlje in ugotovil, kaj je potrebno ne le za nadzor vlakov, ampak tudi za dodatne informacije o celotni postavitvi in nadzoru česa drugega (svetilke, železniška stikala …)
Tako se rodi modelni sistem vlakov z nadzorom WiFi.
1. korak: Načela delovanja
Glavno načelo je krmiljenje vsakega elementa posebej, bodisi iz enega samega krmilnika bodisi iz več krmilnih virov. Ta sama po sebi potrebuje skupno fizično plast - najbolj očitno WiFi - in skupni komunikacijski protokol, MQTT.
Osrednji element je posrednik MQTT. Vsaka povezana naprava (vlak, senzor, izhod …) lahko komunicira samo prek posrednika in lahko sprejema le podatke od posrednika.
Srce naprav je krmilnik WiFi na osnovi ESP8266, posrednik MQTT pa deluje na Raspberry pi.
Sprva Wi -Fi pokriva usmerjevalnik WiFi, vse pa je povezano prek brezžične povezave.
Obstajajo 4 vrste naprav:
- Krmilnik vlaka: ima 2 digitalna vhoda, 1 digitalni izhod, 2 izhoda PWM (za krmiljenje 2 posameznih enosmernih motorjev), - Senzorski krmilnik: ima 7 digitalnih vhodov (za vhodna stikala, optosenzorje …), - Izhodni krmilnik: ima 8 digitalnih izhodov (za železniška stikala …), - Daljinski upravljalnik WiFi: ima 1 inkrementalni vhod za kodirnik, 1 digitalni vhod (za daljinsko upravljanje vlakov).
Sistem lahko deluje tudi z Node-Red (iz tabličnega računalnika, računalnika ali pametnega telefona …).
2. korak: izmenjava in konfiguracija podatkov MQTT
Na podlagi protokola MQTT se najprej vsaka naprava naroči na določeno temo in lahko objavi v drugi temi. To je osnova komunikacije omrežja za nadzor vlakov.
Te komunikacijske zgodbe so zapisane prek sporočil v obliki JSON in so kratka in berljiva za ljudi.
Če pogledamo z daljše perspektive: omrežje ima usmerjevalnik WiFi z lastnim SSID (ime omrežja) in geslom. Za dostop do omrežja WiFi mora vsaka naprava poznati ta dva. Posrednik MQTT je tudi del tega omrežja, zato mora vsaka naprava za uporabo protokola MQTT poznati IP -naslov posrednika. In nazadnje ima vsaka naprava svojo temo za naročanje in objavo sporočil.
Praktično določen daljinski upravljalnik uporablja isto temo za objavo sporočil, na katera je naročen določen vlak.
Korak: Kontrolnik vlaka
Za nadzor vlaka igrač potrebujemo v bistvu 3 stvari: napajalnik, krmilnik, ki podpira WiFi, in elektroniko strojevodje.
Napajanje je odvisno od dejanskega načrta uporabe: v primeru LEGO je to škatla za baterije Power Functions, v primeru "oldschool" sklopa vlakov TT ali H0 je 12V napajanje tira.
Krmilnik, ki podpira WiFi, je krmilnik Wemos D1 mini (na osnovi ESP8266).
Elektronika gonilnika motorja temelji na modulu TB6612.
Krmilnik vlaka ima 2 individualno vodena izhoda PWM. Eden se akutno uporablja za krmiljenje motorja, drugi pa za svetlobno signalizacijo. Ima 2 vhoda za zaznavanje trstičnih kontaktov in en digitalni izhod.
Krmilnik sprejema sporočila JSON prek protokola WiFi in MQTT.
SPD1 krmili motor, na primer: Sporočilo {"SPD1": -204} se uporablja za premik motorja nazaj pri 80% moči (največja vrednost hitrosti je -255).
SPD2 nadzoruje jakost LED, ki je "občutljiva na smer": sporočilo {"SPD2": -255} povzroči, da (nazaj) LED zasveti s polno močjo.
OUT1 nadzoruje stanje digitalnega izhoda: {"OUT1": 1} vklopi izhod.
Če se stanje vhoda spremeni, krmilnik v skladu z njim pošlje sporočilo: {"IN1": 1}
Če upravljavec prejme veljavno sporočilo, ga izvrši in posredniku posreduje povratno informacijo. Povratne informacije so dejansko izvedeni ukaz. Na primer: če posrednik pošlje {"SPD1": 280}, motor deluje s polno močjo, vendar bo sporočilo povratne informacije: {"SPD1": 255}
4. korak: Kontrola vlaka LEGO
V primeru vlaka LEGO so sheme nekoliko drugačne.
Napajanje prihaja neposredno iz škatle za baterije.
Za pretvorbo Lolin na osnovi ESP8266 je potreben mini pretvornik, ki zagotavlja 3,5 V.
Priključki so narejeni z LEGO 8886 podaljševalno žico, prepolovljeno.
5. korak: Daljinski upravljalnik
Krmilnik objavlja samo sporočila vlaku (opredeljeno s stikalom BCD).
Z vrtenjem kodirnika daljinski upravljalnik pošlje sporočila {"SPD1": "+"} ali {"SPD1": "-"}.
Ko vlak prejme to sporočilo "inkrementalni tip", spremeni svojo izhodno vrednost PWM za 51 ali -51.
Tako lahko daljinski upravljalnik spremeni hitrost vlaka v 5 korakih (v vsako smer).
S pritiskom na inkrementalni dajalnik se pošlje {"SPD1": 0}.
6. korak: Krmilnik senzorja
Tako imenovani senzorski krmilnik meri stanje svojih vhodov in če se kateri od njih spremeni, objavi to vrednost.
Na primer: {"IN1": 0, "IN6": 1} v tem primeru sta 2 vhoda spremenila stanje hkrati.
7. korak: Izhodni krmilnik
Izhodni krmilnik ima 8 digitalnih izhodov, ki so povezani z modulom, ki temelji na ULN2803.
Sporočila prejema prek naročene teme.
Na primer sporočilo {"OUT4": 1, "OUT7": 1} vklopi 4. in 7. digitalni izhod.
8. korak: Raspberry Pi in usmerjevalnik WiFi
Imel sem rabljen usmerjevalnik Wi-Fi TP-Link, zato sem ga uporabil kot dostopno točko.
Posrednik MQTT je Raspberry Pi z nameščenim komarjem.
Uporabljam standardni OS Raspbian z MQTT, ki vsebuje:
sudo apt-get install mosquitto mosquitto-odjemalci komarjev python-mosquitto
Usmerjevalnik TP-Link mora biti konfiguriran tako, da ima rezervacijo naslova za Raspberry, zato ima po vsakem ponovnem zagonu Pi enak naslov IP in vsaka naprava se lahko poveže z njim.
In to je to!
9. korak: Končani krmilniki
Tu so končni krmilniki.
Lestvica TT loko je tako majhna, da je bilo treba Lolinovo ploščo zožiti (razrezati), da je dovolj majhna, da se prilega vlaku.
Zbrane binarne datoteke lahko prenesete. Iz varnostnih razlogov je bil podaljšek koša zamenjan v txt.