← На главную

Zeus WPI открыл код UWB-прототипа с точностью 2 см для эстафеты

01.08.2026 12:30 · hackernews

12Urenloop — ежегодная эстафета на площади Синт-Питерс в Генте. Команды студенческих объединений бегут 12 часов, передавая одну эстафетную палочку, поэтому на дорожке одновременно только один человек. Подсчётом кругов занимается Zeus WPI: сначала вручную, потом с 2011 года — через bluetooth-модули в палочках, а в 2019–2022 весь стек обновили.

Теперь в Zeus WPI экспериментируют с UltraWideBand (UWB). Это радиотехнология для сантиметровой точности позиционирования. UWB использует широкую полосу спектра (500 МГц), хорошо отсекает отражения сигнала и точно определяет начало пакета. Сравнивая время отправки и получения, можно вычислить расстояние: умножаешь время полёта на скорость света. От нескольких неподвижных модулей так же считают и позицию движущегося передатчика — как GPS, только локально. Эту технологию используют iPhone и AirTags, а также новые автомобильные ключи, защищённые от relay-атак.

Для 12Urenloop UWB даёт серьёзные преимущества: точное измерение позиции (текущая bluetooth-система лишь оценивает прогресс по скорости), отсчёт круга в момент пересечения стартовой линии — причём у каждой команды своя линия, чего не умеют обычные RFID-системы. Плюс больше статистики по бегунам, например скорость в поворотах, и чистый сигнал без шума от bluetooth-устройств сотен зрителей.

Готовые RTLS-решения стоят дорого: стартовый набор Pozyx — около 5000 евро. Зато модули UWB подешевели до 19–25 евро за официальные Qorvo (они работают с чипом Apple U1) и до 12 евро за клоны с микроконтроллером. Но открытого софта для позиционирования нескольких тегов почти нет. Поэтому заказали пять модулей DWM3000: три анкера на фиксированных позициях и два тега. Управление — через ESP32-WROOM за 4 евро, код на Arduino framework.

Сначала настраивали дальность и точность. После тюнинга регистров удалось замерить расстояние до 50 метров. В пределах 5 метров точность — около 2 сантиметров, на больших дистанциях — примерно 10 сантиметров. Затем собрали тестовую систему: анкеры передают дистанции на тег по wifi через MQTT, позиция рисуется в реальном времени дашбордом на Bevy. Чтобы несколько тегов не мешали друг другу на одном радиоканале, анкерам нужна синхронизация: каждый получает свой временной слот. В демо с 3 анкерами и 2 тегами на скорости 60 Гц получилось 10 замеров позиции в секунду — теоретически так можно обновлять позицию 20 тегов раз в секунду.

Для всей трассы понадобится 7–10 анкеров, но тогда с тегом одновременно будут видны максимум три. Чтобы частота замеров не падала, временные слоты можно переиспользовать между анкерами, которые физически не могут одновременно быть в зоне одного тега. Прототип проверили на одном углу трассы за день до забега — после калибровки качество позволяет точно отслеживать движение. Чтобы систему можно было использовать по-настоящему, нужно встроить теги в эстафетные палочки вместо bluetooth и провести замеры питания и надёжности. Весь код лежит на Github.

Читать оригинал →