Sisällysluettelo:
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-13 06:57
Minulla oli vanha TT -asteikon junamallijärjestelmä, ja minulla oli idea siitä, miten ohjata paikkoja yksilöllisesti.
Tässä mielessä menin askeleen pidemmälle ja tajusin, mitä tarvitaan paitsi junien ohjaamiseen, myös saadakseni lisätietoja koko asettelusta ja ohjaamaan jotain muuta (lamput, kiskokytkimet…)
Näin syntyy WiFi -ohjattu junajärjestelmä.
Vaihe 1: Toimenpiteet
Pääperiaate on ohjata jokaista elementtiä erikseen, joko yhdestä ohjaimesta tai useista ohjauslähteistä. Tämä vaatii luonnostaan yhteisen fyysisen kerroksen - ilmeisimmin WiFi: n - ja yhteisen viestintäprotokollan, MQTT.
Keskeinen elementti on MQTT Broker. Jokainen kytketty laite (juna, anturi, lähtö …) saa kommunikoida vain välittäjän kautta, ja se voi vastaanottaa tietoja vain välittäjältä.
Laitteiden sydän on ESP8266 -pohjainen WiFi -ohjain, kun taas MQTT -välittäjä toimii Raspberry pi -laitteella.
Aluksi Wifi -peiton tarjoaa WiFi -reititin, ja kaikki on kytketty langattomasti.
Laitteita on 4 tyyppiä:
- Junaohjain: 2 digitaalituloa, 1 digitaalinen lähtö, 2 PWM -lähtöä (kahden yksittäisen tasavirtamoottorin ohjaamiseen), - Anturiohjain: 7 digitaalituloa (tulokytkimille, optoantureille …), - Lähtöohjain: siinä on 8 digitaalilähtöä (kiskokytkimille …), - WiFi -kaukosäädin: 1 inkrementaalinen anturitulo, 1 digitaalitulo (junien etähallintaan).
Järjestelmä pystyy toimimaan myös solmupunaisesta (tabletista, tietokoneesta tai älypuhelimesta …).
Vaihe 2: MQTT -tietojen vaihto ja määritys
MQTT -protokollan perusteella jokainen laite tilaa ensin tietyn aiheen ja voi julkaista toisen aiheen. Tämä on junan ohjausverkon viestinnän perusta.
Tämä viestintäkertomus sijoittuu JSON -muotoisten viestien kautta, jotta se olisi lyhyt ja ihmisen luettavissa.
Tarkemmin katsottuna: Verkossa on WiFi -reititin, jolla on oma SSID (verkon nimi) ja salasana. Jokaisen laitteen on tiedettävä nämä kaksi, jotta he voivat käyttää WiFi -verkkoa. Myös MQTT -välittäjä on osa tätä verkkoa, joten kaikkien laitteiden on tiedettävä välittäjän IP -osoite MQTT -protokollan käyttämiseksi. Ja lopuksi jokaisella laitteella on oma aiheensa viestien tilaamiseen ja julkaisemiseen.
Käytännössä tietty kauko -ohjain käyttää samaa aihetta julkaistakseen viestejä, joille tietty juna on tilattu.
Vaihe 3: Junaohjain
Lelujunan hallitsemiseksi tarvitsemme periaatteessa kolme asiaa: virtalähteen, WiFi -ohjaimen ja moottoriajurin elektroniikan.
Virtalähde riippuu todellisesta käyttösuunnitelmasta: LEGO: n tapauksessa tämä on Power Functions -akkurasia, jos kyseessä on "oldschool" TT- tai H0 -asteikko, se on radan 12 V: n virtalähde.
WiFi -yhteensopiva ohjain on Wemos D1 mini (ESP8266 -pohjainen) ohjain.
Moottorin ohjauselektroniikka on TB6612 -pohjainen moduuli.
Junan ohjaimessa on 2 yksilöllisesti ohjattua PWM -lähtöä. Akuutisti yhtä käytetään moottorin ohjaukseen ja toista valon signalointiin. Sisältää 2 inpus -reed -kosketuspohjaista tunnistusta ja yhden digitaalilähdön.
Ohjain hyväksyy JSON -viestit WiFi- ja MQTT -protokollan kautta.
SPD1 ohjaa moottoria, esimerkiksi: {"SPD1": -204} -viestiä käytetään moottorin siirtämiseen taaksepäin 80%: n teholla (suurin nopeusarvo on -255).
SPD2 ohjaa "suuntaherkkää" LED -valon voimakkuutta: {"SPD2": -255} -viesti saa (taaksepäin) LED -valon loistamaan täydellä tehollaan.
OUT1 ohjaa digitaalilähdön tilaa: {"OUT1": 1} kytkee lähdön päälle.
Jos tulon tila muuttuu, ohjain lähettää sen mukaisesti viestin: {"IN1": 1}
Jos rekisterinpitäjä saa kelvollisen viestin, se suorittaa sen ja antaa palautteen välittäjälle. Palaute on todella suoritettu komento. Esimerkiksi: jos välittäjä lähettää {"SPD1": 280}, moottori toimii täydellä teholla, mutta palautesanoma on: {"SPD1": 255}
Vaihe 4: LEGO Train Control
LEGO -junan tapauksessa kaaviot ovat hieman erilaiset.
Virta tulee suoraan akkukotelosta.
ESP8266 -pohjaiselle Lolin -levylle tarvitaan 3,5 V: n mini -alasmuunnin.
Liitännät tehdään puoliksi leikatulla LEGO 8886 jatkojohdolla.
Vaihe 5: Kaukosäädin
Ohjain julkaisee vain viestit junalle (määritelty BCD -kytkimellä).
Pyörittämällä kooderia kauko-ohjain lähettää joko {"SPD1": "+"} tai {"SPD1": "-"} viestejä.
Kun juna vastaanottaa tämän "inkrementaalinen tyyppi" -viestin, se muuttaa PWM -lähtöarvoaan 51 tai -51.
Tällä tavalla kauko -ohjain voi muuttaa junan nopeutta viidessä vaiheessa (kumpaankin suuntaan).
Inkrementaalikooderin painaminen lähettää {"SPD1": 0}.
Vaihe 6: Anturiohjain
Ns. Anturiohjain mittaa tulojensa tilat, ja jos jokin niistä muuttuu, julkaisee arvon.
Esimerkki: {"IN1": 0, "IN6": 1} tässä esimerkissä 2 tuloa muutti tilaa samanaikaisesti.
Vaihe 7: Lähtöohjain
Lähtöohjaimessa on 8 digitaalilähtöä, jotka on kytketty ULN2803 -pohjaiseen moduuliin.
Se vastaanottaa viestejä tilaamansa aiheen kautta.
Esimerkiksi viesti {"OUT4": 1, "OUT7": 1} kytkee 4. ja 7. digitaalilähdön päälle.
Vaihe 8: Raspberry Pi ja WiFi -reititin
Minulla oli käytetty TP-Link WiFI -reititin, joten käytin tätä tukiasemana.
MQTT -välittäjä on Raspberry Pi, johon on asennettu Mosquitto.
Käytän tavallista Raspbian -käyttöjärjestelmää, jonka MQTT on asennettu:
sudo apt-get install mosquitto mosquitto-clientit python-mosquitto
TP-Link-reititin on määritettävä siten, että sillä on varaus Raspberrylle, joten jokaisen uudelleenkäynnistyksen jälkeen Pi: llä on sama IP-osoite ja jokainen laite voi muodostaa yhteyden siihen.
Ja siinä se!
Vaihe 9: Valmiit ohjaimet
Tässä ovat valmiit ohjaimet.
TT -asteikon loko on niin pieni, että Lolin -lautaa oli kavennettava (leikattava) niin pieneksi, että se mahtuu junaan.
Kootut binääritiedostot voidaan ladata. Turvallisuussyistä roskakorin laajennus korvattiin txt -tiedostolla.