Модел влак WiFi контрол с помощта на MQTT: 9 стъпки
Модел влак WiFi контрол с помощта на MQTT: 9 стъпки
Anonim
Модел на влак WiFi контрол с помощта на MQTT
Модел на влак WiFi контрол с помощта на MQTT

Имайки стара система за модели на влакове с мащаб TT, имах идея как да контролирам локовете поотделно.

Имайки това предвид, аз отидох още по -далеч и разбрах какво е необходимо не само за управление на влаковете, но и за да имам допълнителна информация за цялото оформление и да контролирам нещо друго (лампи, железопътни стрелки …)

Така се ражда моделната влакова система с контролиран WiFi.

Стъпка 1: Принципи на работа

Принципи на операцията
Принципи на операцията

Основният принцип е да се управлява всеки елемент поотделно, или от един контролер, или от множество източници на управление. Това по своята същност се нуждае от общ физически слой - най -очевидно WiFi - и общ комуникационен протокол, MQTT.

Централният елемент е брокерът MQTT. Всяко свързано устройство (влак, сензор, изход …) има право да комуникира само чрез Брокера и може да получава данни само от Брокера.

Сърцето на устройствата е базиран на ESP8266 WiFi контролер, докато брокерът MQTT работи на Raspberry pi.

Първоначално Wi -Fi покритието се осигурява от WiFi рутер и всичко се свързва чрез безжична връзка.

Има 4 вида устройства:

- Контролер на влака: има 2 цифрови входа, 1 цифров изход, 2 PWM изхода (за управление на 2 отделни DC двигателя), - Сензорен контролер: има 7 цифрови входа (за входни превключватели, оптосензори …), - Изходен контролер: има 8 цифрови изхода (за железопътни превключватели …), - WiFi дистанционно: има 1 инкрементен енкодер вход, 1 цифров вход (за дистанционно управление на влаковете).

Системата може да работи и от Node-Red (от таблет, компютър или смартфон …).

Стъпка 2: Обмен и конфигуриране на MQTT данни

Обмен и конфигуриране на MQTT данни
Обмен и конфигуриране на MQTT данни

Въз основа на протокола MQTT, първо всяко устройство се абонира за дадена тема и може да публикува в друга тема. Това е основата на комуникацията на мрежата за контрол на влаковете.

Тези комуникационни приказки се поставят чрез JSON форматирани съобщения, за да бъдат кратки и читави за хората.

Гледайки от по -далечна гледна точка: Мрежата има WiFi рутер със собствен SSID (име на мрежата) и парола. Всяко устройство трябва да знае тези 2 за достъп до WiFi мрежата. Брокерът MQTT също е част от тази мрежа, така че за да се използва протокол MQTT, всяко устройство трябва да знае IP адреса на брокера. И накрая, всяко устройство има своя собствена тема за абониране и публикуване на съобщения.

На практика дадено дистанционно управление използва същата тема за публикуване на съобщения, за които е даден абонамент.

Стъпка 3: Контролер на влака

Контролер на влака
Контролер на влака

За да управляваме влакче за играчки, основно се нуждаем от 3 неща: захранване, контролер с WiFi и електроника на водача на двигателя.

Захранването зависи от действителния план за използване: в случай на LEGO, това е кутията за батерии Power Functions, в случай на "oldschool" TT или H0 мащаб влак, това е 12V захранване на пистата.

Контролерът с WiFi е контролер Wemos D1 mini (базиран на ESP8266).

Електрониката на драйвера на двигателя е модул, базиран на TB6612.

Влаковият контролер има 2 индивидуално контролирани ШИМ изхода. Акутално единият се използва за управление на двигателя, а другият се използва за светлинна сигнализация. Разполага с 2 входа за сензори на базата на тръстиков контакт и един цифров изход.

Контролерът приема JSON съобщения чрез WiFi и MQTT протокол.

SPD1 управлява двигателя, например: Съобщението {"SPD1": -204} се използва за преместване на двигателя назад при 80% мощност (максималната стойност на скоростта е -255).

SPD2 контролира интензивността на LED светлината, чувствителна към посоката: {"SPD2": -255} съобщението кара (назад) LED да свети с пълната си мощност.

OUT1 контролира състоянието на цифровия изход: {"OUT1": 1} включва изхода.

Ако състоянието на даден вход се промени, контролерът изпраща съобщение според него: {"IN1": 1}

Ако контролерът получи валидно съобщение, той го изпълнява и предоставя обратна връзка на брокера. Обратната връзка е действително изпълнената команда. Например: ако брокерът изпрати {"SPD1": 280}, тогава двигателят работи с пълна мощност, но съобщението за обратна връзка ще бъде: {"SPD1": 255}

Стъпка 4: LEGO Train Control

Контрол на влаковете LEGO
Контрол на влаковете LEGO

В случай на влак LEGO, схемите са малко по -различни.

Захранването идва директно от кутията за батерии.

Има нужда от мини понижаващ преобразувател, който да осигурява 3.5V за ESP8266 базирана платка Lolin.

Връзките се осъществяват с удължителен проводник LEGO 8886, разрязан наполовина.

Стъпка 5: Дистанционно управление

Дистанционно
Дистанционно

Контролерът публикува само съобщения до влака (дефиниран от превключвателя BCD).

Чрез завъртане на енкодера дистанционното изпраща или {"SPD1": "+"}, или {"SPD1": "-"} съобщения.

Когато влакът получи това съобщение „нарастващ тип“, той променя своята изходна стойност на ШИМ с 51 или -51.

По този начин дистанционното може да променя скоростта на влака в 5 стъпки (всяка посока).

Натискането на инкременталния енкодер ще изпрати {"SPD1": 0}.

Стъпка 6: Контролер на сензора

Сензорен контролер
Сензорен контролер

Така нареченият сензорен контролер измерва състоянията на своите входове и ако някой от тях се промени, публикува тази стойност.

Например: {"IN1": 0, "IN6": 1} в този пример 2 входа са променили състоянието едновременно.

Стъпка 7: Изходен контролер

Изходен контролер
Изходен контролер

Изходният контролер има 8 цифрови изхода, които са свързани към ULN2803 базиран модул.

Той получава съобщения чрез абонираната си тема.

Например съобщението {"OUT4": 1, "OUT7": 1} включва 4. и 7. цифровия изход.

Стъпка 8: Raspberry Pi и WiFi рутер

Имах използван Wi-Fi рутер TP-Link, затова го използвах като точка за достъп.

Брокерът MQTT е Raspberry Pi с инсталиран Mosquitto.

Използвам стандартната Raspbian OS с MQTT с:

sudo apt-get инсталирайте mosquitto mosquitto-клиенти python-mosquitto

Рутерът TP-Link трябва да бъде конфигуриран да има резервация на адрес за Raspberry, така че след всяко рестартиране Pi има същия IP адрес и всяко устройство може да се свърже с него.

И това е!

Стъпка 9: Готови контролери

Готови контролери
Готови контролери
Готови контролери
Готови контролери

Ето готовите контролери.

TK скалата loko има толкова малък размер, че една дъска Lolin трябваше да бъде стеснена (изрязана), за да бъде достатъчно малка, за да се побере във влака.

Компилираните двоични файлове могат да бъдат изтеглени. От съображения за сигурност разширението на кошчето беше заменено на txt.

Препоръчано: