OpenStint: открытая система хронометража для RC-автомобилей на базе RTL-SDR и HackRF

Коммерческие системы хронометража для радиоуправляемых (RC) автомобилей, такие как декодеры MYLAPS RC3/RC4, используют запатентованные протоколы и закрытое оборудование. Это ограничивает возможности модификации и существенно повышает стоимость организации любительских соревнований.
Проект OpenStint решает эту проблему: это полностью открытая система декодирования near-field транспондеров стандартов AMB RC3 / RC4 с использованием доступных программно — определяемых радиоприёмников (SDR) — RTL-SDR v4 или HackRF One. Система предназначена для регистрации момента проезда модели через старт/финишную линию по сигналу транспондера, установленного на борту RC-автомобиля.

Принцип работы

В отличие от приёма радиосигналов дистанционного управления, хронометраж в RC-автоспорте основан на технологии near-field (ближнего поля). На трассе размещается петля-антенна, подключённая к SDR-приёмнику. На борту автомобиля установлен миниатюрный транспондер, который при проезде над петлёй излучает ответный сигнал. Приёмник фиксирует момент срабатывания и формирует временную метку.
Рабочая частота системы — около 5 МГц. Транспондер излучает BPSK-сигнал собственного открытого протокола OpenStint либо совместимый с коммерческими AMB RC3/RC4.

Аппаратная часть

ПараметрRTL-SDR v4HackRF One
Частота дискретизациидо 2,56 MSPSдо 20 MSPS
Полоса пропускания~2,4 МГцдо 20 МГц
Разрядность АЦП8 бит8 бит
ИнтерфейсUSB 2.0USB 2.0

Оба приёмника обеспечивают достаточную полосу для уверенного приёма BPSK-сигнала транспондера вблизи 5 МГц.

Программная часть

Декодер написан на Python с использованием библиотек librtlsdr и libhackrf. Обработка включает следующие этапы:
Получение IQ-отсчётов с SDR-приёмника через USB.
Полосовая фильтрация сигнала вокруг несущей частоты транспондера.
Демодуляция BPSK — выделение фазы несущей.
Корреляция с известной преамбулой — детектирование пакета.
Декодирование ID транспондера и временной метки проезда.
Публикация событий по UDP/ZeroMQ для последующей обработки.


Момент пересечения линии определяется по пику корреляции с преамбулой. Разрешение по времени ограничено частотой дискретизации: для RTL-SDR это порядка 0,4 мкс (при Fs = 2,4 МГц).

Пример расчёта мощности сигнала

import numpy as np

def compute_power_dbm(i_samples, q_samples, gain_correction=0.0):
    """
    Вычисление мощности комплексного сигнала в дБм.
    I, Q — отсчёты синфазной и квадратурной составляющих.
    """
    power_linear = np.mean(i_samples**2 + q_samples**2)
    power_db = 10 * np.log10(power_linear + 1e-12)
    return power_db + gain_correction

Практическое применение

OpenStint востребован в следующих сценариях:
Любительские соревнования по RC-автоспорту без необходимости покупки дорогих декодеров MYLAPS.
Тренировочные сессии — водитель получает данные о времени круга и скорости на прямых.
Образовательные лаборатории по цифровой обработке сигналов — проект наглядно демонстрирует демодуляцию BPSK и корреляционный приём.

Дополнительно существует Python-скрипт для пост-обработки: расчёт кругов, средней скорости, экспорт результатов в CSV/JSON. Поддерживается синхронизация нескольких приёмников по PPS-сигналу GPS для организации многоканального хронометража на больших трассах.

Перспективы

Открытый протокол OpenStint позволяет энтузиастам разрабатывать собственные транспондеры (есть референсный дизайн на ATTiny816). Благодаря низкой стоимости компонентов (HackRF — около $90, RTL-SDR v4 — около $30) система доступна для любого RC-клуба или образовательного учреждения.

Проект

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *