Modeltrein WiFi -beheer met behulp van MQTT: 9 stappe
Modeltrein WiFi -beheer met behulp van MQTT: 9 stappe
Anonim
Modeltrein WiFi -beheer met behulp van MQTT
Modeltrein WiFi -beheer met behulp van MQTT

Met 'n ou TT -model, het ek 'n idee gehad hoe ek die lokos individueel kan beheer.

Met die oog hierop het ek 'n stap verder gegaan en uitgevind wat nodig is om nie net die treine te beheer nie, maar ook ekstra inligting oor die hele uitleg te hê en iets anders te beheer (lampe, spoorskakelaars …)

Dit is hoe die WiFi -beheerde modeltreinstelsel gebore word.

Stap 1: Operasieprincipes

Operasie beginsels
Operasie beginsels

Die hoofbeginsel is om elke element individueel te beheer, hetsy vanaf 'n enkele beheerder, óf uit verskeie beheerbronne. Dit benodig inherent 'n gemeenskaplike fisiese laag - natuurlik WiFi - en 'n gemeenskaplike kommunikasieprotokol, MQTT.

Die sentrale element is die MQTT -makelaar. Elke gekoppelde toestel (trein, sensor, uitset …) mag slegs deur die makelaar kommunikeer en kan slegs data van die makelaar ontvang.

Die toestelle se hart is 'n ESP8266 -gebaseerde WiFi -beheerder, terwyl die MQTT -makelaar op 'n Framboospi werk.

Aanvanklik word die WiFi -dekking deur 'n WiFi -router verskaf, en alles word met 'n draadlose verbinding verbind.

Daar is 4 tipes toestelle:

- Treinbeheerder: het 2 digitale insette, 1 digitale uitset, 2 PWM -uitsette (vir die bestuur van 2 individuele DC -motors), - Sensorbeheerder: het 7 digitale insette (vir ingangskakelaars, optosensors …), - Uitgangsbeheerder: het 8 digitale uitsette (vir spoorskakelaars …), - WiFi -afstandsbediening: het 1 inkrementele encoder -ingang, 1 digitale ingang (om treine op afstand te beheer).

Die stelsel kan ook werk vanaf Node-Red (vanaf tablet, rekenaar of slimfoon …).

Stap 2: MQTT -uitruil en konfigurasie van data

MQTT -data -uitruil en -opstelling
MQTT -data -uitruil en -opstelling

Op grond van die MQTT -protokol, teken elke toestel eers 'n gegewe onderwerp aan en kan dit na 'n ander onderwerp publiseer. Dit is die basis van die treinbeheernetwerk se kommunikasie.

Hierdie kommunikasieverhale plaas deur middel van JSON -geformateerde boodskappe kort en menslik leesbaar.

Vanuit 'n verder perspektief: die netwerk het 'n WiFi -router met sy eie SSID (netwerknaam) en 'n wagwoord. Elke toestel moet hierdie twee ken om toegang tot die WiFi -netwerk te verkry. Die MQTT -makelaar is ook deel van hierdie netwerk, dus om die MQTT -protokol te gebruik, moet elke toestel die IP -adres van die makelaar ken. En laastens het elke toestel sy eie onderwerp om in te teken en boodskappe te publiseer.

Feitlik gebruik 'n gegewe afstandsbediening dieselfde onderwerp om boodskappe te publiseer waarop 'n gegewe trein ingeteken is.

Stap 3: Treinbeheerder

Treinbeheerder
Treinbeheerder

Om 'n speelgoedtrein te beheer, benodig ons basies drie dinge: 'n kragtoevoer, 'n WiFi -beheerder en elektroniese motorbestuurders.

Die kragtoevoer hang af van die werklike gebruiksplan: in die geval van LEGO, is dit die Power Box -batterykas, in die geval van 'n "oldschool" TT- of H0 -treinstel, is dit die 12V -kragtoevoer van die baan.

Die WiFi -beheerder is 'n Wemos D1 mini (op ESP8266 gebaseerde) kontroleerder.

Die motorbestuurderelektronika is 'n TB6612 -module.

Die treinbeheerder het 2 individueel beheerde PWM -uitsette. Die een word akuut gebruik vir motorbeheer en die ander vir ligte sein. Het 2 inpus vir rietkontak -gebaseerde sensing en een digitale uitset.

Die beheerder aanvaar JSON -boodskappe via WiFi en MQTT -protokol.

SPD1 beheer die motor, byvoorbeeld: {"SPD1": -204} -boodskap word gebruik om die motor met 80% krag agteruit te beweeg (die maksimum spoedwaarde is -255).

SPD2 beheer die intensiteit van die "rigtinggevoelige" LED -lig: {"SPD2": -255} -boodskap laat die (agteruit) LED met volle krag skyn.

OUT1 beheer die toestand van die digitale uitset: {"OUT1": 1} skakel die uitset aan.

As die toestand van 'n invoer verander, stuur die beheerder 'n boodskap daarvolgens: {"IN1": 1}

As die beheerder 'n geldige boodskap ontvang, voer dit dit uit en gee dit 'n terugvoer aan die makelaar. Die terugvoer is die opdrag wat eintlik uitgevoer is. Byvoorbeeld: as die makelaar {"SPD1": 280} stuur, werk die motor op volle krag, maar die terugvoerboodskap is: {"SPD1": 255}

Stap 4: LEGO Treinbeheer

LEGO Treinbeheer
LEGO Treinbeheer

In die geval van 'n LEGO -trein, is die skemas 'n bietjie anders.

Die krag kom direk uit die batterykas.

Daar is 'n mini -afwaartse omskakelaar nodig om 3.5V te verskaf vir die ESP8266 -gebaseerde Lolin -bord.

Die verbindings word gemaak met 'n LEGO 8886 verlengdraad, in twee gesny.

Stap 5: Afstandsbediening

Afstand beheerder
Afstand beheerder

Die beheerder publiseer slegs boodskappe aan die trein (gedefinieer deur die BCD -skakelaar).

Deur die encoder te draai, stuur die afstandbeheerder óf {"SPD1": "+"} óf {"SPD1": "-"} boodskappe.

As die trein hierdie 'inkrementele tipe' boodskap ontvang, verander dit sy PWM -uitsetwaarde met 51 of -51.

Op hierdie manier kan die afstandsbediening die trein se spoed in 5 stappe (elke rigting) verander.

Deur op die inkrementele encoder te druk, sal {"SPD1": 0} gestuur word.

Stap 6: Sensorbeheerder

Sensorbeheerder
Sensorbeheerder

Die sogenaamde sensorbeheerder meet die toestande van sy insette, en as een van hulle verander, publiseer die waarde.

Byvoorbeeld: {"IN1": 0, "IN6": 1} in hierdie voorbeeld het 2 insette terselfdertyd die toestand verander.

Stap 7: Uitvoerbeheerder

Uitsetbeheerder
Uitsetbeheerder

Die uitsetbeheerder het 8 digitale uitsette wat gekoppel is aan 'n ULN2803 -gebaseerde module.

Dit ontvang boodskappe deur die onderwerp waarop dit ingeteken is.

Byvoorbeeld, die {"OUT4": 1, "OUT7": 1} boodskap skakel die 4. en die 7. digitale uitset aan.

Stap 8: Framboos Pi en WiFi -router

Ek het 'n gebruikte TP-Link WiFI-router gehad, so ek het dit as 'n toegangspunt gebruik.

Die MQTT -makelaar is 'n Raspberry Pi met Mosquitto geïnstalleer.

Ek gebruik die standaard Raspbian OS met MQTT geïnstalleer met:

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

Die TP-Link-router moet gekonfigureer wees om 'n adresreservering vir die Framboos te hê, dus na elke herlaai het die Pi dieselfde IP-adres en kan elke toestel daaraan koppel.

En dit is dit!

Stap 9: Voltooide beheerders

Voltooide beheerders
Voltooide beheerders
Voltooide beheerders
Voltooide beheerders

Hier is die voltooide beheerders.

Die loko van die TT -skaal het so 'n klein grootte dat 'n Lolin -bord vernou moes word om klein genoeg te wees om in die trein te pas.

Die saamgestelde binaries kan afgelaai word. Om veiligheidsredes is die uitbreiding van die asblik na txt vervang.