Inhaltsverzeichnis:
- Schritt 1: Betriebsprinzipien
- Schritt 2: MQTT-Datenaustausch und -Konfiguration
- Schritt 3: Zugregler
- Schritt 4: LEGO Zugsteuerung
- Schritt 5: Fernbedienung
- Schritt 6: Sensorcontroller
- Schritt 7: Ausgangscontroller
- Schritt 8: Raspberry Pi und WLAN-Router
- Schritt 9: Fertige Controller
Video: Modellbahn-WLAN-Steuerung mit MQTT - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:20
Da ich eine alte Zugmodellanlage im TT-Maßstab hatte, hatte ich eine Idee, wie man die Loks einzeln steuern kann.
Vor diesem Hintergrund bin ich noch einen Schritt weiter gegangen und habe herausgefunden, was man braucht, um nicht nur die Züge zu steuern, sondern auch einige zusätzliche Informationen über die gesamte Anlage zu haben und etwas anderes zu steuern (Lampen, Weichen…)
So entsteht das WiFi-gesteuerte Modellbahnsystem.
Schritt 1: Betriebsprinzipien
Das Hauptprinzip besteht darin, jedes Element einzeln zu steuern, entweder von einem einzelnen Controller oder von mehreren Steuerquellen. Dies erfordert von Natur aus eine gemeinsame physikalische Schicht – am offensichtlichsten WiFi – und ein gemeinsames Kommunikationsprotokoll, MQTT.
Zentrales Element ist der MQTT-Broker. Jedes angeschlossene Gerät (Zug, Sensor, Ausgang…) darf nur über den Broker kommunizieren und kann nur Daten vom Broker empfangen.
Herzstück der Geräte ist ein ESP8266-basierter WLAN-Controller, während der MQTT-Broker auf einem Raspberry Pi läuft.
Zunächst wird die WLAN-Abdeckung von einem WLAN-Router bereitgestellt, und alles ist drahtlos verbunden.
Es gibt 4 Arten von Geräten:
- Zugsteuerung: verfügt über 2 digitale Eingänge, 1 digitaler Ausgang, 2 PWM-Ausgänge (zur Steuerung von 2 einzelnen DC-Motoren), - Sensorcontroller: verfügt über 7 digitale Eingänge (für Eingangsschalter, Optosensoren…), - Ausgangsregler: verfügt über 8 digitale Ausgänge (für Bahnweichen…), - WiFi-Fernbedienung: verfügt über 1 Inkremental-Encoder-Eingang, 1 Digitaleingang (zur Fernsteuerung von Zügen).
Das System kann auch von Node-Red aus betrieben werden (von Tablet, PC oder Smartphone…).
Schritt 2: MQTT-Datenaustausch und -Konfiguration
Basierend auf dem MQTT-Protokoll abonniert jedes Gerät zunächst ein bestimmtes Thema und kann zu einem anderen Thema veröffentlichen. Dies ist die Basis für die Kommunikation des Zugbeeinflussungsnetzwerks.
Diese Kommunikationsgeschichten werden durch JSON-formatierte Nachrichten platziert, um kurz und für Menschen lesbar zu sein.
Aus einer weiteren Perspektive betrachtet: Das Netzwerk verfügt über einen WLAN-Router mit eigener SSID (Netzwerkname) und einem Passwort. Jedes Gerät muss diese 2 kennen, um auf das WLAN-Netzwerk zugreifen zu können. Der MQTT-Broker ist ebenfalls Teil dieses Netzwerks, sodass jedes Gerät die IP-Adresse des Brokers kennen muss, um das MQTT-Protokoll zu verwenden. Und schließlich hat jedes Gerät sein eigenes Thema zum Abonnieren und Veröffentlichen von Nachrichten.
Praktisch verwendet eine bestimmte Fernbedienung dasselbe Thema, um Nachrichten zu veröffentlichen, die ein bestimmter Zug abonniert hat.
Schritt 3: Zugregler
Um eine Spielzeugeisenbahn zu steuern, benötigen wir im Wesentlichen 3 Dinge: ein Netzteil, einen WiFi-fähigen Controller und eine Motortreiberelektronik.
Die Stromversorgung richtet sich nach dem aktuellen Nutzungsplan: bei LEGO ist dies die Power Functions Batteriebox, bei einem "oldschool" TT- oder H0-Zugset die 12V Stromversorgung der Strecke.
Der WiFi-fähige Controller ist ein Wemos D1 mini (ESP8266 basierend) Controller.
Die Motortreiberelektronik ist ein auf TB6612 basierendes Modul.
Der Zugregler verfügt über 2 einzeln angesteuerte PWM-Ausgänge. Tatsächlich wird einer für die Motorsteuerung und der andere für die Lichtsignalisierung verwendet. Verfügt über 2 Eingänge für Reedkontakt-basierte Sensorik und einen digitalen Ausgang.
Der Controller akzeptiert JSON-Nachrichten über WiFi und das MQTT-Protokoll.
SPD1 steuert den Motor, zum Beispiel: Die Meldung {"SPD1": -204} wird verwendet, um den Motor mit 80 % Leistung rückwärts zu bewegen (der maximale Geschwindigkeitswert ist -255).
SPD2 steuert die Intensität des "richtungsempfindlichen" LED-Lichts: {"SPD2": -255} Nachricht lässt die (rückwärts gerichtete) LED mit voller Leistung leuchten.
OUT1 steuert den Zustand des Digitalausgangs: {"OUT1": 1} schaltet den Ausgang ein.
Ändert sich der Zustand eines Eingangs, sendet die Steuerung eine entsprechende Meldung: {"IN1": 1}
Wenn der Controller eine gültige Nachricht empfängt, führt er diese aus und gibt eine Rückmeldung an den Broker. Die Rückmeldung ist der tatsächlich ausgeführte Befehl. Beispiel: Wenn der Broker {"SPD1": 280} sendet, läuft der Motor mit voller Leistung, aber die Rückmeldung lautet: {"SPD1": 255}
Schritt 4: LEGO Zugsteuerung
Beim LEGO-Zug sind die Schaltpläne etwas anders.
Der Strom kommt direkt aus der Batteriebox.
Es besteht ein Bedarf an einem Mini-Abwärtswandler, um 3,5 V für das ESP8266-basierte Lolin-Board bereitzustellen.
Die Verbindungen werden mit einem LEGO 8886 Verlängerungsdraht hergestellt, der in zwei Hälften geschnitten ist.
Schritt 5: Fernbedienung
Der Controller veröffentlicht nur Nachrichten an den Zug (definiert durch den BCD-Switch).
Durch Drehen des Encoders sendet die Fernbedienung entweder {"SPD1": "+"} oder {"SPD1": "-"} Nachrichten.
Wenn der Zug diese "Inkrementaltyp"-Nachricht empfängt, ändert er seinen PWM-Ausgangswert um 51 oder -51.
Auf diese Weise kann die Fernbedienung die Geschwindigkeit des Zuges in 5 Schritten (jede Richtung) ändern.
Durch Drücken des Inkrementalgebers wird {"SPD1": 0} gesendet.
Schritt 6: Sensorcontroller
Der sogenannte Sensorcontroller misst die Zustände seiner Eingänge und veröffentlicht diesen Wert, wenn sich einer von ihnen ändert.
Zum Beispiel: {"IN1": 0, "IN6": 1} In diesem Beispiel haben 2 Eingänge gleichzeitig den Zustand geändert.
Schritt 7: Ausgangscontroller
Der Ausgangscontroller verfügt über 8 digitale Ausgänge, die mit einem ULN2803-basierten Modul verbunden sind.
Es empfängt Nachrichten über sein abonniertes Thema.
Zum Beispiel schaltet die Meldung {"OUT4": 1, "OUT7": 1} den 4. und den 7. digitalen Ausgang ein.
Schritt 8: Raspberry Pi und WLAN-Router
Ich hatte einen gebrauchten TP-Link WLAN-Router, also habe ich diesen als Access Point verwendet.
Der MQTT-Broker ist ein Raspberry Pi mit installiertem Mosquitto.
Ich verwende das Standard-Raspbian-Betriebssystem mit installiertem MQTT mit:
sudo apt-get install mosquitto mosquitto-clients python-mosquitto
Der TP-Link-Router muss so konfiguriert sein, dass er eine Adressreservierung für den Raspberry hat, damit der Pi nach jedem Neustart die gleiche IP-Adresse hat und sich jedes Gerät damit verbinden kann.
Und das ist es!
Schritt 9: Fertige Controller
Hier sind die fertigen Controller.
Die Lok im Maßstab TT hat eine so geringe Größe, dass ein Lolin-Brett verengt (zugeschnitten) werden musste, um klein genug zu sein, um in den Zug zu passen.
Die kompilierten Binärdateien können heruntergeladen werden. Aus Sicherheitsgründen wurde die bin-Erweiterung durch txt ersetzt.
Empfohlen:
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow
Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
Bewegungsaktivierte Cosplay Wings mit Circuit Playground Express - Teil 1: 7 Schritte (mit Bildern)
Bewegungsaktivierte Cosplay-Flügel mit Circuit Playground Express - Teil 1: Dies ist Teil 1 eines zweiteiligen Projekts, in dem ich Ihnen meinen Prozess zur Herstellung eines Paars automatisierter Feenflügel zeige. Der erste Teil des Projekts ist der Mechanik der Flügel, und der zweite Teil macht es tragbar und fügt die Flügel hinzu
Raspberry Pi mit Node.js mit der Cloud verbinden – wikiHow
So verbinden Sie Raspberry Pi mit Node.js mit der Cloud: Dieses Tutorial ist nützlich für alle, die einen Raspberry Pi mit Node.js mit der Cloud, insbesondere mit der AskSensors IoT-Plattform, verbinden möchten. Sie haben keinen Raspberry Pi? Wenn Sie derzeit keinen Raspberry Pi besitzen, empfehle ich Ihnen, sich einen Raspberry Pi zuzulegen
DIY Circuit Activity Board mit Büroklammern - HERSTELLER - STEM: 3 Schritte (mit Bildern)
DIY Circuit Activity Board mit Büroklammern | HERSTELLER | STEM: Mit diesem Projekt können Sie den Weg des elektrischen Stroms ändern, um durch verschiedene Sensoren zu laufen. Mit diesem Design können Sie zwischen dem Aufleuchten einer blauen LED oder dem Aktivieren eines Summers wechseln. Sie haben auch die Wahl, einen lichtabhängigen Widerstand mit
Beginnen Sie mit Light Painting (kein Photoshop): 5 Schritte (mit Bildern)
Beginnend mit Light Painting (kein Photoshop): Ich habe vor kurzem eine neue Kamera gekauft und einige ihrer Funktionen untersucht, als ich im Internet auf Light Painting oder Langzeitbelichtung gestoßen bin. Die meisten von uns werden die Grundform des Lightpaintings mit einem Foto in einer Stadt mit einer Straße gesehen haben