LEGO хаб Powered Up: двусторонний обмен данными
Электронные наборы LEGO давно переросли роль простых конструкторов. Современная линейка Powered Up представляет собой модульную робототехническую экосистему: интеллектуальные хабы, моторы, датчики и светодиоды, управляемые через Bluetooth и программируемые — ранее подобное было доступно лишь в Mindstorms и Education.
Но как взять «сырые» данные с этих умных блоков и использовать их в сторонних приложениях?
Стандартное приложение LEGO Powered Up предлагает визуальный редактор на основе блоков и виртуальные пульты. Оно позволяет объединять до четырёх хабов, выстраивать логику их работы и собирать сложные алгоритмы — от автономных роботов до беспилотных грузовиков и автоматизированных мини-железных дорог.
Однако у официального ПО есть два серьёзных ограничения:
1. Закрытый код: нет прямого доступа к телеметрии в реальном времени — нельзя выводить данные на ПК, строить графики или сохранять сигналы.
2. Постоянная привязка к смартфону или планшету: hub должен быть включён в приложение, что серьёзно ограничивает автономность.
К счастью, экосистема Powered Up построена на открытом BLE-протоколе, а LEGO опубликовала спецификацию LWP3 (LEGO Wireless Protocol v3) (lego.github.io/lego-ble-wireless-protocol-docs/), что позволяет сторонним разработчикам создавать свои решения.
Одним из ярких проектов стала прошивка и платформа PyBricks (pybricks.com), открывающие весь потенциал Powered Up. Вместо родной ОС хаб работает как автономный микроконтроллер с интерпретатором MicroPython и веб-IDE прямо в браузере.

Мы решили продемонстрировать, как организовать передачу данных с LEGO-хаба на ПК и использовать их для анализа.
Наш эксперимент:
- Перепрошили Technic Hub альтернативной прошивкой PyBricks.
- Собрали простую U-образную конструкцию с обратной связью.
- Написали скрипт на MicroPython, который регулярно выдаёт угол наклона.
- С помощью Python-библиотеки Bleak подключились к хабу по BLE.
- Считали и визуализировали данные в реальном времени.
В качестве датчика мы использовали наклон на ось из набора WeDo 2.0, закрепив его на «качели», приводимые в движение мотором. Датчик измеряет тангаж в диапазоне от –45° до +45°.

Далее — код, загружаемый в перепрошитый хаб. Он непрерывно считывает угол, вычисляет ошибку и управляет мотором по пропорциональному закону.
from pybricks.hubs import TechnicHub
from pybricks.pupdevices import Motor, TiltSensor
from pybricks.parameters import Port
from pybricks.tools import wait
hub = TechnicHub()
motor = Motor(Port.A)
tilt = TiltSensor(Port.B)
target = 0
Kp = 3
motor.run(30)
wait(1000)
while True:
angle = tilt.tilt()[0] - 2
error = angle - target
speed = max(min(Kp * error, 75), -75)
motor.run(speed)
print(angle)
if abs(angle) == target:
stable = sum((tilt.tilt()[0] - 2) for _ in range(10))
if stable == target * 10:
print("УСТОЙЧИВО, циклов:", _)
break
wait(50)
Команда motor.run(speed) задаёт скорость вращения в градусах в секунду. Небольшие скорости ощущаются рывками, но для демонстрации это не критично.

После отладки мы провели серию испытаний с разными значениями Kp, а в коде оставили только один print() для передачи угла на ПК.
Для приёма и визуализации телеметрии на компьютере использовали библиотеку Bleak. Алгоритм простой:
- Сканируем BLE-устройства (await BleakScanner.discover()).
- Находим хаб по имени.
- Нажатием кнопки стартуем код PyBricks на устройстве.
- Подписываемся на виртуальный UART-канал через BLE-уведомления.
- Декодируем строки, фильтруем числа и отправляем в очередь для графика.
Подробнее о PC-части
Подключившись, запускаем client.start_notify(CHAR_UUID, callback), где callback декодирует и очищает входящую строку, оставляя только число. Величина вместе с меткой времени помещается в очередь (queue.put((t, value))), а графический процесс через matplotlib в интерактивном режиме выводит живой график.

Можно выводить несколько значений через запятую, а на PC-стороне просто разбивать строку и преобразовывать компоненты в float.

Самая эффективная и быстрая стабилизация достигалась при Kₚ = 2. Более высокие коэффициенты приводили к выраженному перерегулированию и увеличению времени сходимости.
Таким образом, мы провели мини-лабораторную работу по автоматическому управлению, получив данные для анализа — от построения фазового портрета до бифуркационных диаграмм.
LEGO с прошивкой PyBricks и библиотекой Bleak превращается в полноценный исследовательский инструмент. При этом не нужны дорогие комплекты Education — достаточно доступных Technic или City Hub. Мы опробовали и Technic Hub Control+, и более простой City Hub (88009) — оба отлично работают.
Надеемся, эти материалы подскажут новые идеи для экспериментов с привычным конструктором.
Новый трейлер Gears of War E Day призван вернуть атмосферу первой части серии
Разработчики оригинальной Mass Effect трудились без выходных более 20 дней подряд
Sony раскрыла новые детали God of War: Laufey на концерте композитора
Создатели The Blood of Dawnwalker выпустили хвалебный трейлер в честь успеха игры
Студия NetherRealm может готовить Injustice 3 по мнению инсайдеров и фанатов
Презентация новинок для настольных игр The Big Autumn Warhammer Preview 2026 пройдет 18 сентября
Diablo IV перестанет получать крупные дополнения
Netflix экранизирует криминальный боевик Stranger Than Heaven от авторов Like a Dragon