Хронометраж для любительских автогонок

в 11:57, , рубрики: android, arduino, diy или сделай сам, программирование микроконтроллеров, Разработка под android

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

Все исходники и схема доступны в конце статьи.

Задачи были следующие:
— максимальная простота, минимум подключений и проводов;
— быстрота установки;
— на кругу могут быть несколько машин одновременно;
— машины идут в строгой последовательности, обогнать и изменить порядок не могут;
— старт по пересечению линии.

Поскольку у меня был небольшой опыт использования Arduino, я взял его за основу. Так же решил отказаться от ноутбука и для мобильности заменить его приложением под Android, освоим незнакомый мне раннее язык Java.

Выбор запчастей

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

Для того, чтоб точно отличать свет инфракрасного диода от автомобильных фар или солнца, нужно подбирать приемник с частотной модуляцией, чем заниматься не хотелось. Выбор пал на готовые датчики ABT-30m. В них все уже было реализовано, например, стекло пропускало только инфракрасный свет и отсекало свет фар и солнца. Стояли фокусирующие линзы, нужно было только подключиться к соответствующему выводу датчика. Насколько я понял, такие датчики используются для охраны периметра в домашних сигнализациях. Забегая вперед скажу, что выбор оказался удачным.

Хронометраж для любительских автогонок - 1

Аккумулятор. Поскольку ABT-30m питается от 12v и Arduino mini может питаться от 12v аккумулятора, решено брать на 12v. Хотелось найти минимального размера, чтобы он поместился внутрь корпуса устройства, а не был дополнительным блоком снаружи. На рынке удалось найти только автомобильный аккумулятор, который совсем не подходил по размерам и аккумулятор от ИБП, который был тоже довольно большим: но на крайний случай оба могли бы подойти.

В итоге мне повезло и я нашел в китайском магазине аккумулятор на 12v и 4000mAh размером в два спичечных коробка, что было очень хорошо. В последствии выяснилось, что это «аккумуляторы от нокии», соединенные последовательно в термоусадке:

Хронометраж для любительских автогонок - 2

Светодиоды. Обычные 12v rgb 10w:

Хронометраж для любительских автогонок - 3

Bluetooth. Стандартные модули HC-06:

Хронометраж для любительских автогонок - 4

Сборка

Вот такая схема получилась. Arduino подключается к bluetooth на 5 и 6 ногах и работает через Software Serial. К 9,10,11 ногам подключаются rgb светодиоды через транзисторы, так как светодиоды питаются от 12v, а arduino выдает 5v. На 2 ногу заведен сигнал с датчика пересечения, работает через прерывания:

Хронометраж для любительских автогонок - 5
Хронометраж для любительских автогонок - 6

В итоге получилось вот так. Один блок — это приемник (с кучей проводов внутри) второй — передатчик (внутри только аккумулятор) и светофор, сделанный из какого-то фонарика из fixprise (внутри 3 цветных светодиода и рассеиватель из какой-то бумаги). Крепится светофор крокодильчиком, а соединяется с основным модулем обычным патчкордом:

Хронометраж для любительских автогонок - 7
Хронометраж для любительских автогонок - 8
Хронометраж для любительских автогонок - 9
Хронометраж для любительских автогонок - 10

Мобильное приложение

Вместо компьютера я решил выводить результаты и управлять стартом с мобильного телефона на Android. Так же это был первый опыт разработки под эту платформу и первый опыт с Java. В итоге получилось вот такое приложение:

Хронометраж для любительских автогонок - 11
Хронометраж для любительских автогонок - 12
Хронометраж для любительских автогонок - 13

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

После нажатия кнопки «старт» светофор загорается зеленым, а по пересечению линии начинается отсчет времени. Arduino посылает в приложение количество миллисекунд с момента ее запуска и так с каждым пересечением линии. Потом по разнице между этими значениями высчитывается время заезда. Задержки передачи данных становятся не важными.

Планы на будущее

Сделать синхронизацию в облако, чтобы можно было в реальном времени смотреть на большом мониторе результаты или не выходя из дома на сайте (очень интересно попробовать Meteor.JS). Так же нужно исправить мелкие баги и сделать устройство модульным, чтоб можно было использовать его для разных конфигураций трассы (старт и финиш в разных местах например). Еще нужно сделать индикацию участника (наверно rfid метки...)

Примерная стоимость

Инфракрасные датчики ABT-30m (1350р)
Arduino mini (135р)
Bluetooth HC-05 (270р)
Транзисторы IRF530 с N-каналом (40р * 3шт)
2 аккумулятора 12V 4000mAh (820р * 2шт)
10w rgb светодиоды (160р * 3шт)
Провода, корпус, разъемы

Итого: ~4000р — 5000р

Все исходники открыты и доступны в Bitbucket.

Автор: versoul

Источник

  1. Валерий:

    Сори- где скачать скеч проекта?

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js