Innehållsförteckning:

Modeltåg WiFi -kontroll med MQTT: 9 steg
Modeltåg WiFi -kontroll med MQTT: 9 steg

Video: Modeltåg WiFi -kontroll med MQTT: 9 steg

Video: Modeltåg WiFi -kontroll med MQTT: 9 steg
Video: Connecting sensors to my favorite irrigation controller using WiFi - MQTT & NodeMCU 2024, November
Anonim
Modeltåg WiFi -kontroll med MQTT
Modeltåg WiFi -kontroll med MQTT

Med ett gammalt tågmodellsystem i TT -skala hade jag en idé om hur jag skulle styra lokalen individuellt.

Med detta i åtanke gick jag ett steg längre och kom på vad som krävs för att inte bara styra tågen utan ha lite ytterligare information om hela layouten och styra något annat (lampor, järnvägsbrytare …)

Så här föds det WiFi -kontrollerade tågsystemet.

Steg 1: Operationsprinciper

Operationsprinciper
Operationsprinciper

Huvudprincipen är att styra varje element individuellt, antingen från en enda styrenhet eller från flera kontrollkällor. Detta behöver i sig ett gemensamt fysiskt lager - uppenbarligen WiFi - och ett gemensamt kommunikationsprotokoll, MQTT.

Det centrala elementet är MQTT -mäklaren. Varje ansluten enhet (tåg, sensor, utgång …) får endast kommunicera via mäklaren och kan endast ta emot data från mäklaren.

Enheternas hjärta är en ESP8266 -baserad WiFi -kontroller, medan MQTT -mäklaren körs på en Raspberry pi.

Först tillhandahålls Wifi -täckningen av en WiFi -router, och allt är anslutet via trådlöst.

Det finns 4 typer av enheter:

- Tågstyrenhet: har 2 digitala ingångar, 1 digital utgång, 2 PWM -utgångar (för styrning av 2 individuella likströmsmotorer), - Sensorkontroller: har 7 digitala ingångar (för ingångsbrytare, optosensorer …), - Utgångsregulator: har 8 digitala utgångar (för järnvägsbrytare …), - WiFi -fjärrkontroll: har 1 inkrementell encoderingång, 1 digital ingång (för fjärrstyrning av tåg).

Systemet kan också fungera från Node-Red (från surfplatta, PC eller smartphone …).

Steg 2: MQTT Data Exchange och konfiguration

MQTT Data Exchange och konfiguration
MQTT Data Exchange och konfiguration

Baserat på MQTT -protokollet prenumererar varje enhet först på ett visst ämne och kan publicera till ett annat ämne. Detta är grunden för tågkontrollnätverkets kommunikation.

Dessa kommunikationsberättelser placeras genom JSON -formaterade meddelanden för att vara korta och läsbara för människor.

Ser från ett längre perspektiv: Nätverket har en WiFi -router med ett eget SSID (nätverksnamn) och ett lösenord. Varje enhet måste kunna dessa 2 för att komma åt WiFi -nätverket. MQTT -mäklaren är också en del av detta nätverk, så för att kunna använda MQTT -protokoll måste varje enhet känna mäklarens IP -adress. Och slutligen har varje enhet ett eget ämne för prenumeration och publicering av meddelanden.

I praktiken använder en given fjärrkontroll samma ämne för att publicera meddelanden som ett visst tåg prenumererar på.

Steg 3: Tågkontroller

Tågkontroller
Tågkontroller

För att kunna styra ett leksakståg behöver vi i princip 3 saker: en strömförsörjning, en WiFi -aktiverad styrenhet och motorförarelektronik.

Strömförsörjningen beror på den faktiska användningsplanen: för LEGO är detta batterifacket Power Functions, i fallet med en "oldschool" TT eller H0 -tågsats är det spårets 12V strömförsörjning.

Den WiFi -aktiverade handkontrollen är en Wemos D1 mini (ESP8266 -baserad) styrenhet.

Motorförarens elektronik är en TB6612 -baserad modul.

Tågkontrollen har 2 individuellt styrda PWM -utgångar. Akut används en för motorstyrning och den andra för ljussignalering. Har 2 inpus för vasskontaktbaserad avkänning och en digital utgång.

Styrenheten accepterar JSON -meddelanden via WiFi och MQTT -protokoll.

SPD1 styr motorn, till exempel: {"SPD1": -204} meddelande används för att flytta motorn bakåt med 80% effekt (maxhastighetsvärdet är -255).

SPD2 styr den "riktningskänsliga" LED -ljusets intensitet: {"SPD2": -255} meddelande får (bakåt) LED att lysa med full effekt.

OUT1 styr den digitala utgångens tillstånd: {"OUT1": 1} slår på utgången.

Om tillståndet för en ingång ändras skickar styrenheten ett meddelande enligt det: {"IN1": 1}

Om den registeransvarige får ett giltigt meddelande, utför den det och ger en återkoppling till mäklaren. Återkopplingen är det faktiskt utförda kommandot. Till exempel: om mäklaren skickar {"SPD1": 280} körs motorn med full effekt men feedbackmeddelandet kommer att vara: {"SPD1": 255}

Steg 4: LEGO Train Control

LEGO Train Control
LEGO Train Control

För LEGO -tåg är schemat lite annorlunda.

Strömmen kommer direkt från batterilådan.

Det finns ett behov av en mini -step -down -omvandlare för att ge 3,5V för det ESP8266 -baserade Lolin -kortet.

Anslutningarna görs med en LEGO 8886 förlängningstråd, halverad.

Steg 5: Fjärrkontroll

Fjärrkontroll
Fjärrkontroll

Styrenheten publicerar bara meddelanden till tåget (definierat av BCD -omkopplaren).

Genom att rotera kodaren skickar fjärrkontrollen antingen {"SPD1": "+"} eller {"SPD1": "-"} meddelanden.

När tåget tar emot detta "inkrementell typ" -meddelande ändrar det sitt PWM -utgångsvärde med 51 eller -51.

På så sätt kan fjärrkontrollen ändra tågets hastighet i 5 steg (varje riktning).

Om du trycker på den inkrementella pulsgivaren skickas {"SPD1": 0}.

Steg 6: Sensorkontroller

Sensorstyrenhet
Sensorstyrenhet

Den så kallade sensorstyrenheten mäter tillståndet för dess ingångar, och om någon av dem ändras publicerar det värdet.

Till exempel: {"IN1": 0, "IN6": 1} i detta exempel har två ingångar ändrat tillstånd samtidigt.

Steg 7: Utmatningskontroller

Utgångskontroller
Utgångskontroller

Utgångskontrollen har 8 digitala utgångar, som är anslutna till en ULN2803 -baserad modul.

Det tar emot meddelanden genom sitt prenumererade ämne.

Till exempel aktiverar meddelandet {"OUT4": 1, "OUT7": 1} den digitala utgången 4. och 7..

Steg 8: Raspberry Pi och WiFi Router

Jag hade en begagnad TP-Link WiFI-router, så jag använde den här som en åtkomstpunkt.

MQTT -mäklaren är en Raspberry Pi med Mosquitto installerat.

Jag använder standard Raspbian OS med MQTT installerat med:

sudo apt-get install mosquitto mygg-klienter python-mygg

TP-Link-routern måste konfigureras för att ha en adressreservation för Hallon, så efter varje omstart har Pi samma IP-adress och varje enhet kan ansluta till den.

Och det är allt!

Steg 9: Färdiga kontroller

Färdiga kontroller
Färdiga kontroller
Färdiga kontroller
Färdiga kontroller

Här är de färdiga kontrollerna.

TT -skalan loko har så liten storlek att en Lolin -bräda måste smalas (skäras) för att vara tillräckligt liten för att passa in i tåget.

De sammanställda binärfilerna kan laddas ner. Av säkerhetsskäl ersattes fackförlängningen till txt.

Rekommenderad: