Оглавление:

Моделирование управления WiFi поездом с использованием MQTT: 9 шагов
Моделирование управления WiFi поездом с использованием MQTT: 9 шагов

Видео: Моделирование управления WiFi поездом с использованием MQTT: 9 шагов

Видео: Моделирование управления WiFi поездом с использованием MQTT: 9 шагов
Видео: Arduino - дистанционное управление яркостью света и сервоприводом на nRF24L01 2024, Ноябрь
Anonim
Модель управления WiFi поездом с использованием MQTT
Модель управления WiFi поездом с использованием MQTT

Имея старую систему моделей поездов в масштабе ТТ, у меня была идея, как управлять локомотивами индивидуально.

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

Так родилась система модельных поездов, управляемая 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
Обмен данными и настройка 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 Train Control (Управление поездом LEGO)
LEGO Train Control (Управление поездом 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.

Рекомендуемые: