Считыватель карточек RFID RC522 в домашнем хозяйстве. Взгляд изнутри: RFID и другие метки

  • Программирование микроконтроллеров
  • Как известно, во многих системах доступа используются карты RFID стандарта EM-Marin с частотой 125 КГц. Не исключением стал и домофон моего дома. Одна проблема – неплохо бы научиться копировать такие карты, ибо ценники на их копирование не радуют. В сети, конечно, существует довольно много схем копировщиков (да и китайцы продают свои копировщики за копейки - правда, они часто при копировании ставят свой пароль на болванки), но почему бы не собрать свой собственный копировщик? Вот об этом и нижеприведённая статья.

    Начинать разработку копировщика стоит с выяснения, а на что вообще можно скопировать такие метки? Почитав форумы, можно узнать, что наиболее распространёнными болванками для копирования являются T5577, T5557, EM4305.

    Теперь нужна схема. Возьмём аналоговую часть такого копировщика у RECTO и подключим её к микроконтроллеру atmega8. Дополним преобразователем уровней для подключения к COM-порту на базе max232 (желающие могут использовать ST232 или ещё что, чтобы подключится по USB, но у меня на компьютере COM-порт есть, как есть и переходник USB-COM, так что у меня такой задачи не стояло).

    Получится вот такая схема:

    Что она из себя представляет? Сдвоенный эмиттерный повторитель, колебательный контур, детектор и RC-фильтры. За счёт того, что RC-фильтры имеют разные постоянные времени, сравнивая между собой уровни напряжения между каскадами можно выделять изменение сигнала RFID-метки. Данной задачей у нас будет заниматься встроенный в atmega8 компаратор. Генерацию 125 КГц сигнала у нас будет обеспечивать встроенный в atmega8 ШИМ-контроллер.

    Комбинация RFID-метка – считыватель образуют трансформатор, где метка является вторичной обмоткой. Передача информации меткой производится путём изменения нагрузки вторичной обмотки. В результате в катушке считывателя (первичной обмотке) изменяется ток. Выделением этих импульсов тока и занимается приведённая выше аналоговая часть схемы. Колебательный контур нужно настроить на максимальное напряжение в контрольной точке, например, сматывая/наматывая витки катушки. Правда, говорят, лучше всё же напряжение немного меньше максимума - стабильнее работает. У меня в контрольной точке около 40 В.

    Копируемая метка использует кодирование типа манчестер . Для того чтобы расшифровать данный код, достаточно по любому изменению фронта сигнала пропускать три четверти периода слота бита и по следующему за ним перепаду сигнала фиксировать значение бита, которое будет соответствовать значению сигнала после перепада. При декодировании стоит задать окно, в которое должен произойти перепад сигнала – не более половины периода слота бита.

    Метод расшифровки манчестерского кодирования и код для этого я взял у Shads . Можно, конечно, было написать свой собственный, но я торопился запустить копировщик - хотелось убедиться, что схема рабочая и приём меток производится. Так этот фрагмент и остался в коде копировщика. Также оказалось, что у меня компаратор настроен инверсно, чем нужно коду декодирования. Изменил в коде. Итак, мы получили последовательности нулей и единиц. Как из них получить код карты?

    А очень просто. Примем, что номер карты по нибблам имеет вид AB CD EF GH IJ . Карта выдаёт вот что:

    1) Девять единиц в начале;
    2) Ниббл A;
    3) Чётность ниббла A (1 бит);
    4) Ниббл B;
    5) Чётность ниббла B (1 бит);

    16) Ниббл I;
    17) Чётность ниббла I (1 бит);
    18) Ниббл J;
    19) Чётность ниббла J (1 бит);
    20) Ниббл чётности колонок для нибблов A B C D E F G H I J;
    21) Бит 0.

    Считываем все 64 бита, расшифровываем и получаем 40 бит кода карты. Логично, что если самому выдать такой код, замыкая катушку карты приложенной к считывателю, мы получим эмулятор карты. Но сейчас нас интересует не он.

    Карту мы читать научились, а вот как передать данные карте? Для этого нужно просто включать или выключать частоту 125 КГц в соответствии с протоколом обмена с картой. На время “молчания” считывателя карта питается запасённой энергией.

    Болванки T5557/T5577 полностью совместимы между собой по протоколам записи, однако, имеют немного разные минимальные и максимальные времена импульсов (к счастью, времена T5557 перекрываются с T5577). У EM4305 протокол записи иной.

    Чтобы записать T5557 я воспользовался кодом BolshoyK . В таблице ниже указаны параметры сигналов для брелока T5557.

    Запись начинается с сигнала StartGape – требуется отключить сигнал 125 КГц примерно на 300 мкс. Это сигнал карте, что сейчас ей начнут передавать данные. Дальше следует передать болванке информацию. Кодирование передаваемых данных – тот же манчестер.

    Болванки T5557/T5577 и EM4305 многофункциональные и умеют разные виды модуляций, поддерживают пароли и ещё много чего. В каждой болванке на борту имеется набор блоков по 32 бита. Назначение этих блоков разное. В некоторых – выдаваемый код ключа (он занимает два блока). В других – конфигурация. В третьих – идентификатор производителя. Мы будем использовать ограниченный функционал, поэтому желающие разобраться, что значат все эти биты, могут заглянуть в документацию к болванкам (я приложил её к архиву).

    Блоки собраны в две страницы (0 и 1).

    В нулевой странице есть блок конфигурации с индексом 0. Его мы и будем задавать. Для T5557/T5577 у нас будут следующие конфигурационные байты: 0x00,0x14,0x80,0x40 в соответствии с таблицей из документации (красным я отметил выбранные единичными битами режимы):

    Таким образом, у нас выбрано: частота передачи данных RF/64 (125 КГц/64), кодирование типа манчестер, выдача блоков до второго (в блоках 1 и 2 у нас будет располагаться код, выдаваемый картой). Перед записью следует отправить код операции (2 бита opcode) и один бит защёлки (lockbit). Коды операции 10b и 11b предшествуют записи данных для страниц 0 и 1 (младший бит задаёт номер страницы, старший - код записи страницы). У нас выдаётся 10b для кода операции (вся работа идёт с нулевой страницей) и 0b для бита защёлки. После передачи всех этих данных необходимо передать трёхбитный адрес записываемой страницы. Все передачи данных для T5557/T5577 ведутся от старшего бита к младшему.

    Задав код карты в блоках 1 и 2 и конфигурацию в блоке 0 можно получить дубликат RFID-метки. Как видите, всё просто.

    Следующий тип болванок – это EM4305. Вот разбираться с записью этой болванки мне пришлось самому. Она также состоит из блоков по 32 бита, но назначение их иное.

    Кодирование передаваемых карте данных – по перепадам за интервал времени. Если перепад за интервал времени был, то это ноль, а если не было - единица. Конфигурационное слово хранится в 4 байте и для себя я определил его так: 0x5F,0x80,0x01,0x00 (кодирование манчестер, RF/64, выдача слова 6). В слова 5 и 6 я записываю код карты (те самые 64 бита, что выдаёт карта). EM4305 требует чтобы передача велась от младшего бита к старшему. Карта понимает, что с ней начинают обмен после выдачи ей комбинации импульсов:

    1. Отключаем поле на 48 мкс.
    2. Включаем поле на 96 мкс.
    3. Выключаем поле на 320 мкс.
    4. Включаем поле на 136 мкс.
    5. Отключаем поле до следующей команды.
    Команда на запись блока карте передаётся так:
    1. Шлём вышеуказанную последовательность импульсов.
    2. Шлём 0b.
    3. Передаём CC0-CC1 и их чётность P. (0101b для записи, см. таблицы ниже).
    4. Передаём адрес блока (см. таблицу), два дополняющих нуля и чётность адреса.
    5. Передаём данные блока (32 бита).

    Формат команды


    Коды команд

    Формат адреса блока

    Таким образом задаётся конфигурация болванки EM4305 и её код.

    Собственно, ничего большего простому копировщику и не требуется.

    Я сделал несколько вариантов копировщика с разными дисплеями. Например, вот копировщик с дисплеем 1602:

    А вот видео работы копировщика на дисплее LPH9157-02.

    Метка EM4100 хранит 64 бита данных, значит, конструкция должна содержать 64-битный сдвиговый регистр, составленный из восьми 8-битных регистров 74HC165. Регистр перезагружается после каждых 64 сдвигов, чтобы сбросить данные и начать сначала. Данные на входах регистра следующие:
    • Паттерн синхронизации: девять единиц
    • Идентификатор производителя/версии: 2 блока по 5 бит, из которых 4 бита - данные, а пятый - четность
    • Уникальный идентификатор: 8 блоков по 5 бит, из которых 4 бита - данные, а пятый - четность
    • Контрольная сумма: 4 бита четности, подсчитанные по столбцам
    • Стоп-бит: «0»

    Даже метки с шифрованием уязвимы для множества атак. Кроме того, становится все легче эмулировать метки на смартфонах с поддержкой NFC (которые обычно работают на 13,56 МГц). Просто правильно напишите приложение для модуляции поля, и вы сможете делать все, что хотите.

    В качестве стандартной отмазки напомню, что автор (И переводчик! - Прим. перев. ) не несет никакой ответствености за последствия использования информации из данной статьи. Читатель должен сам отвечать за все свои действия.

    Корпус

    Иногда очень везет. Красивый корпус не помешал бы именно сейчас, когда прототип закончен, а печатная плата заказана. И именно в это время Флеминг закончил собирать и запустил станок лазерной резки OSAA PhotonSaw . После года работы над проектом лазер готов вырезать свои первые детали. Флемминг и Рун делают последние юстировки и ставят на место алюминиевую крышку лазерного шкафа. Вы можете себе представить, как все мы были рады видеть, что эта штука работает.

    С работающим станком мы получили возможность протестировать наш проект в реальной жизни. Корпус для нашей RFID-метки сделали из 2-миллиметрового огрстекла. Этот корпус - первый объект, сделанный на PhotonSaw, да!

    Родилась идея расположить катушку на внешней стороне корпуса. Сперва было решено использовать половину высоты корпуса, но это не работало на практике (дополнительные отверстия в длинных сторонах, таким образом, не используются). Катушка просто великолепно разместилась по периметру всего корпуса, хотя у меня были сомнения, не будет ли прямоугольная обмотка (105x55 мм) слишком большой для нормальной электромагнитной связи.

    Тестовая катушка была намотана, без всяких расчетов, проводом 0,4 мм в 66 витков. И, очевидно, нам опять повезло, потому что катушка получилась точно такой как надо, индуктивностью 645 мкГн, с подключенной меткой давая резонансную частоту 125,2 кГц. Тест на дверном считывателе показал, что прототип работает просто прекрасно с этой катушкой.

    С катушкой снаружи корпуса толщину последнего можно уменьшить. Внутренняя толщина теперь зависит только от высоты деталей на плате, и с учетом толщины платы должна составлять около 6 мм. Кроме того, было бы хорошо добавить гравировку. Флемминг предложил скруглить боковые стороны корпуса из эстетических и эргономических соображений. Изогнутый корпус также будет лучше защищать боковые стороны катушки, потому что там, где нет сильного натяжения, витки провода любят вылезать наружу.

    Станок PhotonSaw еще не совсем в нормальном состоянии: гравировка на верхней крышке значительно съехала. Необходимо его окончательно отладить перед изготовлением финальной версии корпуса. Изогнутые контуры также подверглись ошибке расчета в программном обеспечении, так как луч не вернулся в начальное положение после прохода замкнутой траектории. Но во всяком случае, кривые выглядят действительно гладкими.

    Сборка печатной платы

    Прибыла заказанная плата:

    Сборка была не очень сложной. На плату по трафарету нанесли паяльную пасту, разместили все детали, а затем запаяли в самодельной печи.

    Через разделительную емкость (47 пФ имеют сопротивление примерно 27 кОм на частоте 125 кГц) и защитные диоды ток поступает на шины питания. Энергии, поступающей с катушки, хватает на поддержание напряжения питания около 1 В. Ток может достигать 250-500 мкА. Удивительно, но микросхемы 74HC, похоже, работают при таком питании. К сожалению, при таком напряжении происходят довольно странные вещи. Микросхемы 74HC имеют внутреннюю схему сброса, и нужно убедиться, что она срабатывает. Обратите внимание, что отключение защитных диодов не помогает. На входах микросхем есть внутренние защитные диоды, которые в этом случае открываются и выполняют ту же работу.

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

    Симптомы наблюдались следующие: метка работает некоторое время, при этом посылая корректные данные. Если катушку убрать от считывателя, а затем вернуть обратно, можете делать ставки, выключится ли при этом метка. Иногда срабатывает, иногда - нет. Отключение ФАПЧ ухудшает ситуацию. Низкое энергопотребление приводит к тому, что ридер время от времени будет принимать данные от выключенной метки. Вот что значит «энергоэффективная система».

    Существует два решения: 1) уменьшить конденсатор в цепи восстановления тактового сигнала до 15 пФ, и 2) включить между питанием и землей резистор 22-100 кОм для сброса лишней энергии. Второй метод приводит к росту утечек во время работы и на самом деле не требуется при уменьшении емкости конденсатора. Тем не менее, он предусмотрен как опция, и это все равно лучше, чем неопределенное состояние микросхем.

    Модуляция током или напряжением

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

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

    Было принято решение перевести модулятор из режима модуляции напряжением в режим модуляции током. Для первого режима резистор находился в цепи стока, а теперь он включен между истоком и землей. На этом резисторе будет падать напряжение затвор-исток, пока не останется значение чуть выше порога открывания транзистора (0,9-1,1 В), которое переведет транзистор в линейный режим. Теперь ток через транзистор будет стабильным, независимо от напряжения на стоке.

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

    Законченная версия 1

    Можно заметить внесенные изменения на печатной плате. У меня не было 15 пФ SMD-конденсатора, пришлось впаять обычный, с ногами. Модулятор оброс дополнительными резисторами на истоках транзисторов. В целом приемлемо для первой версии.

    (картинки кликабельны)





    Видео-демонстрация

    Заключение

    Вы можете подумать, что этот проект, собранный на логике 7400, можно отнести к ретро-схемотехнике, но это не совсем так. Во-первых, современное семейство 74HC не такое уж и старое. Во-вторых, низкопотребляющие схемы всегда актуальны. В-третьих, микросхемы одиночных логических элементов (такие, как использованный триггер Шмитта) часто используются в современных разработках. Часто забывают, что развитие технологий не прекращается и для старых семейств микросхем. Они просто стали менее заметны на фоне общего разнообразия.

    Аналоговая часть оказалась сложнее в разработке, чем цифровая. Частично из-за отсутствия спецификаций, но в основном, за счет множества компромиссов, необходимых для соответствия параметрам, и непредвиденных побочных эффектов. Цифровые конструкции имеют относительно мало вариантов, в то время как аналоговые обычно требуют баланса между различными (и часто противоположными) критериями.

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

    Теперь посмотрим, как этот проект покажет себя на конкурсе 7400 2012 года. Подача заявок на конкурс заканчивается 31 ноября. Пожелаем автору удачи! - Прим. перев.

    Теги:

    • RFID
    • 7400 Contest
    • overengineering
    • логические схемы
    • грабли повсюду
    Добавить метки

    Из всем полюбившейся (по крайней мере, я на это очень надеюсь) серии «Взгляд изнутри» - больше полугода. Не то, чтобы не было, о чём написать или рассказать, просто одолели дела, которые станут предметом одной из следующих моих статей на Хабре (надеюсь, что её не отправят в утиль, так как посвящена она будет не совсем ИТ-тематике). А пока есть свободная минуточка, давайте разберёмся, что же такое RFID (Radio-frequency identification) – к ним примкнут более простые метки – или как один небольшой шаг в технологиях круто изменил жизнь миллионов и даже миллиардов людей по всему миру.

    Предисловие

    Сразу хотелось бы оговориться.

    Перед началом работы над этой статьёй, я очень надеялся, что по микрофотографиям, а особенно по оптике, информации, найденной на просторах Интернета, и некоторому багажу знаний от прошлых публикаций удастся определить, где и какие элементы микросхемы находятся. Хотя бы на «бытовом» уровне: мол, вот это - память, вот это - схема питания, а вот тут происходит обработка информации. Действительно, казалось бы, RFID – простейшее устройство, самый простейший «компьютер», который только можно придумать…

    Однако жизнь внесла свои коррективы и всё, что удалось мне найти: общая схема устройства нового поколения меток , фотографии того, как, например, должна выглядеть память – даже не знаю, почему я не уделил этому внимание (может быть ещё представится возможность исправиться?!), ну и скандалы-интриги-разоблачения процессоров A5 от chipworks .

    Часть теоретическая

    По традиции начнём с некоторой вводной части.
    RFID
    История технологии радиочастотного распознавания – пожалуй, именно так можно назвать все мыслимые и немыслимые варианты RFID (radio-frequency identification) – уходит своими корнями в 40-ые года XX века, когда в СССР, Европе и США активно велись разработки вообще любых видов электронной техники.

    В то время, любое изделие, работающее на электричестве, было всё ещё в диковинку, так что перед учёными лежало не паханое поле: куда не ткни, как в Черноземье, черенок от лопаты – вырастет дерево. Судите сами: свои законы Максвелл предложил всего-навсего полвека назад (в 1884 году). А теории на основе этих уравнений стали появляться спустя 2-3 десятилетия (между 1900 и 1914), в том числе и теории радиоволн (от их открытия, до моделей модуляции сигнала и т.д.). Плюс подготовка и ведение второй мировой войны наложили свой отпечаток на данную область.

    В результате к концу 40-х годов были разработаны системы распознавания «свой-чужой», которые были несколько побольше, чем описанные , но работали фактически по тому же принципу, что и современные RFID-метки.

    Первая демонстрация близких к современных RFID была проведена в 1973 году в Исследовательской Лаборатории Лос Аламоса, а один из первых патентов на подобного рода систему идентификации получен спустя десятилетие – в 1983 году. Более подробно с историей RFID можно ознакомиться на Wiki и некоторых других сайтах ( и ).

    Активные метки за счёт встроенной батарейки имеют существенно больший радиус работы, габариты, более сложную «начинку» (можно дополнить метку термометром, гигрометром, да хоть целый чип GPS-позиционирования) и соответствующую цену.

    Классифицировать метки можно по-разному: по рабочей частоте (LF – низкочастотные ~130КГц, HF – высокочастотные ~14MГц и UHF – ультравысокочастотные ~900МГц), по типу памяти внутри метки (только чтение, однократно записываемая и многократно записываемая). Кстати, так любимый всеми производителями и продвигаемый NFC относится к HF диапазону, который имеет ряд хорошо известных проблем.

    Прочие метки
    К сожалению, стоимость RFID-меток по сравнению с другими видами идентификации довольно высока, поэтому, например, продукты питания и прочие «ходовые» товары мы по-прежнему покупаем с помощью баркодов (или штрих-кодов), иногда QR-кодов, а защиту от краж обеспечивают так называемые противокражные метки (или EAS – electronic article surveillance)

    Самых распространённых три вида (все фото взяты с Wiki):

    Впереди нас ждёт много чудных открытий, подчас совершенно неожиданных и конечно же hard geek porn в формате HD !

    Если кому-то показалось мало теории, добро пожаловать на данный англоязычный сайт .

    Часть практическая

    Итак, какие метки удалось найти в окружающем нас мире:


    Левый столбец сверху вниз: карта московского метро, проездной аэроэкспресс, пластиковая карта для прохода в здание, RFID-метка, представленная компанией Перекрёсток на выставке РосНаноФорум-2011. Правый столбец сверху вниз: радиочастотная EAS-метка, акустомагнитная EAS-метка, бонусный билет на общественный транспорт Москвы с магнитной полосой, RFID-карта посетителя РосНаноФорума содержит даже две метки.

    Первой заявлена карточка московского метрополитена – приступим.

    В круге первом. Билет московского метрополитена
    Сначала вымачиваем карту в обычной воде, чтобы удалить бумажные слои, скрывающие самое сердце данной «метки».


    Раздетая карта московского метрополитена

    Теперь аккуратненько посмотрим на неё при небольшом увеличении в оптический микроскоп:


    Микрофотографии чипа карты для прохода в московский метрополитен

    Чип закреплён довольно основательно и хочу обратить внимание, что все 4 «ноги» присоединены к антенне – это нам пригодится далее для сравнения с другой RFID-меткой. Сложив пластиковую основу пополам в месте, где находится чип, и слегка покачав из стороны в сторону, он легко высвобождается. В итоге имеем чип размером с игольчатое ушко:


    Оптические микрофотографии чипа сразу после отделения от антенны

    Что ж, поиграемся с фокусом:


    Изменение положения фокуса с нижнего слоя на верхний

    Теперь немного интриг.

    Ходят слухи, что Микрон разрабатывает и производит чипы для московского метро собственного силам по сходной технологии Mifare (как минимум, различается крепление к антенне – ножки другой формы). 22 августа без объявления войны и вероломно направил обращение в Микрон за разъяснениями, можно ли где-то в принципе увидеть данный чип, к 3.11 ответа не поступило. Один из журналистов (а именно, Александр Эрлих) на форуме IXBT тоже собирался уточнить данную информацию у представителей Микрона, но на данный момент воз и ныне там, то есть официальные представители Микрон уклоняются от ответа на прямо поставленный вопрос.

    Рассмотренный выше билет, по всей видимости, изготовлен (или только смонтирован на антенну?) на предприятии Микрон (г. Зеленоград) - см. ссылки ниже - по технологии известной в RFID-кругах фирмы NXP, о чём собственно недвусмысленно намекают 3 огромные буквы и год выпуска технологии (а может и год производства) на верхнем слое металлизации чипа. Если полагать, что 2009 относится к году запуска технологии, а аббревиатуру CUL1V2 расшифровать как Circuit ULtralite 1 Version 2 (данное предположение также подтверждается этой новостью), то на сайте NXP можно найти подробное описание данных чипов (последние две строки в списке)

    Кстати, в прошлом году для участников Интернет-олимпиады по Нанотехнологиям была организована экскурсия на завод Микрон (фото- и видео отчёты), поэтому говорить, что там оборудование простаивает смысла нет, но и заявление «дядечки в белом халате», что производят они метки по стандартам 70 нм, я бы поставил под сомнение…

    Согласно статистике, собранной после анализа чипов 109 билетов метро (довольно репрезентативная выборка), согласно нормальному распределению шансы найти «необычный» билет ~109^1/2 или около 10%, но они тают с каждым вскрытым билетиком…

    Внимательный взгляд уже приметил главное отличие двух чипов Mifare – надпись Philips2001. В самом деле, в далёком 1998 году компания Philips купила американского производителя микроэлектроники – Mikron (не путать с нашим, зеленоградским Микроном). А в 2006 году от Philips отпочковалась компания NXP.

    Также несложно заметить пометку CLU1V1C, что, исходя из вышеописанного, означает Circuit ULtralite 1 Version 1C. То есть эта метка является предшественницей Mifare, используемой московским метрополитеном, а, следовательно, совместима с ней по основным параметрам. Однако, как и в предыдущем случае 2001 – это указание на год разработки и внедрения технологии или год производства. Странно, что Аэроэкспресс использует устаревшие метки…

    В круге третьем. Пластиковая карта
    Как-то раз, решил я одной своей знакомой показать статьи и фотографии на Хабрахабре. После чего спросил, а есть ли у неё какая-нибудь ненужная карта для следующей статьи про RFID. Она к тому времени как раз перебралась учиться в EPFL и подарила мне карточку, по которой осуществляется проход в одно из зданий МГУ. Карта, соответственно, без какой-либо маркировки, и я даже не уверен, что на ней записано хоть что-то, кроме обычно ключа для прохода в здание.
    Карточка полностью пластиковая, поэтому сразу кладём её в ацетон буквально на пару десятков минут:


    Принимаем ацетоновые ванны

    Внутри всё довольно стандартно – антенна да чип, правда, он оказался на маленьком кусочке текстолита. К сожалению, без каких-либо опознавательных знаков – типичный китайский noname. Единственное, что можно узнать об этом чипе и карте, что они изготовлены/относятся к некоторому стандарту TK41. Таких карт полно на распродажах типа ali-baba и dealextreme.

    В круге четвёртом. Перекрёсток
    Далее я хочу рассмотреть две метки, представленные на выставке РосНаноФорум 2011. Первую из них представили с большим пафосом, сказав, что это чуть ли не панацея от воров и краж в магазинах. Да и вообще, данная метка позволит полностью перевести магазины на самообслуживание. К сожалению, эффективный менеджер оказался чуть более, чем полностью некомпетентен в вопросах школьной физики. И после предложение проверить эффективность его и метки с помощью сильного магнита, приложенного к метке, быстро замял тему…

    После пары покупок в SmartShop, у меня в распоряжении осталось несколько меток. Очистив одну из них от клея и белого защитного слоя видим следующее:


    Новая метка сети магазинов «Перекрёсток»

    Поступаем так же как и Mifare аккуратно отсоединяем от полимерной основы и антенны и кладём на столик оптического микроскопа:


    Оптические микрофотографии метки, предполагаемой к использованию в SmartShop

    По счастливой случайности (то ли клей подкачал, то ли так задумано), метку удалось оторвать от основы быстро, а поверхность её осталась без каких-либо следов клея. Хотелось бы обратить внимание, что если у Mifare все 4 контакта прикреплены к антенне (по 2 контакта на каждый её конец), то здесь мы видим, что два контакта присоединены к двум небольших площадкам, которые не контактирую с антенной.

    Немножко поиграем с фокусом в разных частях метки:


    Меняем фокусировку…


    Максимальное увеличение оптического микроскопа

    На последнем фото слева вверху, по всей видимости, запечатлён модуль EEPROM памяти, так как он занимает около трети поверхности чипа и имеет «регулярную» структуру.

    Характеристики:
    Частота метки: 125 кГц
    Источник питания: +5 В постоянного тока
    Выводимые данные: последовательно, 2 400 б/с 8N1. Выдается 10-цифровой серийный номер метки.

    Рисунок 1: Рисунок 2:

    Введение

    Данный RFID-считыватель работает с метками частотой 125 кГц в картах размером с кредитную карточку и 125 кГц брелоках (Рисунок 1). При этом используется протокол EM4100 . Когда вы приближаете RFID-метку на близкое расстояние (4-5 см) к катушке считывателя (L1), считыватель считает 10-цифровой уникальный идентификатор метки и передаст его как ASCII символы через последовательных выход со скоростью 2 400 бит в секунду.

    В схему входит сигнализатор, который издает прерывистые звуковые сигналы, когда метка успешно считывается.

    Описание

    Я попытаюсь в нескольких словах объяснить, как работает RFID-считыватель. Контроллер ATtiny13 используется функцию PWM для создания прямоугольного импульсного сигнала частотой 125 кГц. Данный сигнал выходит с вывода PB0. По заднему фронту импульса на выводе PB0 (Логический ноль "0"), транзистор T1 закрыт. Таким образом, катушка L1 возбуждается через резистор R1 (номиналом 100 Ом) от напряжения +5V. Когда импульс на выводе PB0 растет (Логическая единица "1") транзистор T1 открывается и один из выводов катушки L1 соединяется с землей GND. К катушке L1 параллельно подсоединяется конденсатор C2, создавая LC генератор. Данные переключения катушки L1 от логической единицы к логическому нулю происходят 125 000 раз в секунду (125 кГц).

    Рисунок 3: Колебания сигнала частотой 125 кГц, которые передаются от катушки L1 и конденсатора C2.

    RFID-считыватель передает энергию к транспондеру (метке) путем создания электромагнитного поля. Передача энергии между RFID-считывателем и меткой происходит на том же принципе, что и работа трансформаторов, преобразующих напряжение 220 В сети переменного тока в 12 В переменного тока, благодаря магнитному полю, которое создает первичная обмотка. В нашем случае первичная обмотка – это RFID-считыватель, а вторичная обмотка – это RFID-метка. Разница лишь в том, что в схеме RFID-считывателя нет стального магнитопровода между двумя катушками (одна катушка располагается на стороне считывателя, а другая катушка в RFID-метке). Компоненты D1 ,C3 и R5 составляют демодулятор AM сигнала (AM = Амплитудная модуляция).

    Передача данных между метками и считывателем.

    Как метки передают данные в считыватель? Очень просто! Когда метка хочет передать логический ноль "0" в считыватель, она прилагает "нагрузку" к своей линии источника питания для получения большей энергии из считывателя. Это вызывает небольшое падение напряжения на стороне RFID-считывателя. Этот уровень напряжения является логическим нулем "0" (смотрите рисунок 4). Одновременно с передачей считывателем сигнала частотой 125 кГц, он считывает напряжение передаваемого сигнала через фильтры D1, C3 и R5, C1. Когда метка снижает напряжение, как было сказано ранее, считыватель считывает данное падение напряжение как логический ноль "0". Если метка не требует дополнительной энергии, она не вызывает падение напряжения. Это соответствует логической единице "1" (Рисунок 3). Длина "единиц" или "нулей" зависит от скорости передачи последовательной передачи данных. Например, для несущей частоты 125 кГц мы не получаем скорость передачи данных 125 000 бит в секунду! Передача данных от метки в считыватель изменяется от 500 до 8 000 бит в секунду.

    Рисунок 4: Снимок экрана передаваемых данных...10101... Рисунок 5


    • 125 кГц RFID-метка передает 64 бита.
      1. Первые 9 бит – это стартовые биты передачи (всегда "1").
      2. Следующие 4 бита – это младшие биты идентификатора пользователя (D00,..., D03).
      3. Следующий 1 бит (P0) – это бит контроля четности предыдущих 4 бит.
      4. Следующие 4 бита – это старшие биты идентификатора пользователя (D04,..., D07).
      5. Следующий 1 бит (P1) – это бит контроля четности предыдущих 4 бит.
      6. Следующие 4 бита – это первая часть 32-битного серийного номера метки (D08,..., D11).
      7. Бит PC0 – это бит контроля четности битов D00, D04, D08, D12, D16, D20, D24, D28, D32 и D36 (биты располагаются в одной колонке).
      8. Биты PC1, PC2, PC3 представляют собой биты четности следующих трех колонок.

    Верификация данных выполняется с помощью контроллера ATtiny13, путем вычисления бита контроля четности каждой строки и каждой колонки с битами четности, которые получены в передаваемых данных RFID-метки.

    Изготовление катушки

    Катушка имеет диаметр 120 мм и 58 витков. На всякий случай, оставьте немного медного провода для дополнительных 2-3 витков (всего 60-61 витков). Для достижения максимального расстояния между RFID-меткой и считывателем (между меткой и антенной-катушкой считывателя) вам необходимо откалибровать катушку. Если подключить осциллограф в общую точку соединения R1 и L1 вы увидите место, помеченное красным кружком на рисунке слева. Это означает, что катушка L1 должна быть откалибрована.

    Как откалибровать катушку L1?

    Включите RFID-считыватель:

    1. После подключения щупа осциллографа в общую точку R1, L1 попытайтесь медленно удалить или добавить немного медной проволоки (увеличить или уменьшить количество витков) катушки, пока шум не будет устранен.

    2. Если вы не имеете осциллограф, тогда попытайтесь переместить RFID-метку близко к катушке L1, пока метка не будет распознана считывателем. Если ваша метка будет обнаружена на расстоянии 2 см от катушки L1, тогда попытайтесь добавить несколько витков медной проволоки для катушки L1, чтобы убедиться в обнаружении метки на более длинном расстоянии (например, 3 см).

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

    Я изготовил катушку L1 диаметром 120 мм с 58 витками, но впоследствии захотел сделать ее более меньшего размера. Поэтому я согнул катушку пополам так, чтобы она стала похожа на "цифру восемь" (по форме напоминает восьмерку) и выполнил повторную калибровку. Таким образом, катушка L1 на рисунках фактически имеет диаметр менее 120 мм.

    Катушка L1 на рисунке имеет диаметр 60 мм и почти 116 витков.

    Программирование ATtiny13

    Набор битов конфигурации (фьюзов) для ATtiny13: High Fuse: 0x1F и Low Fuse: 0x7A . Данный набор настроек ATtiny13 работает с внутренним генератором частотой 9.6 МГц. Функция деления на 8 системного тактового генератора отключена.

    Прошивка версии v1.00 занимает 1024 байт и занимает 100% Flash-памяти контроллера ATtiny13. Возможно переход на любой другой 8-выводный AVR, такой как ATtiny85, будет хорошей идеей, если вы захотите добавить некоторые функции в исходный программный код.

    Проект спроектирован: Вассилис Серасидис (Vassilis Serasidis ) 18 августа 2012 года
    Язык программирования: С
    Среда разработки:
    Микроконтроллер: ATtiny13 (внутренний генератор 9.6 МГц)

    Список радиоэлементов

    Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
    IC1 МК AVR 8-бит

    ATtiny13

    1 В блокнот
    IC2 Операционный усилитель

    LM358

    1 В блокнот
    IC3 Линейный регулятор

    LM78L05

    1 В блокнот
    T1 MOSFET-транзистор

    BS170

    1 В блокнот
    T2 Биполярный транзистор

    BC547B

    1 В блокнот
    D1 Выпрямительный диод

    1N4148

    1 В блокнот
    C1 Конденсатор 12 нФ 1 В блокнот
    C2 Конденсатор 1.5 нФ 1 В блокнот
    C3 Конденсатор 4.7 нФ 1 В блокнот
    C4, C5 Электролитический конденсатор 100 мкФ 2 В блокнот
    C6 Конденсатор 100 нФ 1 В блокнот
    R1 Резистор

    100 Ом

    1 В блокнот
    R2 Резистор

    1 кОм

    1 В блокнот
    R3 Резистор

    390 кОм

    1 В блокнот
    R4, R8 Резистор

    33 кОм

    2 В блокнот
    R5 Резистор

    270 кОм

    1 В блокнот
    R6 Резистор
    Метка EM4100 хранит 64 бита данных, значит, конструкция должна содержать 64-битный сдвиговый регистр, составленный из восьми 8-битных регистров 74HC165. Регистр перезагружается после каждых 64 сдвигов, чтобы сбросить данные и начать сначала. Данные на входах регистра следующие:
    • Паттерн синхронизации: девять единиц
    • Идентификатор производителя/версии: 2 блока по 5 бит, из которых 4 бита - данные, а пятый - четность
    • Уникальный идентификатор: 8 блоков по 5 бит, из которых 4 бита - данные, а пятый - четность
    • Контрольная сумма: 4 бита четности, подсчитанные по столбцам
    • Стоп-бит: «0»

    Даже метки с шифрованием уязвимы для множества атак. Кроме того, становится все легче эмулировать метки на смартфонах с поддержкой NFC (которые обычно работают на 13,56 МГц). Просто правильно напишите приложение для модуляции поля, и вы сможете делать все, что хотите.

    В качестве стандартной отмазки напомню, что автор (И переводчик! - Прим. перев. ) не несет никакой ответствености за последствия использования информации из данной статьи. Читатель должен сам отвечать за все свои действия.

    Корпус

    Иногда очень везет. Красивый корпус не помешал бы именно сейчас, когда прототип закончен, а печатная плата заказана. И именно в это время Флеминг закончил собирать и запустил станок лазерной резки OSAA PhotonSaw . После года работы над проектом лазер готов вырезать свои первые детали. Флемминг и Рун делают последние юстировки и ставят на место алюминиевую крышку лазерного шкафа. Вы можете себе представить, как все мы были рады видеть, что эта штука работает.

    С работающим станком мы получили возможность протестировать наш проект в реальной жизни. Корпус для нашей RFID-метки сделали из 2-миллиметрового огрстекла. Этот корпус - первый объект, сделанный на PhotonSaw, да!

    Родилась идея расположить катушку на внешней стороне корпуса. Сперва было решено использовать половину высоты корпуса, но это не работало на практике (дополнительные отверстия в длинных сторонах, таким образом, не используются). Катушка просто великолепно разместилась по периметру всего корпуса, хотя у меня были сомнения, не будет ли прямоугольная обмотка (105x55 мм) слишком большой для нормальной электромагнитной связи.

    Тестовая катушка была намотана, без всяких расчетов, проводом 0,4 мм в 66 витков. И, очевидно, нам опять повезло, потому что катушка получилась точно такой как надо, индуктивностью 645 мкГн, с подключенной меткой давая резонансную частоту 125,2 кГц. Тест на дверном считывателе показал, что прототип работает просто прекрасно с этой катушкой.

    С катушкой снаружи корпуса толщину последнего можно уменьшить. Внутренняя толщина теперь зависит только от высоты деталей на плате, и с учетом толщины платы должна составлять около 6 мм. Кроме того, было бы хорошо добавить гравировку. Флемминг предложил скруглить боковые стороны корпуса из эстетических и эргономических соображений. Изогнутый корпус также будет лучше защищать боковые стороны катушки, потому что там, где нет сильного натяжения, витки провода любят вылезать наружу.

    Станок PhotonSaw еще не совсем в нормальном состоянии: гравировка на верхней крышке значительно съехала. Необходимо его окончательно отладить перед изготовлением финальной версии корпуса. Изогнутые контуры также подверглись ошибке расчета в программном обеспечении, так как луч не вернулся в начальное положение после прохода замкнутой траектории. Но во всяком случае, кривые выглядят действительно гладкими.

    Сборка печатной платы

    Прибыла заказанная плата:

    Сборка была не очень сложной. На плату по трафарету нанесли паяльную пасту, разместили все детали, а затем запаяли в самодельной печи.

    Через разделительную емкость (47 пФ имеют сопротивление примерно 27 кОм на частоте 125 кГц) и защитные диоды ток поступает на шины питания. Энергии, поступающей с катушки, хватает на поддержание напряжения питания около 1 В. Ток может достигать 250-500 мкА. Удивительно, но микросхемы 74HC, похоже, работают при таком питании. К сожалению, при таком напряжении происходят довольно странные вещи. Микросхемы 74HC имеют внутреннюю схему сброса, и нужно убедиться, что она срабатывает. Обратите внимание, что отключение защитных диодов не помогает. На входах микросхем есть внутренние защитные диоды, которые в этом случае открываются и выполняют ту же работу.

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

    Симптомы наблюдались следующие: метка работает некоторое время, при этом посылая корректные данные. Если катушку убрать от считывателя, а затем вернуть обратно, можете делать ставки, выключится ли при этом метка. Иногда срабатывает, иногда - нет. Отключение ФАПЧ ухудшает ситуацию. Низкое энергопотребление приводит к тому, что ридер время от времени будет принимать данные от выключенной метки. Вот что значит «энергоэффективная система».

    Существует два решения: 1) уменьшить конденсатор в цепи восстановления тактового сигнала до 15 пФ, и 2) включить между питанием и землей резистор 22-100 кОм для сброса лишней энергии. Второй метод приводит к росту утечек во время работы и на самом деле не требуется при уменьшении емкости конденсатора. Тем не менее, он предусмотрен как опция, и это все равно лучше, чем неопределенное состояние микросхем.

    Модуляция током или напряжением

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

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

    Было принято решение перевести модулятор из режима модуляции напряжением в режим модуляции током. Для первого режима резистор находился в цепи стока, а теперь он включен между истоком и землей. На этом резисторе будет падать напряжение затвор-исток, пока не останется значение чуть выше порога открывания транзистора (0,9-1,1 В), которое переведет транзистор в линейный режим. Теперь ток через транзистор будет стабильным, независимо от напряжения на стоке.

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

    Законченная версия 1

    Можно заметить внесенные изменения на печатной плате. У меня не было 15 пФ SMD-конденсатора, пришлось впаять обычный, с ногами. Модулятор оброс дополнительными резисторами на истоках транзисторов. В целом приемлемо для первой версии.

    (картинки кликабельны)





    Видео-демонстрация

    Заключение

    Вы можете подумать, что этот проект, собранный на логике 7400, можно отнести к ретро-схемотехнике, но это не совсем так. Во-первых, современное семейство 74HC не такое уж и старое. Во-вторых, низкопотребляющие схемы всегда актуальны. В-третьих, микросхемы одиночных логических элементов (такие, как использованный триггер Шмитта) часто используются в современных разработках. Часто забывают, что развитие технологий не прекращается и для старых семейств микросхем. Они просто стали менее заметны на фоне общего разнообразия.

    Аналоговая часть оказалась сложнее в разработке, чем цифровая. Частично из-за отсутствия спецификаций, но в основном, за счет множества компромиссов, необходимых для соответствия параметрам, и непредвиденных побочных эффектов. Цифровые конструкции имеют относительно мало вариантов, в то время как аналоговые обычно требуют баланса между различными (и часто противоположными) критериями.

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

    Теперь посмотрим, как этот проект покажет себя на конкурсе 7400 2012 года. Подача заявок на конкурс заканчивается 31 ноября. Пожелаем автору удачи! - Прим. перев.

    Теги: Добавить метки



    Есть вопросы?

    Сообщить об опечатке

    Текст, который будет отправлен нашим редакторам: