Хронометраж для горных лыж на Ардуино. Индивидуальные секундомеры

Могу припомнить случаи, когда в горах «омега» на радиоканале не заработала. Для таких случаев есть изящное решение — возить с собой индивидуальный секундомер, который срабатывает от короткодействующих сигналов на старте и финише. Конечно речь идет о тренировках, а не о соревнованиях. В общем-то навесить на блок «Старт» и «Финиш» дополнительную «пуговку» с передатчиком от радиопульта не должно быть обременительным. В заметке поделюсь соображениями по этому поводу 🙂

В том, чтобы возить с собой на трассе секундомер ничего революционного нет. Еще в 1980-х видел в каталоге горнолыжные палки со встроенным в рукоятку секундомером и кнопкой сверху. Конечно, кнопка это не дело. Рассуждения о том, как можно дистанционно с небольшого расстояния управлять электронным секундомером велись в фоне много лет. Наиболее яркое решение из тех которые помню, было предложено в 1985 году Николаем Гридиным из Акустического института, основано на пьезопищалке и пьезоприемнике. Но до реализации не дошло.

Сейчас для тренировок есть готовое решение от Freelap.

Даже есть знакомые которые используют его на московских холмах. У них в хозяйстве 10 секундомеров. Стоимость такого решения довольно высока, в частности один секундомер стоил примерно 120 евро. Сейчас производитель заменил его на блютусный передатчик на смартфон, но цена осталась примерно такой же.




Рассматривать такое решение для наших тренировок не стал, поскольку не считаю его достаточно демократичным. Сколько ни имей в хозяйстве таких секундомеров, а кому-то может не хватить. Да и не вредно видеть на индикаторе результаты коллег для лучшего понимания происходящего 🙂

Но в качестве дополнительного страховочного варианта иметь не вредно. Тем более, что не должно быть сложно. На Али-Экспресс есть предельно дешевые решения (набор из передатчика и приемника за 40 рублей). Это 433 МГц. Есть и такие, которые не требуют Ардуино. Передатчик выдает несколько команд (обычно две или четыре) по нажатию кнопок, приемник их понимает и распределяет по ножкам. Далее можно раскурочить секундомер и подсоединиться к кнопкам.

В нашем случае Ардуино уже есть, поэтому готовый пульт не нужен. Ардуино на модуле «Старт» может выдать при открытии калитки сигнал, кодированный «на свой вкус». Этот сигнал дешифрируется Ардуино, на которой собран индивидуальный секундомер. На финише то же самое, только другие коды. Главное только подобрать дальнодействие, должно быть не более 15 метров (но надежно) для того, чтобы секундомеры разных участников не мешали друг другу. Все секундомеры одинаковые. На старте, когда все стоят рядом, секундомер неизбежно будет запоминать время старта предыдущих участников. Точнее, обновлять время старта в блоке. На финише при получении сигнала из зафиксированного времени автоматически вычитается время ближайшего старта. Поэтому помех от других участников быть не должно. Результат будет «висеть» на индикаторе, пока приемник не поймает следующий сигнал финиша.




Дешевые модули для радиопультов как-то не внушали доверия. Очень помог обзор на ютуб-канале arduinoLab (спасибо!). Вот он:

На основании уведенного и услышанного заказал такую конфигурацию:

Хронометраж для горных лыж на Ардуино
1- дополнительный передатчик на старте (106 руб), 1- дополнительный передатчик на финише (106 руб), 3- приемник (88 руб), 4- зарядное устройство (22 руб), 5- индикатор 0.36″ (38 руб), 6- аккумулятор 600 мАч (106 руб), 7- Ардуино Нано (159 руб)

Если все хорошо получится, планирую собрать таких штук пять 🙂

Нужно чуть остановиться на программировании. Особенность этих радиомодулей — «специфическая» амплитудная модуляция несущей частоты (ASK — amplitude shift keying). Логическая единица соответствует просто включению передатчика, а ноль — выключению. Типа азбуки Морзе, при нуле шум эфира, а при единице включение голой несущей. Судя по тому, что приемник супергетеродин, скорее всего несущая частота вычитается из очень близкой, производимой генератором приемника, в результате наверное появляется низкая частота (например звуковая, как в приемнике телеграфа Морзе). Наверное в протоколах уходит много ресурсов на то, чтобы приемник в шумах эфира уловил знакомые последовательности результата появления несущей частоты. В общем, связь слишком медленная для надежной передачи импульсов «Старт» и «Финиш» менее чем за одну сотую секунды.

В сети «на поверхности» три библиотеки, каждая из которых основана на разных протоколах. Кратко скажу, что VirtualWare (она же RadioHead) не подошла, поскольку не смог добиться достаточно надежной связи. Библиотека RCSwitch не подошла из-за очень медленной (хотя и очень надежной) передачи данных. Подошла библиотека iArduino_RF433 (автору — большое спасибо!). Удалось добиться надежной передачи данных на скорости 1000 бит в секунду (не быстрее).

Хронометраж для горных лыж на Ардуино
1- индикатор, 2- короткодействующий приемник, 3- светодиод «Низкий заряд аккумулятора» + «Прием данных с Финиша», 4- светодиод «Прием данных со Старта», 5- Ардуино Нано, 6- выключатель питания, 7- зарядное устройство, 8- аккумулятор на 600 мАч

При передаче по факту Старта или Финиша уходят 10 пакетов, состоящих из идентификатора (Старт или Финиш), порядкового номера пакета и задержки  между фактом пересечения старта-финиша и началом отправки. Пакеты уходят подряд, без программных задержек, но между пакетами все равно получается примерно 5 сотых секунды. То есть 10 пакетов уходят полсекунды. Из 10 пакетов доходят 4-9. Доходят, это значит проходят через «контрольную сумму», что при таком вытаскивании сигнала из шумов эфира само по себе уже чудо. Программа в приемнике анализирует дошедшие пакеты и по номеру и времени приема пакета «реконструирует» время отправки команды в передатчике. Точность получается хорошей, совпадение результата «сотая в сотую».

Хронометраж для горных лыж на АрдуиноХронометраж для горных лыж на Ардуино

Коробочка сварена из 2-мм полипропилена (поднос из FixPrice, цена 50 руб).

Здесь собраны все заметки по теме «Хронометраж для горных лыж на Ардуино».

 





Vadim Nikitin DigInfo.ruВадим Никитин

 

 

 

на начало страницы



Share This:

Добавить комментарий

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