С момента написания прошлой статьи прошло 5 месяцев, с тех пор доработана прошивка, и теперь станции работают ещё надежнее, а дешевые чипы вмещают 92 отметки, что хватит, чтобы удовлетворить почти любые фантазии постановщиков. Также успешно прошло тестирование системы на соревнованиях.
Когда я писал в прошлый раз, было собрано всего 15 станций, система протестирована лишь на местечковом спортивном лабиринте, и предстояла дальнейшая задача тестирования на более массовых и автономных соревнованиях, коим явился «2-ой Московский лайт». Это двухдневные соревнования по туристическому ориентированию с обязательной ночевкой и полной автономией участников. Всего 41 контрольный пункт, большое число вариантов движения, общая дистанция составила 55 километров по прямым. Участвовало около 150 участников. Все это представляло серьезный вызов для системы отметки.
Прежде всего, нужно было спаять ещё 25 станций. Ковыряться с лутом и фоторезистом в таких масштабах уже не хотелось, поэтому изготовление заказал на стороне, в Китае. Оказалось, это совсем недорого и очень удобно. С готовыми платами паять стало много приятнее, а брака выходить меньше, платки вышли зелеными и довольно опрятными. Правда, повозиться и потратить несколько выходных всё равно пришлось. Сейчас думаю над большей автоматизацией, использованию трафарета и паяльной пасты.
Дальнейшие этапы сборки не изменил, всё также приклеивал платы к корпусу через светодиод и заливал компаундом. На самих соревнованиях было сухо, поэтому испытать станции на живучесть при дожде не довелось, но предварительное тестирование нескольких станций на природе при разных погодных условиях пока не выявило неустойчивость к воде. На корпус ещё дополнительно наклеиваю светоотражающие полоски и креплю на месте стальным тросиком с зажимами.
Прошивка несколько претерпела изменения. Реализовал возможность записи станциями номеров отметившихся чипов за счет внутренней EEPROM памяти микроконтроллера. Если присваивать адрес каждому биту, хватает на 6000 номеров чипов. Нужно это на случай разрешения всяких форс-мажоров, например, поиск потерявшегося участника, ну и для разрешения спорных случаев. Пока что памяти хватает лишь на запись факта отметки, время отметки не записывается. В будущем, при развитии системы, думаю добавить отдельную микросхему EEPROM памяти для этой цели.
Поскольку система открытая и все спецификации доступны каждому, кто-то может записать с помощью NFC-устройства любой мастер-чип. Есть возможность вандализма — перепрограммирование установленных станций. И тут, в отличии от того, если бы станцию просто разбили, может в результаты вкрасться ошибка, которую трудно заметить. Для защиты от этого явления была введена система паролей. Также добавил возможность настройки станции, использования станций старта и финиша. В таком режиме станция старта будет принимать только очищенные чипы, другие станции будут реагировать на чип только с отметкой на стартовой станции, а после финиша чипом уже будет нельзя отметиться на других станциях до очистки. Это позволит избежать досадных ошибок и случайностей.
На самих соревнованиях использовалась старая проверенная версия прошивки с возможность записи в чипы до 46 отметок, что вполне удовлетворяло соревнованиям. Но с тех пор уже протестирована возможность увеличения плотности записи. Основные опасения вызывала необходимость при записи четных отметок перезаписывать данные с предыдущей отметки, поскольку запись на чип осуществляется блоками по 16 байт. Но, тестирование показало надежность записи, словить ошибку мне так и не удалось, как бы криво я не прикладывал чип. Дополнительно записываемые данные шифруются кодом Хэмминга в два блока по 4 байта, что также увеличивает надежность работы системы.
Станция сопряжения же с тех пор существенно изменилась. Было решено пойти в сторону упрощения, сейчас станция состоит из Arduino Nano, RFID-модуля, светодиода, пищалки и пары резисторов. Тоже заказал платку из Китая, но немного не рассчитал с размером, поэтому в корпус влезло с трудом.
Вариант получился вполне удобным. Станция подключается к компьютеру по USB. Передача данных происходит через COM-порт. Для использования нужно положить чип на станцию и послать команду в зависимости от цели — считать чип, очистить чип, обновить время на станции и т.д.
Чтобы автоматизировать процесс работы с системой была написана программа в среде программирования Processing. Так уж сложилась, что среда оказалась очень простой в освоении и использовании после Arduino, видимо, из-за их родственности. Правда, писалась программа очень сумбурно, повсюду костыли и код настолько кривой, что я и сам сейчас с трудом понимаю, что где происходит. Но работает, интерфейс достаточно прост:
Программа позволяет настраивать станции, записывать, считывать результаты, вести обработку для разных видов соревнований отдельно по группам и дистанциям. Настройка, ввод протоколов, дистанций осуществляется в отдельных csv-файлах вручную. Обсчитанные результаты также экспортируется в виде csv таблицы. Да, в этом плане всё пока примитивно, но с основной задачей программа справляется. На прошедших соревнованиях программа позволила в режиме реального времени подсчитывать результаты, которые мы транслировали на внешнем мониторе для удобства участников.
Тестирование системы, как и сами соревнования, прошли успешно. Все 40 станций отработали двое суток безошибочно, результаты получали сразу по мере прихода участников. Наверное, программное обеспечение на данный момент самое узкое системы. Сейчас занят другим проектом, но, думаю, после нового года займусь данной проблемой, хочу освоить Qt в первом приближении и сделать более удобную программу в нём. Но если кто заинтересуется созданием программного обеспечения или поддержкой sportiduino в уже имеющемся, буду рад сотрудничеству.
Есть также альтернативная возможность работы с системой посредством телефона под андройдом, работающих с NFC. Можно считывать и записывать чипы, программировать станции без использования компьютера, что может быть особенно удобно в полевых условиях.
Проект существует на принципах Open Sourse. Все прошивки, схемы доступны на Github. Там же в wiki собраны подробные инструкции по сборке и принципам устройства системы, есть общее руководство в формате pdf в корне репозитория. Желающие могут создать себе свою копию системы, а также внести изменения в конструкцию и программное обеспечение. Буду рад обратной связи.
Собираюсь и дальше развивать проект в данном русле. Прежде всего, нужно создать нормальное программное обеспечение. Что касается схемотехники, то тоже есть планы по развитию, хочется сделать более компактное устройство, спаять всю схему на одной плате, добавить дополнительную память и запитать всё от CR123.
Выражаю благодарность Сергею Титову, Илье Архиповскому и Дмитрию Федотову за ряд ценных идей и комментариев. Также благодарю сообщество geektimes и всех заинтересованных. Ваши комментарии, идеи и поддержка сыграли немало в развитии проекта.
Комментарии (43)
true_alex
11.10.2017 12:18После предыдущей статьи смотрел вариант записи по две станции на блок в чипе + коды хеминга для защиты от ошибок, не стал Вам писать до окончания МЛ, что бы узнать какова надёжность изначальной системы. Вижу что Вы использовали этот подход, мне казалось логичнее в блоке 0-1 сначала писать номер чипа, а потом номер последней станции. Или номер последней станции вообще писать в блок 0-2, это приведёт к незначительному увеличению времени отметки, но номер чипа не будет перезаписываться при каждой отметке, что теоретически повысит надёжность.
Мне кажется тросик закреплён плохо, так как есть возможность оторвать станцию от тросика без повреждения самой станции. Посмотрите как обычно сделано крепление kensington lock, сама петля обычно не сильно крепкая, но закреплена она на критически важном элементе, к примеру на материнской плате ноутбука. При вырывании плата повреждается ноутбук поэтому кража ноутбука с вырыванием замка лишена смысла.
Николай Сытов (главный судья ММ) рассказывал что станции воруют обычно местные жители ради батарейки и светодиода, если для кражи станции её корпус нужно будет сломать на месте, то вероятность кражи уменьшится.
Хотя изготовление станции сильно усложнится, но если поперёк корпуса сделать полую трубку для тросика (что бы тросик проходил через корпус станции), а крепление станции сделать плоской резинкой, то может оказаться удобнее, так тросик — защита от кражи, а резинка позволит легко закрепить станцию на объекте любого диаметра.Diam77
11.10.2017 13:15По закреплению станции. Бегал "Новую Москву", там кто-то не сломал, а просто сжёг станцию. Я обнаружил только остатки платы с антенной, каркас от призмы и пепел. Принёс плату судье, чтобы доказать. КП засчитали.
true_alex
11.10.2017 13:26А как засчитывали следующим участникам? Они прибегали и не могли найти никаких следов станции.
Diam77
11.10.2017 14:05Я в этом месте был почти последний, было полчаса до истечения контрольного времени. Вероятность, что кто-то будет после меня, крайне низка.
Расчет был на то, что судья, увидев плату, поверит не только мне, но и всем тем другим, кто утверждает то же, что и я. (Хотя Артём и без того верил.)
Ну и еще оставались остатки корпуса и призмы, я не все остатки забрал.
AlexanderVolikov Автор
11.10.2017 13:56Номер чипа, в принципе дублируется информацией из UID, можно, в принципе, и её использовать.
Да, фланцы, куда крепится тросик, в принципе, при желании можно отрезать острым ножом. Вставка трубки, пожалуй, немного защитит от кражи станции, но, как уже написали ниже, станцию могут сжечь. Ещё могут спилить всё дерево вместе со станцией, разбить её кувалдой, перекусить тросик кусачками и т.п.
Мне кажется защититься от человека, который твердо решил снять или испортить станцию не получится никак. А тросик — это скорее просто показатель порядочным проходящим, что эта штука тут висит не просто так. Поэтому просто нужно принять, что некоторый процент станций не будет возвращаться и учесть это в расходах на соревновании, благо стоимость станции в настоящем виде небольшая.true_alex
11.10.2017 14:10Бороться с людьми, которые целенаправленно пытаются украсть/сломать станцию, сложно и не рационально. Тросик защищает от случайных непорядочных прохожих, у них вряд ли с собой есть пила, болторез, ломик или кувалда, а перочинный нож вполне может быть. От хороших кусачек тросик тоже не спасёт, но, спасибо китайским производителям, хорошие кусачки сейчас встречаются не часто.
По поводу сжигания станции, так в ней и литиевая батарейка могла коротнуть, станция тогда сгорит сама по себе.AlexanderVolikov Автор
11.10.2017 14:24В целом, да, согласен. Станции желательно чтобы были более крепкими и монолитными. И идея с каналом под тросик хорошая, но так возникают дополнительные трудозатраты.
jekyll2017
11.10.2017 12:46Пардон за пару ошибок:
1) труба полипропиленовая — www.rospolymerplast.ru/polypropylene-profile
2) W25Q32FVSSIG — 50 р./шт. У китайцев еще дешевле…
И, как правильно написал ниже true_alex, профиль просто проткнуть насквозь металлической трубкой — это обеспечит герметичность и вандалоустойчивость канала для тросика.
Насчет питания я так же советую попробовать LiFePo4 аккумуляторы — они есть и в АА формате (размер 14500) — должны выдерживать мороз (судя по тестам — 50% емкости при -20 — mysku.ru/blog/others/13323.html )AlexanderVolikov Автор
11.10.2017 14:09Посмотрел трубы. В принципе, по габаритам подходит Профиль ПП 50х35х2,5 мм. Возникает вопрос как это всё аккуратно скрутить и загерметизировать. Наверное, можно на торцы соответствующие размером прокладки и пропустить винты вдоль всего устройства, туда же встроить трубку для канала под тросик. Спасибо, подумаю над этим вариантом
.
LiFePO4 да, довольно хороши. Но и ёмкость у них значительно ниже простых литиевых. Когда хотел делать от аккумуляторов считал варианты и получается, что литиевый хоть и просаживается значительно, но за счёт своей большой изначальной емкости не сильно проигрывает LiFePO4. Лучше всего, конечно литий-тионихлоридные батареи (какие и стоят в Si и SFR), они не теряют свои характеристики в холод, но довольно дорогие, требуют периодической депассивации.
Но все варианты с аккумуляторами мне не очень нравятся тем, что их придётся заряжать в больших количествах. А при нынешнем потреблении станций, и 3-х пальчиковы обычных батарей хватит на год активного использования.
Я больше хочу уменьшить габариты устройства, сейчас смотрю в сторону литиевых батареек CR123, они тоже хорошо выдерживают холод.true_alex
11.10.2017 14:26Ещё есть вариант Energizer Ultimate Lithium, долго хранятся, имеют большую ёмкость (1200мАч ААА, 3000 мАч АА) и отличный температурный диапазон (-40 до 60°С). Отпугивает нестандартное напряжение 1,8 В, в холостом режиме и стоимость от ~120 руб за штуку, но CR123 выйдет в сравнимые деньги.
AlexanderVolikov Автор
11.10.2017 14:55Да, конкретный вариант батарейки уже будет зависеть больше от корпуса, какой найду для компактного варианта. Скорее всего питание будет от одной батарейки с повышением напряжения.
Для нынешнего варианта да, три штуки Energizer Lithium решат проблему работы в холоде, да и продлят общую работу устройства раза в два по сравнению с обычными батарейками, но и повысят стоимость собранной станции в полтора раза.
jekyll2017
11.10.2017 14:49Я бы попробовал написать себе концепцию проекта — список приоритетных направлений. Без этого много метаний может случиться…
Например, когда я делал логгеры для ММБ я себе поставил несколько целей:
1) максимальная дешевизна
2) блочное и ремонтопригодное исполнение
3) простота использования
4) вандалозащищенность
… все они определялись исходя из надежды на применение приборов не только на ММБ, а на разных любительских соревнованиях, а так же возможность изготовления приборов силами не очень квалифицированных людей, имеющих ограниченный доступ к разнообразию электроники и прочих запчастей — т.е. чтобы любой любитель соревнований, где нужно отмечать уходящих/приходящих спортсменов (ориентирование, бег и т.п.) даже в заштатном Урюпинске мог по списку заказать запчасти на АлиЭкспресс и спаять бытовым паяльником за вечер готовый аппарат за минимальные деньги…
В результате мне было понятно, что я не буду сильно париться объемом и энергосбережением, зато мне нужна надежность и взаимозаменяемость составляющих, в т.ч. сканеров. Поэтому все внутри было на разъемных соединениях, все комплектующие были самыми дешевыми и вся сборка сводилась к пайке материнской платы навесным монтажом.
Касательно текущего проекта — а на самом ли деле так важен размер блока? Чем плох большой (в разумных пределах) корпус?
По батарейкам… А надо ли их уменьшать? Если электроника все равно залита компаундом, то не наплевать ли на герметичность блока? Сами батарейки, обычно, конденсата не боятся.
По зарядке батарей — для того, чтобы корпус не разбирать и не ставить хлипких разъемов можно просто вывести на корпус 2 контакта (вплавить 2 проволочки на сквозь) — тогда весь корпус можно ставить в крэдл для зарядки, как у раций и складских ТСД. Так же можно и слив данных организовать — еще пару контактов для UART…AlexanderVolikov Автор
11.10.2017 15:41Да, вся разработка велась с поиском компромисного решения. Более компактный и легкий корпус тоже хорошо, будет меньше привлекать посторонних, постановщику носить их будет легче, да и просто более эстетично. Мои станции весят 160 г, но когда их много и все они с тросиками, то уже не очень приятно все их таскать, ставить и снимать, с мослайта возвращался с 8 кг станций в рюкзаке). Поэтому хочется вариант покомпактнее, но это на неопределенное будущее.
Да, основной целью я ставил сделать доступный дешевый вариант отметки, который можно сделать самим на местах. Навесной монтаж, конечно, требует меньше навыка чем поверхностный, но тут дело желания, можно денёк потратить на оттачивание навыка, а дальше уже с поверхностным будет всё собираться быстрее.
Но идея конструктора тоже хорошая. Да и габариты многих не пугают, а где-то они совсем не важны. Может сделаю вариант станций, который будет собираться из готовых блоков на материнской плате, благо они все есть — arduino pro mini, часы ds3231, rfidrc522.
Про станции на аккумуляторах с выводными контактами думал и даже сделал несколько, которые и сейчас работают. Проще уж вытащить аккумулятор и зарядить его как обычно, чем думать над выводными контактами и док-станцией. Благо сейчас энергопотребление маленькое, делать это надо раз в год-два.Alexeyslav
11.10.2017 16:17Если энергопотребление маленькое… не задействовать ли солнечную панель? Ночью ими врятли кто пользоваться будет. Небольшого аккумулятора должно хватить для форс-мажоров, а основная работа при свете от панели.
true_alex
11.10.2017 16:22Станции часто закрепляются в неприметных местах, на стволе дерева, под кустом, на коряге, солнца там нет, а соревнования бывают многодневными и ночными.
AlexanderVolikov Автор
11.10.2017 17:32На самом деле, вполне можно и так сделать. какого-нибудь аккумулятора на 100-200 mah вполне хватит для поддержания работы в ночное время и пасмурное время. И устройство будет работать пока аккумулятор не деградирует. Буду этот вариант иметь в виду на будущее. Но, в нынешнем форм-факторе, с батарейками будет проще.
true_alex
11.10.2017 15:27Кстати, трубка под тросик не обязательно должна быть металлической, она внутри, нагрузки на боковые стенки небольшие (от изгиба тросика), т.е. сверлится отверстие по диаметру трубки вставляется трубка заливается клеем-герметиком соединение. В принципе сложность изготовления увеличивается не сильно.
jekyll2017
11.10.2017 15:50Металлическая трубка (алюминий из Леруа) сильно проще в монтаже — ее можно просто разогреть и вплавить в корпус. Для 100% надежности можно дополнительно облить внутри стык клеем. Пластиковую сложнее будет вклеивать… К тому же, ПП корпус не очень хорошо клеится…
artsop
11.10.2017 13:23Молодец, сам занимаюсь ориентированием, и выдумываю как удешевить отметку, у тебя получилось и не обращай внимание на всяких писак червей, которые не знают, что это такое. Данное разработанное тобой оборудование имеет вид на дальнейшую жизнь, и может быть даже коммерческий вид по своей дешевизне. Данный проект могут использовать маленькие клубы и спорторганизации для проведения мини (средних) соревнований не только в ориентировании, туризме а и других видах спорта где необходима эл. отметка.
ITMatika
11.10.2017 18:18Интересный проект!
Хотя память расходуется нерационально, уменьшая количество отметок и увеличивая объём передаваемых данных.
Какова частота опроса станции и максимальное время отметки на станции?
Не думал насчёт совместимости с SFR?AlexanderVolikov Автор
11.10.2017 18:37Спасибо!
Единица объема передаваемых данных на чип Mifare Classic 1k — 16 байт, поэтому даже если нужно передать 1 бит, писать придется 16 байт и ещё позаботится о том, чтобы не стереть уже имеющиеся данные. А так да, память можно использовать более экономно. Даже если оставить шифрование по Хэммингу, можно записывать три отметки в одну страницу и тогда будет хватать чипа на 138 отметок. Но вот только нужно ли усложнять? Сейчас можно записать 92 отметки, чего хватит в большинстве случаев.
По умолчанию, в рабочем режиме частота опроса у меня 0.25 секунды. Можно сделать быстрее, но тогда батареи будут быстрее садиться. Время записи самой отметки прядка 0.05 секунд.
С SFR моя система не совместима, у них другие поддерживаемые стандарты передачи данных.Scarred
12.10.2017 10:07Может я что-то не понимаю в организации подобных соревнований, но если кому-то мало 92 отметки — можно выдавать по два чипа разных цветов. Ну и на станции использовать цветную бумагу для печати номера.
Первая часть маршрута одного цвета, попалась станция с другим цветом — убрал первый чип, достал второй и дальше используются только второй чип.
На переходной станции можно сделать отметку двумя чипами. На крайний случай можно переходную станцию не прятать и даже человека приставить что бы помогал участникам соревнований. Все таки после большой нагрузки можно не сразу сообразить что надо чипы поменять.
Думаю для тех редких случаев где не хватит отметок — это будет проще. Ну и количество отметок теоретически становится неограниченным. Главное чтобы чипов хватало.
Nansen09
11.10.2017 21:45Хочется совсем наоборот: чипы на деревьях, 5-10 штук (дублирование) в ближайшей окрестности точки, а станция у ориентировщика. Так решится масса проблем и расширится область применения, пишу с точки зрения организатора и судьи трофи-рейдов (ориентирование на внедорожниках).
AlexanderVolikov Автор
11.10.2017 21:55Есть системы, основанные на данном принципе, например ibutton, emit.
В принципе, если для трофи рейда, где вес станции не является критичным, всё можно реализовать и с помощью железа, которое я разрабатываю, только переделать прошивку. Можно даже упростить и немного удешевить конструкцию станций, ведь серьёзной герметизации уже не требуется.
В общем, вариант имеет право на жизнь. Поставлю в список задач разработать такую прошивку, спасибо.
o-sport
11.10.2017 22:51Основная проблема таких систем «разбег времени». в классической системе (если ее так можно назвать) таймеров (тикающих часов) по количеству станций, а если «переворачивать» систему то таймер будет у каждого спортсмена свой, со своей погрешностью и вытекающими отсюда проблемами. поэтому конечно и одно и другое имеет право на жизнь. но если говорить про ориентирование — ко классическая система более приемлема. для трофи — да… но собственно у ребят внутри станции память имеется, поэтому ни кто не мешает «перевернуть» систему и перемещаться со станциями.
Другое дело, что ребята в начале пути и им еще со многим придется столкнуться (с герметизацией, если они будут использовать аккумуляторы) с термокомпенсацией кварца (особенно актуально если станция будет использоваться несколько дней в резкие перепады температуры) с энергосбережением и т.д. Я желаю им успехов — дело хорошее.Alexeyslav
12.10.2017 09:48Разбег? пару секунд в сутки это в ХУДШЕМ случае. При необходимости можно хранить калибровочную константу и корректировать часы по мере выгрузки данных.
Кварцы есть с нулевым ТКЧ. Термостабилизация нужна будет только при необходимости поддержания стабильности частоты порядка 10E-8...10E-12(как пример — генератор ГИАЦИНТ) а это порядка 1мс разницы в сутки.o-sport
12.10.2017 10:34Алексей, даже если пару секунд в сутки если говорить о хронометраже, не думаю что это хороший показатель. представьте себе ситуацию, у вас станция стоит в лесу, в межсезонье перепад температур градусов 30… -15+15 :) у вас стоит 2 станции на кп. один отметился в одной другой в другой… в итоге один другому проиграл… а это был промежуточный финиш. ну а дальше разборки я точно был раньше… а вы доказываете что система обмануть не может.
Alexeyslav
12.10.2017 10:50Обычные часы, «электроника» белорусского производства — коррекция хода +-0.1сек/сутки. Уже давно не ношу, просто достал через год сверил с GPS уход около 30 секунд. Кварц надо подобрать с ТКЧ в районе нуля, и останется единственная проблема — определить и ввести корректирующий коэффициент. А это либо 10 дней для точности 0.1сек/сутки либо поверенный частотомер с 6-ю значащими разрядами и более.
Да, и правильно запитать кварц — значение имеют компенсирующие ёмкости, их надо использовать номиналом с даташита на кварц а не от фонаря. Впрочем, наверно проще использовать кварцевый генератор а не голый кварц. Например, в старых мобилах используют генератор на 10Мгц для DDS с точностью и стабильностью в 7 знаков в широком диапазоне температур, любители часто их используют в своих частотомерах.o-sport
12.10.2017 11:02Алексей, все верно. но часы живут на руке, где температура более или менее стабильна. а станции в суровых условиях, это нужно учитывать. ну а так — да, Вы правы, если много вариантов как добиться приемлемого результата. TCXO самый лучший, но очень дорогой вариант. тут нужно понять для каких задач Вы делаете устройство, если не Чемпионат Мира, то и требования меньше.
true_alex
12.10.2017 11:39А нужно ли об этом сейчас думать, постоянно участвую в ММ, раньше, когда был перевод часов, часы на станциях переводились раз в пол года, сейчас часы на станциях не переводят и не корректируют, за год уход до 30 секунд (связан с садящимися батарейками), и это у самых простых SI при «суровой» эксплуатации. Это уход меньше 0.1 секунды в сутки. Может быть прежде чем ввязываться в увеличение точности стоит провести тестирование и выявить а нужно ли сейчас тратить на это силы? Взять 2-3 станции выставить на них точное время и вынести на балкон на пару месяцев (в чёрный пакет и на место куда попадает солнце, что бы был побольше перепад температур), потом посмотреть средний суточный уход.
AlexanderVolikov Автор
12.10.2017 12:19Да, длительное тестирование на этот фактор я ещё приведу. Но после двухнедельного тестирования, в том числе на улице в условиях перепада температур, уже могу сказать, что часы в моих станциях могут уходить до 2 секунд в сутки. По документации, такая погрешность у них должна быть за месяц, у часов есть встроенный термометр и кварц, и они должны проводить коррекцию частоты кварца. Возможно, дешевые часы из Китая, которые я использую, не совсем соответствуют документации, поэтому и стоят в 5 раз дешевле чем в России.
Но, на самом деле, это не так страшно. По совету, данному мне в комментариях к прошлой статье, я присваиваю всем станциям свой «серийный номер», который записывается на чип при отметке вместе с задаваемым номером. Поэтому можно проводить корректировку даже если на кп стоит несколько дублирующих станций.
sfr-system
12.10.2017 13:18Проект, безусловно, хороший. И он найдет свою нишу. Для многих пользователей даже наша система крайне дорога, не говоря уже про SportIdent. И возможность вложить вместо денег свой труд, сделав все из набора готовых модулей, для многих окажется привлекательной. Например, у нас есть клиенты в Канаде и Австралии, сами делающие чипы. Со станциями в нашем случае не получится, а из готовых Arduino модулей — почему бы нет?
По практической части: от стандарта ISO 14443 мы отказались в самом начале работы в пользу ISO 15693 — в нем намного проще с эргономикой, эффективное расстояние в 4-7 см позволяет создать удобный чип. Но это не очень важно для «неспринтерских» видов. Зато плюсы — наличие готовых модулей, тогда их не было для обоих стандартов, что серьезно повлияло на выбор.
От чего хочу предостеречь:
1. Перезапись ранее записанных ячеек. По опыту, в одном случае на 10000 будет сбой — логически невосстановимый. Лучше все-таки одна ячейка — одна запись.
2. Мастер-чип должен быть «однократного действия». Увидев его, станция должна выполнить записанные в нем действия (изменение своего номера-времени), после чего сделать чип «обычным». Это убережет от случайного попадания мастер-чипа в общую корзину.
В общем, удачи!AlexanderVolikov Автор
12.10.2017 13:36Большое спасибо!
1. Да, про проблему перезаписи думал. В самом начале развития системы станции просто записывали информацию в страницу, определенную номером станции. Но в таком случае нужно продумывать логику повторного взятия того же кп в случае дистанций-бабочек. Перешёл на последовательное заполнение памяти чипа и тут уже сложно обойтись без перезаписываемого счётчика.
Про проблему с EEPROM памятью наслышан, особенно для дешевых китайских чипов. Решаю это тем, что самую важную информацию — последний записанный блок, номер чипа записываю в трех экземплярах, а информацию о временной отметке с использованием кода Хэмминга. Перед стартом все чипы проходят проверку (запись во все биты 1, затем 0).
Но спасибо за совет и за статистику, подумаю ещё как можно усилить надежность.
2. Да про эту проблему тоже в курсе, сейчас у меня мастер-чипы одноразовые.sfr-system
13.10.2017 08:42Откажитесь от счетчика пока не поздно, он — зло :)
Если бы я создавал систему сейчас, его бы не было. В текущей прошивке нашей станции его запись оставлена для обратной совместимости, а чтение убрано совсем. Даже тупым методом половинного деления вы найдете последнюю запись за 6 операций чтения, а администрирование счетчика — как минимум чтение, чтение корреспондирующей, запись и чтение-верификация.AlexanderVolikov Автор
13.10.2017 09:19Да, действительно, так получится не сильно дольше, а может и столько же по времени. Спасибо за совет, попробую протестировать и этот вариант.
FlashHaos
13.10.2017 23:14Очень нужный проект с правильным серьезным подходом. Отдельное спасибо за детальнейшее описание!
Скажите, я правильно понимаю, что данные на картах не шифруются? Из защиты только мастер пароль, который хранится в открытом виде? Когда я делал схожее устройство для игр, я упёрся в полное непонимание как реализовать на этих карточках шифрование, чтобы недобросовестный пользователь не мог скопировать свою или чужую карту. Нет ли описания или примера как это делать? Гугл не помог. Спасибо!AlexanderVolikov Автор
13.10.2017 23:27Спасибо!
Да, данные на картах не шифруются. Мастер-пароль хранится в закрытом виде, нужен он только для постановщика для корректировки времени, номера станции. При отметке участником никак не задействован.
Mifare Classic 1k поддерживает шифрование, можно сделать защиту на чтение/запись. Подробности есть в даташите на него, пункт 8.7
Библиотека, которой я пользуюсь, поддерживает шифрование, можно посмотреть в примерах, вроде там есть.
У меня защита от копирования довольно банальная — станции тоже пишут в себя отметившиеся чипы и потом можно легко сверить результаты.
jekyll2017
Корпус выглядит непрочно. :( Для логгеров на ММБ я использовал напиленную квадратную ПВХ трубу 60*60 мм, стенка 6 мм — ее только танком раздавить можно… И стоит она недорого, но надо брать сразу 6 м. Могу поделиться остатками…
Насчет добавить EEPROM — возможно, стоит сразу уж FLASH — тоже недорого, объем памяти сильно больше, интерфейс SPI. Например, я себе накупил W25Q32FVSSIG — 4Мб по 5р/шт в ЧипДипе…
По софту — я могу помочь — в последннее время насобачился на С# несложные прикладные программки для работы с устройствами по COM/USB…
AlexanderVolikov Автор
Да, корпус довольно дешевый и не очень крепкий. Удара молотком или массивным поленом, пожалуй, не выдержит. Но очень он удобный по размерам, как раз подходит. Корпус хочется, конечно и покрепче, но прежде всего хочется какой-нибудь более влагозащищенный корпус или продумать какую-нибудь систему прокладок, чтобы всё делать без компаунда. Труба 60*60, наверное, будет довольно габаритным вариантом.
Память можно, в принципе и flash, но там получается сложнее с прошивкой, и питания она требует большего. А 32kb eeprom хватит с избытком, отметка времени занимает 4 кб, хватит на 8000 отметок. Тут уже возникает проблема с извлечением информации без разбора станции, на чипы, которые я использую влезает 768 байт, чтобы передать информацию с помощью них придётся делать несколько заходов.
jekyll2017
Кстати, насчет софта — можно попробовать приспособить мой старый проект, сделанный в Visual C# для настройки сканеров ММБ:
github.com/realtim/mmb/tree/master/bc_reader/application_software_examples/BC_Logger_control_win
самые свежие исходники и бинарник:
BC_Logger_control_win.rar
BC_Logger_control_1_0_0_9.rar
выше в проекте есть и очень простенький вариант под Android…
AlexanderVolikov Автор
Да, выглядит хорошо. Что-нибудь подобное и хотелось бы. Можно попробовать сделать на основе этого.
Alexeyslav
Самое главное отличие EEPROM от FLASH в том что у последней минимальная единица записи — страница. Т.е. если нам надо перезаписать маленькую порцию данных надо будет выгрузить целую страницу, модифицировать её в контроллере и записать обратно в флеш. Помимо необходимости для этого иметь достаточный объём RAM в контроллере будет сильно страдать ресурс перезаписей ячеек которые будут чаще дёргать не по делу. Для малых порций данных лучше всего подходит EEPROM с индивидуально перезаписываемыми ячейками. Или вовсе чип FRAM, хотя он несомненно будет сильно дороже.