Sportiduino. Система электронной отметки для спортивного ориентирования. Часть 2

Часть 1.
59dd0899a856e813516557.jpeg

С момента написания прошлой статьи прошло 5 месяцев, с тех пор доработана прошивка, и теперь станции работают ещё надежнее, а дешевые чипы вмещают 92 отметки, что хватит, чтобы удовлетворить почти любые фантазии постановщиков. Также успешно прошло тестирование системы на соревнованиях.

Когда я писал в прошлый раз, было собрано всего 15 станций, система протестирована лишь на местечковом спортивном лабиринте, и предстояла дальнейшая задача тестирования на более массовых и автономных соревнованиях, коим явился »2-ой Московский лайт». Это двухдневные соревнования по туристическому ориентированию с обязательной ночевкой и полной автономией участников. Всего 41 контрольный пункт, большое число вариантов движения, общая дистанция составила 55 километров по прямым. Участвовало около 150 участников. Все это представляло серьезный вызов для системы отметки.

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

59dd07bcaad86559567504.jpeg

Дальнейшие этапы сборки не изменил, всё также приклеивал платы к корпусу через светодиод и заливал компаундом. На самих соревнованиях было сухо, поэтому испытать станции на живучесть при дожде не довелось, но предварительное тестирование нескольких станций на природе при разных погодных условиях не выявило пока не выявило неустойчивость к воде. На корпус ещё дополнительно наклеиваю светоотражающие полоски и креплю на месте стальным тросиком с зажимами.

59dd07bc65fb5446121377.jpeg

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

Поскольку система открытая и все спецификации доступны каждому, кто-то может записать с помощью NFC-устройства любой мастер-чип. Есть возможность вандализма — перепрограммирование установленных станций. И тут, в отличии от того, если бы станцию просто разбили, может в результаты вкрасться ошибка, которую трудно заметить. Для защиты от этого явления была введена система паролей. Также добавил возможность настройки станции, использования станций старта и финиша. В таком режиме станция старта будет принимать только очищенные чипы, другие станции будут реагировать на чип только с отметкой на стартовой станции, а после финиша чипом уже будет нельзя отметиться на других станциях до очистки. Это позволит избежать досадных ошибок и случайностей.

На самих соревнованиях использовалась старая проверенная версия прошивки с возможность записи в чипы до 46 отметок, что вполне удовлетворяло соревнованиям. Но с тех пор уже протестирована возможность увеличения плотности записи. Основные опасения вызывала необходимость при записи четных отметок перезаписывать данные с предыдущей отметки, поскольку запись на чип осуществляется блоками по 16 байт. Но, тестирование показало надежность записи, словить ошибку мне так и не удалось, как бы криво я не прикладывал чип. Дополнительно записываемые данные шифруются кодом Хамминга в два блока по 4 байта, что также увеличивает надежность работы системы.

59dd07bcc6bb0196236295.jpeg

Станция сопряжения же с тех пор существенно изменилась. Было решено пойти в сторону упрощения, сейчас станция состоит из Arduino Nano, RFID-модуля, светодиода, пищалки и пары резисторов. Тоже заказал платку из Китая, но немного не рассчитал с размером, поэтому в корпус влезло с трудом.

59dd07bcca677958621138.jpeg

Вариант получился вполне удобным. Станция подключается к компьютеру по USB. Передача данных происходит через COM-порт. Для использования нужно положить чип на станцию и послать команду в зависимости от цели — считать чип, очистить чип, обновить время на станции и т.д.

Чтобы автоматизировать процесс работы с системой была написана программа в среде программирования Processing. Так уж сложилась, что среда оказалась очень простой в освоении и использовании после Arduino, видимо, из-за их родственности. Правда, писалась программа очень сумбурно, повсюду костыли и код настолько кривой, что я и сам сейчас с трудом понимаю, что где происходит. Но работает, интерфейс достаточно прост:

59dd09dccdb0e912768582.png

Программа позволяет настраивать станции, записывать, считывать результаты, вести обработку для разных видов соревнований отдельно по группам и дистанциям. Настройка, ввод протоколов, дистанций осуществляется в отдельных csv-файлах вручную. Обсчитанные результаты также экспортируется в виде csv таблицы. Да, в этом плане всё пока примитивно, но с основной задачей программа справляется. На прошедших соревнованиях программа позволила в режиме реального времени подсчитывать результаты, которые мы транслировали на внешнем мониторе для удобства участников.

59dd07bc7cab0171368523.jpeg

Тестирование системы, как и сами соревнования, прошли успешно. Все 40 станций отработали двое суток безошибочно, результаты получали сразу по мере прихода участников. Наверное, программное обеспечение на данный момент самое узкое системы. Сейчас занят другим проектом, но, думаю, после нового года займусь данной проблемой, хочу освоить Qt в первом приближении и сделать более удобную программу в нём. Но если кто заинтересуется созданием программного обеспечения или поддержкой sportiduino в уже имеющемся, буду рад сотрудничеству.

Есть также альтернативная возможность работы с системой посредством телефона под андройдом, работающих с NFC. Можно считывать и записывать чипы, программировать станции без использования компьютера, что может быть особенно удобно в полевых условиях. Разработчик программы SFR Chip Read добавил поддержку системы Sportiduino до версии 0.37 и планирует далее поддерживать проект.

Проект существует на принципах Open Sourse. Все прошивки, схемы доступны на Github. Там же в wiki собраны подробные инструкции по сборке и принципам устройства системы, есть общее руководство в формате pdf в корне репозитория. Желающие могут создать себе свою копию системы, а также внести изменения в конструкцию и программное обеспечение. Буду рад обратной связи.

Собираюсь и дальше развивать проект в данном русле. Прежде всего, нужно создать нормальное программное обеспечение. Что касается схемотехники, то тоже есть планы по развитию, хочется сделать более компактное устройство, спаять всю схему на одной плате, добавить дополнительную память и запитать всё от CR123.

Выражаю благодарность Сергею Титову, Илье Архиповскому и Дмитрию Федотову за ряд ценных идей и комментариев. Также благодарю сообщество geektimes и всех заинтересованных. Ваши комментарии, идеи и поддержка сыграли немало в развитии проекта.

© Geektimes