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

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

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

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

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

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


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

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



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

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



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



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



Сборка


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




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






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


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





Работает следующим образом. С разных сторон дороги ставятся передатчик и приемник, подключается светофор и вешается на удобное место (установка очень быстрая). В приложении устанавливаем соединение с 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.
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 15

    +1
    Что же это за автогонки, где обгонять нельзя?
      +1
      машины едут по «кругу» по очереди с отставанием примерно в 40 секунд, едут 2 круга. Дорога узкая обогнать не выйдет, на финише считается время прохождения круга и от этого призовые места распределяются.
      Если я не ошибаюсь это называется ралли-спринт
      0
      А как эти датчики на солнце?
        0
        на сколько пока получилось протестировать стабильно работают. Само стекло сделано из чего-то красноватого на просвет, думаю как раз из-за этого отсекается лишний свет
          0
          Пытался сделать на этом, в солнце было очень плохо. Много ложных срабатываний.
            0
            а что вы делали на этом датчике? Может на реально ярком летнем солнце и проявится я такого еще не застал. Расскажите чуть подробнее, учту на будущее
        0
        То же самое. Из-за этой проблемы идею забросил. Дело было летом.
          0
          Как мне повторить ситуацию один в один как у вас была, чтоб точно знать есть ли баг? Опишите подробнее
            0
            Яркое летнее солнце.
              0
              У меня кроме солнца проблемы создавали лампы дневного света и датчики движения на автоматических дверях. Я делал засечку с ноутбуком и более сложным учетом с выводом на плазму, базой данных, штрафами и прочей раллийной лабудой. Датчики модулировал на 38к и помещал в 30тисантиметровую трубу, сильно помогло избавится от ложных срабатываний, но стало более чувствительно к старт-финишным бегункам с фотоаппаратами.
            0
            Хм. Из характеристик ИК датчика

            Response Speed: 50 ~ 700msec.

            Для тайм-аттака это очень печально. Советую использовать хотя бы ИК приемники для пультов (можно найти такие, что смогут работать с точностью до 1мс, 10мс — практически любой). Есть у vishay приемники серии TSSP4038 — отлично подходят для таких целей, время срабатывания после прерывания луча — около 0.3 мс.

            Я как раз на них делал — vk.com/subver?w=wall2486091_552%2Fall

            Есть моя статья тут с описанием как оно работает.

            И цена намного меньше чем эти барьеры ))
              0
              Спасибо за комент, очень полезные замечания, напишу вам в личку чтоб посоветоваться о улучшениях если вы не против
                0
                вэлкам
              0
              На схеме транзисторы странно подключены. Нагрузка на базе?

              В итоге, это вообще не биполярные, а MOSFET оказались.
                0
                схему делал для наглядности, уже после подключения, сори если изобразил не правильно, подключены транзисторы как обычно. Транзисторы MOSFET верно, на амперке описаны они и их подключение подробно

              Only users with full accounts can post comments. Log in, please.