Лего машины с управлением по MQTT

В новогодние праздники у меня было свободное время и мне хотелось сделать 2 вещи:
1. Пройти обучение по Fusion 360 и научиться делать более сложные модели для 3д принтера;
2. Написать на JS интерфейс и API для управления игровой площадкой с Wi-Fi машинками;

Идея была в том, что пользователь подходит к столу, на котором несколько Wi-Fi машинок, и берет в руки пульт. С помощью веб-интерфейса на планшете он может переключаться между свободными машинами и управлять ими.

Lego машины с управлением по MQTT

Структура игровой системы

В качестве локального сервера взял RaspberryPi, поставил на него MQTT брокер. Все машинки подключаются к Wi-Fi, коннектятся к MQTT брокеру и держат соединение в ожидании команд.

Для управления использовал джойcтики от PlayStation3. Джойстик подключается по Bluetooth к RaspberryPi. На RaspberryPi есть скрипт, который отслеживает нажатия кнопок + положение джойстиков и отправляет эти данные в определенные MQTT каналы. Так происходит для каждого джойстика. Мы постоянно считываем действия всех игроков и постим их в свои каналы.

Есть база данных, которая хранит связи контроллер+машинка, а также какие машинки сейчас онлайн и доступны для игры.

Там жа на RaspberryPi крутиться сайт, на который можно зайти, выбрать свой контроллер и из выпадающего списка выбрать любую свободную машинку для игры. Сайт через API в базе отметит, что машинка привязана к вашему контроллеру. Также через API на машинку отправляетcя команда, какой пульт теперь она должна слушать.

В результате можно быстро переключаться с машинки на машинку!

Lego машины с управлением по MQTT Lego машины с управлением по MQTT

За основу взял набор Lego 60083 и напечатал к нему крепления для моторов.

Разработка шасси для лего 60083

На шилде для nodeMCU собрал первый прототип машинки.

Первый прототип для лего 60083 Первый прототип для лего 60083

Спаял шилд для подключения Wemos D1 Mini и всю электронику убрал в кузов.

Спаял шилд для подключения Wemos D1 Mini Спаял шилд для подключения Wemos D1 Mini

Финальный вариант визуально почти не отличался от оригинальной машинки!

Lego машины с управлением по MQTT
Максим Захаров

Другие статьи

Электроника в уличном искусстве: проект «Молния»
Электроника в уличном искусстве: проект «Молния»
Идея: Превратить трещину в стене в «живую» молнию, которая реагирует на зрителя. Мне нужно было разработать техническое решение, чтобы молния была максимально похожа на настоящую и зрители могли с ней взаимодействовать.
Живое ядро на фестиваль «Outline 2024»
Живое ядро на фестиваль «Outline 2024»
Идея: Сделать огромную сферу из коры, при прикосновении к которой будут раздаваться звуки природы: шум дождя, пение птиц, ветер, гроза и т.д. Благодаря внутренним динамикам и большому объёму будет создаваться эффект реального глубокого звука.
Умная фанера. Выставка «Хаптика. Осязаемый мир»
Умная фанера. Выставка «Хаптика. Осязаемый мир»
Идея: Сделать умную фанеру - интерактивный стенд со звуками природы. Вы прикасаетесь к разным областям фанеры и она проигрывает звуки, которые были вокруг нее когда она ещё жила в лесу.