
Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-23 15:05

Имея старую систему моделей поездов в масштабе ТТ, у меня была идея, как управлять локомотивами индивидуально.
Имея это в виду, я пошел еще дальше и выяснил, что необходимо не только для управления поездами, но и для получения дополнительной информации обо всей компоновке и для управления чем-то еще (лампами, стрелочными переводами …)
Так родилась система модельных поездов, управляемая Wi-Fi.
Шаг 1. Условия эксплуатации

Главный принцип - управлять каждым элементом индивидуально, либо с одного контроллера, либо с нескольких источников управления. По сути, для этого нужен общий физический уровень - наиболее очевидно, WiFi - и общий протокол связи MQTT.
Центральным элементом является брокер MQTT. Каждое подключенное устройство (поезд, датчик, выход…) может обмениваться данными только через брокера и может получать данные только от брокера.
Сердцем устройств является контроллер WiFi на базе ESP8266, а брокер MQTT работает на Raspberry pi.
Сначала покрытие Wi-Fi обеспечивается маршрутизатором Wi-Fi, и все подключается по беспроводной сети.
Есть 4 типа устройств:
- Контроллер поезда: имеет 2 цифровых входа, 1 цифровой выход, 2 выхода ШИМ (для управления 2 отдельными двигателями постоянного тока), - Контроллер датчика: имеет 7 цифровых входов (для входных переключателей, оптосенсоров…), - Выходной контроллер: имеет 8 цифровых выходов (для рельсовых стрелок…), - Пульт дистанционного управления Wi-Fi: имеет 1 вход инкрементального кодировщика, 1 цифровой вход (для дистанционного управления поездами).
Система также может работать с Node-Red (с планшета, ПК или смартфона…).
Шаг 2: Обмен данными и настройка MQTT

На основе протокола MQTT сначала каждое устройство подписывается на данную тему и может публиковать в другой теме. Это основа коммуникации сети управления поездом.
Эти рассказы о коммуникации размещаются через сообщения в формате JSON, чтобы они были короткими и удобочитаемыми.
С другой стороны: в сети есть WiFi-маршрутизатор с собственным SSID (сетевым именем) и паролем. Каждое устройство должно знать эти 2, чтобы получить доступ к сети Wi-Fi. Брокер MQTT также является частью этой сети, поэтому для использования протокола MQTT каждое устройство должно знать IP-адрес брокера. И, наконец, у каждого устройства есть своя тема для подписки и публикации сообщений.
Фактически, данный пульт дистанционного управления использует ту же тему для публикации сообщений, на которые подписан данный поезд.
Шаг 3. Обучите контролера

Чтобы управлять игрушечным поездом, нам нужны три вещи: блок питания, контроллер с поддержкой Wi-Fi и электроника водителя.
Источник питания зависит от фактического плана использования: в случае LEGO это аккумуляторный блок Power Functions, в случае «олдскульного» набора шкал TT или H0 - это источник питания 12 В.
Контроллер с поддержкой Wi-Fi - это контроллер Wemos D1 mini (на базе ESP8266).
Электроника драйвера двигателя представляет собой модуль на базе TB6612.
Контроллер поезда имеет 2 индивидуально управляемых выхода ШИМ. Обычно один используется для управления двигателем, а другой - для световой сигнализации. Имеет 2 входа для считывания на герконовых контактах и один цифровой выход.
Контроллер принимает сообщения JSON по протоколам WiFi и MQTT.
SPD1 управляет двигателем, например: сообщение {"SPD1": -204} используется для перемещения двигателя назад с мощностью 80% (максимальное значение скорости -255).
SPD2 управляет интенсивностью "чувствительного к направлению" светодиода: сообщение {"SPD2": -255} заставляет (задний) светодиод светить на полную мощность.
OUT1 управляет состоянием цифрового выхода: {"OUT1": 1} включает выход.
Если состояние входа изменяется, контроллер отправляет в соответствии с ним сообщение: {"IN1": 1}
Если контроллер получает допустимое сообщение, он выполняет его и передает брокеру обратную связь. Обратная связь - это фактически выполненная команда. Например: если брокер отправляет {"SPD1": 280}, тогда двигатель работает на полную мощность, но сообщение обратной связи будет: {"SPD1": 255}
Шаг 4: управление поездом LEGO

В случае с поездом LEGO схемы немного другие.
Электропитание идет напрямую от батарейного отсека.
Необходим мини-понижающий преобразователь для обеспечения 3,5 В для платы Lolin на базе ESP8266.
Соединения выполняются с помощью удлинительного провода 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-роутер
У меня был подержанный WiFI-роутер TP-Link, поэтому я использовал его как точку доступа.
Брокер MQTT - это Raspberry Pi с установленным Mosquitto.
Я использую стандартную ОС Raspbian с установленным MQTT:
sudo apt-get install mosquitto mosquitto-clients python-mosquitto
Маршрутизатор TP-Link должен быть настроен на резервирование адресов для Raspberry, поэтому после каждого перезапуска Pi будет иметь один и тот же IP-адрес, и каждое устройство может подключиться к нему.
Вот и все!
Шаг 9: Готовые контроллеры


Вот готовые контроллеры.
Локо шкалы TT имеет такой маленький размер, что доску Lolin пришлось сузить (разрезать), чтобы она могла поместиться в поезд.
Скомпилированные двоичные файлы можно скачать. В целях безопасности расширение bin заменено на txt.
Рекомендуемые:
Автоматизированная ЭКГ: усиление и моделирование фильтров с использованием LTspice: 5 шагов

Автоматизированная ЭКГ: усиление и моделирование фильтров с использованием LTspice: это изображение последнего устройства, которое вы будете создавать, и очень подробное обсуждение каждой части. Также описаны расчеты для каждого этапа. На изображении показана блок-схема для этого устройства Методы и материалы: Цель данной пр
Моделирование операционных усилителей с разомкнутым контуром с использованием приложения EveryCiruit: 5 шагов

Моделирование операционных усилителей с разомкнутым контуром с использованием приложения EveryCiruit: EveryCircuit - одна из «лучших» платформ для моделирования электроники. У него есть веб-сайт и приложение. Это руководство для версии Android. Но точно так же и для веб-версии. Об этом руководстве: Операционный усилитель или операционный усилитель - это
(Светодиод с переключателем) Моделирование Arduino с использованием схемы Tinkercad: 5 шагов

(Светодиод с переключателем) Моделирование Arduino с использованием схемы Tinkercad: мы являемся группой студентов UQD0801 (Robocon 1) из Университета Тун Хусейн в Малайзии (UTHM), которые продемонстрируют, как моделировать светодиод с переключателем с использованием Arduino и нескольких компонентов как части наше задание. Поэтому мы представим b
Прототип проекта светофора на базе Atmega16 с использованием 7-сегментного дисплея (моделирование Proteus): 5 шагов

Прототип проекта светофора на основе Atmega16 с использованием 7-сегментного дисплея (моделирование Proteus): В этом проекте мы собираемся создать проект светофора на основе Atmega16. Здесь мы взяли один 7 сегментный и 3 светодиода для обозначения сигналов светофора
RF 433MHZ Радиоуправление с использованием HT12D HT12E - Создание радиочастотного пульта дистанционного управления с использованием HT12E и HT12D с частотой 433 МГц: 5 шагов

RF 433MHZ Радиоуправление с использованием HT12D HT12E | Создание радиочастотного пульта дистанционного управления с использованием HT12E и HT12D с частотой 433 МГц: в этой инструкции я покажу вам, как сделать радиоуправляемый пульт дистанционного управления с использованием модуля приемника передатчика 433 МГц с кодированием HT12E & ИС декодера HT12D. В этом руководстве вы можете отправлять и получать данные, используя очень-очень дешевые КОМПОНЕНТЫ, КАК: HT