Поиск

"Секундомер" для спортивных соревнований на STM32F103


В качестве первого приближения к железяке, позволяющей точно (не хуже нескольких микросекунд) определять интервалы пересечения старта/финиша в разных спортивных соревнованиях (в оригинале разрабатывается для даунхилла), я решил сделать простой кроссплатформенный эмулятор клавиатуры.

Пока что железка в стадии разработки. Но уже умеет следующее:

  • «Подгонять» системный таймер SysTick под сигналы PPS от GPS-модуля (а также брать значение текущего времени оттуда же).
  • Регистрировать переход уровня сигнала на двух входах АЦП1 через определенное значение (к входу 0 подключается ИК-дальномер SHARP, фиксируется переход через высокий уровень сигнала — наличие кого-то ближе ~1м; к входу 1 подключается делитель напряжения на резисторе 1кОм и «ибеевском» фоторезисторе, фиксируется переход через низкий уровень — пропадание лазерного освещения).
  • Регистрировать значительное изменение расстояния до объекта перед ультразвуковым дальномером (к сожалению, толку от этого немного, т.к. из-за эха в «боевых» условиях этот дальномер черт-те что кажет).
  • Регистрировать время нажатия концевика (скажем, ворота или просто тестовая кнопка для определения того, «завелся» ли GPS).

Пока что работает железяка в тестовом режиме и выдает сообщения вроде

ADC0hi: value = 2494 (now: 2491), time = 25:61:61.446 need synchronisation
ADC1lo: value = 2699 (now: 2705), time = 25:61:61.559 need synchronisation

Первое сообщение — время пересечения кем-то поля зрения ИК-дальномера, второе — время пересечения лазерного луча. Время имеет такой дурацкий вид потому, что у меня в кабинете очень плохой обзор неба и поймать достаточное количество спутников, чтобы настроить точно таймер мелкоконтроллера — та еще задачка…

В планах:

  • сделать буферизацию (все-таки, штук 200-300 зафиксированных интервалов времени в памяти STM32 хранить вполне реально);
  • добавить вывод времени в виде секунд с начала суток (для упрощения расчета интервалов «финиш минус старт»);
  • добавить светодиодную и звуковую индикацию;
  • (на далекое будущее) добавить возможность непосредственной отсылки интервалов на другой мелкоконтроллер при помощи GSM-модуля (+автоматический подсчет времени «финиш минус старт»), понятно, что для этого надо будет еще и матричную клавиатуру подключить для ввода номера участника;
  • (на очень далекое будущее) перенести все это на какой-нибудь одноплатник (сервер NTP с синхронизацией по GPS PPS) и сделать веб-морду (тогда можно будет красиво рисовать табличку результатов на большом экране + более надежно логгировать данные).

eddy-em.livejournal.com

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