Spisu treści:

Sterowanie WiFi w modelu pociągu za pomocą MQTT: 9 kroków
Sterowanie WiFi w modelu pociągu za pomocą MQTT: 9 kroków

Wideo: Sterowanie WiFi w modelu pociągu za pomocą MQTT: 9 kroków

Wideo: Sterowanie WiFi w modelu pociągu za pomocą MQTT: 9 kroków
Wideo: Bezpieczeństwo platform mobilnych przy użyciu PLC Beckhoff i skanera SICK z EtherCAT 2024, Listopad
Anonim
Sterowanie WiFi w modelu pociągu za pomocą MQTT
Sterowanie WiFi w modelu pociągu za pomocą MQTT

Mając stary system modeli pociągów w skali TT, wpadłem na pomysł, jak indywidualnie sterować lokomotywami.

Mając to na uwadze, poszedłem o krok dalej i wymyśliłem, co jest potrzebne, aby nie tylko sterować pociągami, ale mieć dodatkowe informacje o całym układzie i sterować czymś innym (lampy, zwrotnice…)

W ten sposób rodzi się sterowany przez Wi-Fi system modelowania pociągów.

Krok 1: Zasady działania

Zasady działania
Zasady działania

Główną zasadą jest sterowanie każdym elementem indywidualnie, albo z jednego sterownika, albo z wielu źródeł sterowania. To z natury wymaga wspólnej warstwy fizycznej – przede wszystkim Wi-Fi – i wspólnego protokołu komunikacyjnego, MQTT.

Centralnym elementem jest Broker MQTT. Każde podłączone urządzenie (pociąg, czujnik, wyjście…) może komunikować się wyłącznie za pośrednictwem Brokera i może odbierać dane tylko od Brokera.

Sercem urządzeń jest kontroler WiFi oparty na ESP8266, natomiast broker MQTT działa na Raspberry pi.

Na początku zasięg Wi-Fi zapewnia router Wi-Fi, a wszystko jest połączone bezprzewodowo.

Istnieją 4 rodzaje urządzeń:

- Sterownik pociągu: posiada 2 wejścia cyfrowe, 1 wyjście cyfrowe, 2 wyjścia PWM (do sterowania 2 pojedynczymi silnikami prądu stałego), - Kontroler czujnika: posiada 7 wejść cyfrowych (dla przełączników wejściowych, czujników optycznych…), - Kontroler wyjść: posiada 8 wyjść cyfrowych (dla zwrotnic szynowych…), - Pilot WiFi: posiada 1 wejście enkodera przyrostowego, 1 wejście cyfrowe (do zdalnego sterowania pociągami).

System może również działać z poziomu Node-Red (z tabletu, komputera lub smartfona…).

Krok 2: Wymiana i konfiguracja danych MQTT

Wymiana i konfiguracja danych MQTT
Wymiana i konfiguracja danych MQTT

W oparciu o protokół MQTT, każde urządzenie najpierw subskrybuje dany temat i może publikować w innym temacie. Jest to podstawa komunikacji sieci sterowania pociągiem.

Te opowieści komunikacyjne umieszczane są za pomocą wiadomości sformatowanych w formacie JSON, aby były krótkie i czytelne dla człowieka.

Patrząc z dalszej perspektywy: Sieć posiada router WiFi z własnym identyfikatorem SSID (nazwą sieci) i hasłem. Każde urządzenie musi znać te 2, aby uzyskać dostęp do sieci WiFi. Broker MQTT jest również częścią tej sieci, więc aby korzystać z protokołu MQTT, każde urządzenie musi znać adres IP brokera. I wreszcie każde urządzenie ma swój własny temat do subskrybowania i publikowania wiadomości.

Praktycznie dany pilot wykorzystuje ten sam temat do publikowania komunikatów, na które dany pociąg jest subskrybowany.

Krok 3: Kontroler pociągu

Kontroler pociągu
Kontroler pociągu

Aby sterować pociągiem zabawek, potrzebujemy w zasadzie 3 rzeczy: zasilacza, kontrolera obsługującego WiFi i elektroniki sterownika silnika.

Zasilanie zależy od faktycznego planu użytkowania: w przypadku LEGO jest to skrzynka na baterie Power Functions, w przypadku "oldschoolowego" zestawu pociągów w skali TT lub H0 jest to zasilanie 12V toru.

Kontroler obsługujący Wi-Fi to kontroler Wemos D1 mini (oparty na ESP8266).

Elektronika sterownika silnika to moduł oparty na TB6612.

Sterownik pociągu posiada 2 indywidualnie sterowane wyjścia PWM. Właściwie jeden służy do sterowania silnikiem, a drugi do sygnalizacji świetlnej. Posiada 2 wejścia do wykrywania kontaktronowego i jedno wyjście cyfrowe.

Kontroler akceptuje wiadomości JSON przez WiFi i protokół MQTT.

SPD1 steruje silnikiem, na przykład: komunikat {"SPD1": -204} służy do cofania silnika z mocą 80% (maksymalna wartość prędkości to -255).

SPD2 kontroluje intensywność światła LED "kierunkowo czułego": komunikat {"SPD2": -255} powoduje, że (wsteczna) dioda LED świeci pełną mocą.

OUT1 steruje stanem wyjścia cyfrowego: {"OUT1": 1} włącza wyjście.

W przypadku zmiany stanu wejścia sterownik wysyła komunikat zgodnie z nim: {"IN1": 1}

Jeśli kontroler odbierze prawidłowy komunikat, wykonuje go i przekazuje informację zwrotną do brokera. Informacja zwrotna jest faktycznie wykonanym poleceniem. Na przykład: jeśli broker wyśle {"SPD1": 280} to silnik pracuje z pełną mocą, ale komunikat zwrotny będzie brzmiał: {"SPD1": 255}

Krok 4: Sterowanie pociągiem LEGO

LEGO Train Control
LEGO Train Control

W przypadku pociągu LEGO schematy są nieco inne.

Zasilanie pochodzi bezpośrednio z pojemnika na baterie.

Potrzebny jest mini konwerter obniżający napięcie, aby zapewnić napięcie 3,5 V dla płyty Lolin opartej na ESP8266.

Połączenia wykonane są za pomocą przedłużacza LEGO 8886, przeciętego na pół.

Krok 5: Pilot zdalnego sterowania

Pilot
Pilot

Kontroler publikuje tylko komunikaty do pociągu (zdefiniowane przez przełącznik BCD).

Obracając enkoderem, pilot wysyła wiadomości {"SPD1": "+"} lub {"SPD1": "-"}.

Gdy pociąg odbiera ten komunikat „incremental type”, zmienia swoją wartość wyjściową PWM o 51 lub -51.

W ten sposób pilot może zmieniać prędkość pociągu w 5 krokach (w każdym kierunku).

Naciśnięcie enkodera inkrementalnego spowoduje wysłanie {"SPD1": 0}.

Krok 6: Kontroler czujnika

Kontroler czujnika
Kontroler czujnika

Tak zwany kontroler czujnika mierzy stany swoich wejść i jeśli któryś z nich się zmienia, publikuje tę wartość.

Na przykład: {"IN1": 0, "IN6": 1} w tym przykładzie 2 wejścia zmieniły stan w tym samym czasie.

Krok 7: Kontroler wyjścia

Kontroler wyjścia
Kontroler wyjścia

Kontroler wyjść posiada 8 wyjść cyfrowych, które są podłączone do modułu opartego na ULN2803.

Otrzymuje wiadomości za pośrednictwem subskrybowanego tematu.

Np. komunikat {"OUT4": 1, "OUT7": 1} załącza 4. i 7. wyjście cyfrowe.

Krok 8: Raspberry Pi i router WiFi

Miałem używany router WiFI TP-Link, więc użyłem go jako punktu dostępowego.

Broker MQTT to Raspberry Pi z zainstalowanym Mosquitto.

Używam standardowego Raspbian OS z MQTT z zainstalowanym:

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

Router TP-Link musi być skonfigurowany tak, aby miał rezerwację adresu dla Raspberry, więc po każdym restarcie Pi ma ten sam adres IP i każde urządzenie może się z nim połączyć.

I to wszystko!

Krok 9: Gotowe kontrolery

Gotowe kontrolery
Gotowe kontrolery
Gotowe kontrolery
Gotowe kontrolery

Oto gotowe kontrolery.

Loko w skali TT ma tak małe rozmiary, że deska Lolin musiała zostać zwężona (przycięta), aby była na tyle mała, aby zmieściła się w pociągu.

Skompilowane pliki binarne można pobrać. Ze względów bezpieczeństwa rozszerzenie bin zostało zastąpione do txt.

Zalecana: