Inhoudsopgave:
- Stap 1: Werkingsprincipes
- Stap 2: MQTT-gegevensuitwisseling en configuratie
- Stap 3: Treincontroller
- Stap 4: LEGO Treincontrole
- Stap 5: Afstandsbediening
- Stap 6: Sensorcontroller
- Stap 7: Uitgangscontroller
- Stap 8: Raspberry Pi en WiFi-router
- Stap 9: Voltooide controllers
Video: Modeltrein WiFi-besturing met behulp van MQTT - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
Met een oud TT-treinmodelsysteem had ik een idee hoe ik de locomotieven afzonderlijk kon besturen.
Met dit in gedachten ging ik een stap verder en ontdekte wat er nodig is om niet alleen de treinen te besturen, maar ook om wat aanvullende informatie over de hele lay-out te hebben en iets anders te bedienen (lampen, spoorwissels…)
Zo is het wifi-gestuurde modeltreinsysteem geboren.
Stap 1: Werkingsprincipes
Het belangrijkste principe is om elk element afzonderlijk te besturen, hetzij vanuit een enkele controller, hetzij vanuit meerdere besturingsbronnen. Dit vereist inherent een gemeenschappelijke fysieke laag - het meest duidelijk WiFi - en een gemeenschappelijk communicatieprotocol, MQTT.
Het centrale element is de MQTT Broker. Elk aangesloten apparaat (trein, sensor, uitgang…) mag alleen communiceren via de Makelaar en kan alleen data ontvangen van de Makelaar.
Het hart van het apparaat is een op ESP8266 gebaseerde WiFi-controller, terwijl de MQTT-broker op een Raspberry pi draait.
In eerste instantie wordt de wifi-dekking verzorgd door een wifi-router en alles is draadloos aangesloten.
Er zijn 4 soorten apparaten:
- Treincontroller: heeft 2 digitale ingangen, 1 digitale uitgang, 2 PWM-uitgangen (voor het aansturen van 2 individuele DC-motoren), - Sensorcontroller: heeft 7 digitale ingangen (voor ingangsschakelaars, optosensoren…), - Uitgangscontroller: heeft 8 digitale uitgangen (voor spoorwissels…), - WiFi-afstandsbediening: heeft 1 incrementele encoderingang, 1 digitale ingang (om treinen op afstand te besturen).
Het systeem kan ook werken vanuit Node-Red (vanaf tablet, pc of smartphone…).
Stap 2: MQTT-gegevensuitwisseling en configuratie
Op basis van het MQTT-protocol abonneert elk apparaat zich in eerste instantie op een bepaald onderwerp en kan het publiceren naar een ander onderwerp. Dit is de basis van de communicatie van het treinverkeersnet.
Deze communicatieverhalen worden geplaatst via JSON-geformatteerde berichten, om kort en menselijk leesbaar te zijn.
Kijkend vanuit een verder perspectief: het netwerk heeft een wifi-router met een eigen SSID (netwerknaam) en een wachtwoord. Elk apparaat moet deze 2 kennen om toegang te krijgen tot het wifi-netwerk. De MQTT-broker maakt ook deel uit van dit netwerk, dus om het MQTT-protocol te kunnen gebruiken, moet elk apparaat het IP-adres van de broker kennen. En tot slot heeft elk apparaat zijn eigen onderwerp voor het abonneren en het publiceren van berichten.
In de praktijk gebruikt een bepaalde afstandsbediening hetzelfde onderwerp om berichten te publiceren waarop een bepaalde trein is geabonneerd.
Stap 3: Treincontroller
Om een speelgoedtrein te besturen, hebben we in principe 3 dingen nodig: een voeding, een WiFi-controller en elektronica voor de motorbestuurder.
De stroomvoorziening is afhankelijk van het daadwerkelijke gebruiksplan: in het geval van LEGO is dit de Power Functions accubak, in het geval van een "oldschool" TT of H0 treinstel is dit de 12V stroomvoorziening van het spoor.
De WiFi-controller is een Wemos D1 mini (ESP8266 gebaseerd) controller.
De elektronica van de motorbesturing is een op TB6612 gebaseerde module.
De treindienstleider heeft 2 afzonderlijk aangestuurde PWM-uitgangen. Eigenlijk wordt de ene gebruikt voor motorbesturing en de andere voor lichtsignalering. Heeft 2 ingangen voor op reedcontact gebaseerde detectie en één digitale uitgang.
De controller accepteert JSON-berichten via WiFi en MQTT-protocol.
SPD1 bestuurt de motor, bijvoorbeeld: {"SPD1": -204} bericht wordt gebruikt om de motor achteruit te bewegen met 80% vermogen (de maximale snelheidswaarde is -255).
SPD2 regelt de intensiteit van het "richtinggevoelige" LED-licht: {"SPD2": -255} bericht laat de (achteruit) LED op volle kracht schijnen.
OUT1 regelt de status van de digitale uitgang: {"OUT1": 1} schakelt de uitgang in.
Als de status van een ingang verandert, stuurt de controller een bericht overeenkomstig: {"IN1": 1}
Als de controller een geldig bericht ontvangt, voert hij dit uit en geeft hij feedback aan de makelaar. De feedback is het daadwerkelijk uitgevoerde commando. Bijvoorbeeld: als de broker {"SPD1": 280} verzendt, draait de motor op vol vermogen, maar het terugkoppelingsbericht is: {"SPD1": 255}
Stap 4: LEGO Treincontrole
In het geval van een LEGO-trein zijn de schema's een beetje anders.
De stroom komt rechtstreeks uit de accubak.
Er is behoefte aan een mini step-down converter om 3,5 V te leveren voor het op ESP8266 gebaseerde Lolin-bord.
De verbindingen zijn gemaakt met een LEGO 8886 verlengdraad, doormidden gesneden.
Stap 5: Afstandsbediening
De verkeersleider publiceert alleen berichten naar de trein (gedefinieerd door de BCD-schakelaar).
Door aan de encoder te draaien, verzendt de afstandsbediening {"SPD1": "+"} of {"SPD1": "-"} berichten.
Wanneer de trein dit bericht van het "incrementele type" ontvangt, verandert de PWM-uitgangswaarde met 51 of -51.
Zo kan de afstandsbediening de snelheid van de trein in 5 stappen (elke richting) wijzigen.
Als u op de incrementele encoder drukt, wordt {"SPD1": 0} verzonden.
Stap 6: Sensorcontroller
De zogenaamde sensorcontroller meet de toestanden van zijn ingangen en publiceert die waarde als een van deze verandert.
Bijvoorbeeld: {"IN1": 0, "IN6": 1} in dit voorbeeld zijn 2 ingangen tegelijkertijd van status veranderd.
Stap 7: Uitgangscontroller
De uitgangscontroller heeft 8 digitale uitgangen, die zijn aangesloten op een op ULN2803-gebaseerde module.
Het ontvangt berichten via zijn geabonneerde onderwerp.
Bijvoorbeeld het bericht {"OUT4": 1, "OUT7": 1} zet de 4. en de 7. digitale uitgang aan.
Stap 8: Raspberry Pi en WiFi-router
Ik had een gebruikte wifi-router van TP-Link, dus deze gebruikte ik als Access Point.
De MQTT-makelaar is een Raspberry Pi waarop Mosquitto is geïnstalleerd.
Ik gebruik het standaard Raspbian-besturingssysteem met MQTT geïnstalleerd met:
sudo apt-get install mug mug-clients python-mosquitto
De TP-Link-router moet worden geconfigureerd om een adresreservering voor de Raspberry te hebben, dus na elke herstart heeft de Pi hetzelfde IP-adres en kan elk apparaat er verbinding mee maken.
En dat is het!
Stap 9: Voltooide controllers
Hier zijn de voltooide controllers.
De TT-schaal loko heeft zo'n klein formaat dat een Lolin-bord versmald (geknipt) moest worden om klein genoeg te zijn om in de trein te passen.
De gecompileerde binaire bestanden kunnen worden gedownload. Om veiligheidsredenen is de bin-extensie vervangen door txt.
Aanbevolen:
Internet/cloudgestuurde huisautomatisering met behulp van Esp8266 (aREST, MQTT, IoT): 7 stappen (met afbeeldingen)
Internet/cloudgestuurde huisautomatisering met behulp van Esp8266 (aREST, MQTT, IoT): ALLE credits naar http://arest.io/ voor de cloudservice!!IoT het meest besproken onderwerp ter wereld op dit moment!! Cloudservers en -services die dit mogelijk maken, is het aantrekkingspunt van de wereld van vandaag… DE AFSTANDSBARRIRE UITSLUITEN was en is de
Digitale klok met netwerktijd met behulp van de ESP8266: 4 stappen (met afbeeldingen)
Digitale netwerkklok met de ESP8266: we leren hoe we een schattige kleine digitale klok kunnen bouwen die communiceert met NTP-servers en de netwerk- of internettijd weergeeft. We gebruiken de WeMos D1 mini om verbinding te maken met een wifi-netwerk, de NTP-tijd te verkrijgen en deze weer te geven op een OLED-module. De video hierboven
Weerrapport met behulp van ThingSpeak MQTT- en IFTTT-applets: 8 stappen
Weerrapport met behulp van ThingSpeak MQTT- en IFTTT-applets: Inleiding Een cloudgebaseerde weertoepassing die dagelijkse weerrapporten als e-mailmelding levert. Deze webapplicatie meet temperatuur en vochtigheid met behulp van SHT25 en Adafruit Huzzah ESP8266. Het biedt ons realtime temperatuur en vochtigheid
Toetsenbordgestuurde modeltrein V2.0 - PS/2-interface: 13 stappen (met afbeeldingen)
Toetsenbordgestuurde modeltrein V2.0 | PS/2-interface: in een van mijn vorige Instructables heb ik je laten zien hoe je een modelspoorbaan kunt besturen met een toetsenbord. Het deed het geweldig, maar had als nadeel dat er een computer nodig was om te werken. Laten we in deze Instructable eens kijken hoe we een modeltrein kunnen besturen met behulp van een toetsenbord
Hoe u gebruikersniveaus van NUMA toevoegt aan uw exemplaar van N met behulp van NumADD Firefox AddOn: 4 stappen
Gebruikersniveaus van NUMA toevoegen aan uw exemplaar van N NumADD Firefox-add-on gebruiken: Elke gebruiker van Metanet's N-database op gebruikersniveau NUMA weet hoe onhandig de interface is voor het kopiëren van door gebruikers gemaakte niveaus naar uw exemplaar van het spel. NumADD, elimineert de noodzaak van kopiëren en plakken en maakt het overzetten van niveaus het werk van één muisklik