В качестве первого приближения к железяке, позволяющей точно (не хуже нескольких микросекунд) определять интервалы пересечения старта/финиша в разных спортивных соревнованиях (в оригинале разрабатывается для даунхилла), я решил сделать простой кроссплатформенный эмулятор клавиатуры.
Пока что железка в стадии разработки. Но уже умеет следующее:
Пока что работает железяка в тестовом режиме и выдает сообщения вроде
Первое сообщение — время пересечения кем-то поля зрения ИК-дальномера, второе — время пересечения лазерного луча. Время имеет такой дурацкий вид потому, что у меня в кабинете очень плохой обзор неба и поймать достаточное количество спутников, чтобы настроить точно таймер мелкоконтроллера — та еще задачка...
В планах:
Пока что железка в стадии разработки. Но уже умеет следующее:
- "Подгонять" системный таймер 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) и сделать веб-морду (тогда можно будет красиво рисовать табличку результатов на большом экране + более надежно логгировать данные).