→ Часть 1 , Часть 2 Прошел год с момента последней публикации, и мне часто задают вопрос, что изменилось с тех пор.
Короче говоря, был осуществлен переход на чипы Ntag, в схему были внесены небольшие изменения для обеспечения лучшей чувствительности, громкости сигнала и правильного хода часов, а также создано программное обеспечение для работы с системой.
В целом система стабилизировалась и готова к воспроизведению и использованию.
Более подробная информация ниже.
Прежде всего расскажу о RFID-чипах и о том, почему был сделан переход на Ntag. Напомню, что память Mifare Classic 1K содержит 1024 байта, из них для хранения информации доступно 752 байта.
Структура памяти разделена на 16 блоков, которые содержат 4 страницы по 16 байт, одна из которых зарезервирована для шифрования.
Если мы использовали одну страницу как служебную, то для отметок записи оставалось еще 46 страниц.
В начале разработки я использовал память обильно — одна страница по 16 байт на метку, что ограничивает ее использование небольшими запусками.
Но для рогейна, спортивного ориентирования или приключенческих гонок 46 станций недостаточно.
Поэтому была реализована идея уплотнения: на каждой странице писалось по две отметки.
При этом существовал риск потери данных, ведь единицей записи является одна страница, и при повторной записи нужно прочитать уже написанную половину, чтобы записать ее еще раз.
Собственно, я наступил на эти грабли при проведении Рогейна в ноябре прошлого года, небольшая часть данных потерялась, многое пришлось редактировать вручную.
И, хотя ошибка в коде была выявлена, я решил перейти на более емкие чипы без риска потери данных при перезаписи.
Один из возможных вариантов — использование чипов Mifare 4K, структура которых отличается от 1K только четырехкратным объемом памяти.
Но такие чипы стоят дороже и продолжительность чистки и маркировки с их использованием увеличится.
Другой вариант — использовать чипы серии Ntag (213/215/216).
Структура памяти чипов Ntag достаточно проста – память разделена на страницы по 4 байта, первые 4 и последние 5 страниц зарезервированы для хранения служебной информации, остальное можно использовать.
Чипы серии Ntag различаются объемом памяти, Ntag213 имеет 36 свободных для использования страниц (144 байт), Ntag215 — 126 страниц (504 байт), Ntag216 — 222 страницы (888 байт).
В итоге я реализовал поддержку всех чипов этой серии, хотя оптимальным можно считать Ntag215, памяти которого хватает на 120 марок, а цена довольно низкая (около 0,2$ за чип в виде наклейки или 0,4$).
в виде брелка).
Также по совету SFR я решил отказаться от хранения критичной информации - номера последней свободной страницы в пользу ее бинарного поиска.
Это увеличило время разметки, но повысило надежность работы.
Страница памяти Ntag содержит 4 байта, в которых нужно уместить номер станции – 1 байт и штамп времени – 4 байта.
Проблема решилась записью полного времени инициализации (очистки) чипа на отдельную страницу, а при маркировке только младших 3 байт времени.
Затем при чтении время меток полностью восстанавливается исходя из времени инициализации.
Еще одну страницу в чипе занимает номер чипа и две остаются резервными.
Полученная структура показана ниже:
Использование Ntag позволило решить вопрос с безопасной записью большого количества меток на чип, но возникла другая проблема.
Чипы Ntag требуют большей мощности передатчика, чем Mifare, для той же площади антенны, а чипы в виде брелоков, у которых размер антенны около 2 см^2, могут плохо работать на модуле RC522 в стандартной комплектации.
Решением проблемы стала перепайка дросселей на модуле на более мощные.
При этом дальность срабатывания существенно увеличилась: у чипов Ntag до 2 см, а у Mifare до 3 см.
Но некоторые модули из-за такой пайки стали работать плохо: чипы записывались только в определенном и достаточно непредсказуемом диапазоне расстояний от передающей антенны.
Пришлось зайти в библиотеку Arduino RC522 и найти там параметр усиления, отвечающий за мощность антенны; редактирование его для отдельных станций решило проблему.
Также я освоила ручное изготовление фишек для браслета из наклеек.
На Алибабе продаются готовые и красивые, но площадь антенны у них почти в два раза меньше и марка менее стабильна.
Еще отмечу, что оставил поддержку чипов Mifare 1K; работать с ними можно, но для этого нужно использовать отдельную прошивку, а емкость чипов ограничена 42 марками, но они идут в комплекте с модулями RC522.
Еще одной проблемой, которую пришлось решить в ходе разработки, был неправильный ход часов.
На некоторых станциях часы стали отставать или спешить до 5 минут в сутки.
Я долго не мог понять причину, потом обнаружил, что глючат только станции с печатной платой, изготовленной на заводе, а на вытравленных вручную всё работает нормально.
Я задумался, с чем это может быть связано.
Траки, протравленные вручную, имеют довольно толстые траки из-за обильного лужения и меньшее сопротивление.
Оказалось, что конденсатора на выходе стабилизатора не хватило для развязки источника питания часов по тонким заводским дорожкам.
Я поместил еще один конденсатор рядом с часами, и проблема, по большей части, решилась.
Небольшая часть часов все же работает со сбоями, но я уже отношу это к дефектам дешевых часов с Али; нужно искать надежных поставщиков.
Ну и последнее изменение в схеме — усиление звукового сигнала.
Раньше управление и питание твитера в схеме осуществлялось с вывода микроконтроллера, поэтому было достаточно ограничено по мощности.
Теперь питание поступает напрямую от аккумуляторов, а управление осуществляется через транзистор, что значительно увеличило громкость сигнала.
Все эти изменения теперь учтены и занесены в Gerber-файлы, но около 40 станций я переделал вручную, пришлось выковыривать соединение, перерезать дорожки, вешать транзистор на провода, и были некоторые сломанные станции.
В связи с переходом на другие чипы прошивку базовых станций пришлось существенно изменить, но принцип и логика работы по большей части остались прежними.
Те же режимы энергосбережения, сна, работы, настройки с помощью мастер-чипов.
А вот прошивка интерфейсной станции полностью переработана.
Предыдущий протокол связи, когда данные заливались в COM-порт непрерывным потоком, казался уязвимым: пропущенный байт, и все данные превращаются в тыкву.
Приспосабливаться к существующим протоколам передачи данных показалось скучным, поэтому я изобрел свой велосипед. Передача и прием информации происходит последовательно с использованием пакетов размером до 32 байт. Если передаваемые данные не умещаются в пакет, то передача осуществляется путем последовательной отправки пакетов.
Пакет начинается со стартового байта 0xFE, за которым следует номер команды, длина пакета, данные и в конце контрольная сумма.
Команды выполняются только в том случае, если контрольная сумма и начальные байты верны.
Довольно простой и достаточно надежный.
Соединение установилось, но потребовало написания нормального ПО для компьютера; мои поделки по обработке не подходили для этого.
Этим занялся Семен Якимов, создавший модуль на Python для работы с системой, за что мы ему очень благодарны.
Модуль позволяет осуществлять связь с интерфейсной станцией, передавать и получать данные в удобном формате.
Позже я в первом приближении освоил Python и написал простую штуку на основе этого модуля и PyQt. приложение с графическим интерфейсом , который можно использовать для настройки системы, а также для сбора данных с чипов в виде JSON-файла.
Ну а дальше данные можно обработать с помощью небольших скриптов для соревнований с различными условиями и правилами и представить в удобном виде( туристическая ориентация , Рогейн ).
Но, так или иначе, это требует некоторых навыков, и счастье было бы неполным, если бы не разработчики программы.
СпортОрг , который добавил поддержку Sportiduino (помимо Sportident и SFR).
Программа активно развивается и имеет множество возможностей для судейства стартов по спортивному ориентированию.
Заключение
Таким образом, на данный момент имеется стабильно работающее оборудование и программное обеспечение.Считаю, что цель начинания достигнута: появилась дешевая электронная система маркировки.
Я не собираюсь ничего менять в этой схеме, если только не будет какого-то бага.
Система маркировки разработана и апробирована на большом количестве различных соревнований: спортивное ориентирование, рогейн, марш-бросок, трейл, туристические этапы.
Кроме меня, им пользуются еще несколько человек в разных местах.
Кто-то воспроизвел систему, кто-то внес в нее дополнения, например, радиомодуль или используйте литиевые батареи и Mifare чипсы в качестве основных.
Разработка является открытой и некоммерческой, под лицензией GNU GPLv3. Любой может свободно копировать, воспроизводить, изменять и использовать его.
За последний год ко мне поступило довольно много вопросов о том, продаю ли я станцию.
Нет, я не хочу этого делать.
С другой стороны, я не против, если кто-то займет эту нишу.
Я готов лишь дать советы по сборке и использованию, так как все достаточно просто.
Проект доступен по адресу github , схемы, инструкции и другой полезный материал также находятся там же.
Спасибо за внимание.
Теги: #Сделай сам или Сделай сам #arduino #Разработка для Arduino #RFID #спорт #sportiduino #система электронной отметки
-
Вечеринка Зеленого Яблока
19 Oct, 24 -
Profsoux-2014 - Видео И Краткий Обзор
19 Oct, 24 -
Google Chrome 4.0 Для Разработчиков
19 Oct, 24