Файлы DLL

RFID –это просто. Реализация собственного RFID транспондера и ридера

RFID –это просто. Реализация собственного RFID транспондера и ридера

Схема эмулятора RFID транспондера стандарта EM-Marine (EM4100).
Бесконтактные карты стандарта Em-Marine являются на сегодняшний день наиболее популярным средством идентификации в нашей стране и используются для идентификации пользователей в системах контроля и управления доступом (СКУД).
Второй, не менее популярной, областью применения карт Em-Marine является их использование в системах логического доступа при авторизации пользователей по ID номеру карты в операционной системе компьютера и рабочих приложениях и тп.

Карты и брелки Em-Marine.
Соответственно подобные системы идентификации очень распространены и могут представлять интерес для реализации собственных систем идентификации и автоматизации. Поскольку протокол обмена и аппаратная часть подобных низкочастотных систем является более простой для самостоятельной реализации собственных устройств большинство радиолюбительских конструкций тематики RFID посвящена низкочастотным системам.

Рабочая частота карт Em-Marine составляет 125 КГц. Для их чтения используются специализированные считыватели бесконтактных карт (считыватели RFID). Взаимодействие идентификатора с таким считывателем осуществляется дистанционно.
Вариантов внешнего исполнения данных идентификаторов существует огромное количество: пропуска Em-Marine изготавливаются в виде тонких и толстых карт, браслетов для аквапарков, различных брелоков, радио-меток для интеграции в RFID-изделия.
Для стандарта транспондеров EM4100 карта содержит 64 бита данных, при этом карты, как правило, не перезаписываемые. Для удобства регистрации карт код, записанный в карте, продублирован печатью на одной из сторон карты. Кодировка передаваемых транспондером данных - манчестер кодирование. При этом периоды сигнала передаваемого транспондером являются кратными частоте 125Кгц - частота сигнала считывателя транспондеров. Сами транспондеры реализованы без внешнего питания (пассивный тэг), питание осуществляется за счет контура LC (катушка и конденсатор) при попадании тэга в зону действия поля считывателя карт. Тактирование транспондера также осуществляется сигналом считывателя - 125Кгц. Поэтому параметры результирующего сигнала в манчестер кодировке являются кратными сигналу 125Кгц.

Схема взаимодействия транспондера и считывателя RFID.
Для более полного понимания рассмотрим структуру пакета RFID транспондера формата EMMarine EM4100. Приведено описание (на английском, взято из анноутов) формата пакета транспондера.
“…….EM4100 compatible RFID transponders carry 64 bits of Read Only memory. This means that information can be read from the Tag but no data can be changed, or new data written to the card once the card has been programmed with the initial data. The format of the data is as shown here.
1 1 1 1 1 1 1 1 1 9 bit header bits, all 1"s
8 bit version number D00 D01 D02 D03 P0
or customer ID.
D04 D05 D06 D07 P1
D08 D09 D10 D11 P2 Each group of 4 bits
D12 D13 D14 D15 P3 is followed by an Even 32 Data Bits
D16 D17 D18 D19 P4 parity bit
D20 D21 D22 D23 P5
D24 D25 D26 D27 P6
D28 D29 D30 D31 P7
D32 D33 D34 D35 P8
D36 D37 D38 D39 P9
4 column Parity bits PC0 PC1 PC2 PC3 S0 1 stop bit (0)
The first 9 bits are logic 1“.
Соответственно мы имеем 9 стартовых бит пакета (всегда логическая 1), 11 групп по 4 бит данных с 1 битом четности по строке, 4 бита четности по столбцам в конце пакета, завершающий бит (всегда 0).
Для примера возьмем транспондер с данными номера 06001259E3.
1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 1 1 0 0 1 0 00
0 6 0 0 1 2 5 9 E 3

Байт с данными 0x06 считается номером версии. На картах EM-Marine, которые попадались мне, выбиты десятичные значения соответствующие последним 3 байтам пакета. В любом случае нам нужно будет для реализации воспроизводить все 64 бита пакета согласно данному описанию.
Теперь обратимся внимательно к описанию модуляции данных транспондера. Данные взяты из анноута AN680. На рисунке сделал отметки красным относительно интересующих нас диаграмм.

Теперь подробнее опишем нужные нам диаграммы. Сигнал CLK тактирования - это и есть сигнал считывателя RFID, о чем уже было сказано ранее. Данные в кодировке NRZ следует подготовить транспондеру в соответствии с записанными данными пакета (64 бит). Видно, что реализация кодирования NRZ по пакету транспондера элементарная и требует минимальных затрат ресурсов. Собственно разбираем пакет на битовый поток и меняем логическое значения сигнала по 0 и 1 в данных и все. Для получения результирующего сигнала делаем программно XOR текущего состояния сигнала в формате NRZ и CLK тактирующего сигнала считывателя. В итоге получаем манчестер кодирование результирующего сигнала. Подробнее про манчестер кодирование описывать не буду - данные можно найти в отдельных анноутах. Для более подробного описания методов модуляции можно ознакомиться с данными из “Modulation Methods H.R. Walker Data Systems 05/01/04(reviewed 4/18/10)”, мною изучались именно данные примеры. Главное, что с минимальными затратами ресурсов мы можем таким образом реализовать транспондер формата EM-Marine. Для примера можно взять контроллер AVR серии tiny45 (можно и на tiny13 сделать). На контроллере tiny45 тестировалось поскольку именно такой оказался в наличии для экспериментов.
Теперь представим функциональную схему транспондера на основе модели в Proteus для контроллера tiny45.

Функциональная схема транспондера в Proteus.

Вот так выглядит сигнал генерируемый транспондером. Красным отмечено начало пакета.
По схеме видно, что ножка контроллера T0 (PORTB.2) используется для подачи тактового сигнала для 8 битного таймера TIMER0. В программе реализовано прерывание по совпадению на таймере TIMER0 (TIM0_COMPA). Тактирование установлено от внешнего сигнала для данного таймера. Для нас тактовым сигналом является 125Кгц от считывателя карт. На схеме удалено все, что касается питания контроллера и цепей тактирования от считывателя. В реальной схеме сам контроллер тактируется от кварца 4 Мгц установленного между 2 и 3 ножкой контроллера. Также можно добавить блокировочные конденсаторы для кварца по 22 pF на данных ножках контроллера.
Настройки симуляции Proteus для контроллера указанны следующим образом:

При программировании контроллера tiny45 фьюзы (биты конфигурации) устанавливаем таким же образом, как указано на рисунке.2. Для тактирования контроллера используется кварц 4 Мгц.
Относительно реализации внешней схемы обвязки контроллера рассмотрим данный вопрос подробнее. Для примеров были взяты материалы RFID Handbook (E2E_chapter03-rfid-handbook) где описываются фундаментальные принципы построения RFID систем. Сам документ прилагается к статье. Рассмотрим пример схемы пассивного транспондера (часть схемы на странице 46). Для понимания я сделал пометки на схеме красным цветом.
Видно, что мы имеем приемный контур на L1C1, который служит для питания схемы транспондера и тактирования. Все что касается счетчика-делителя IC1(4024), логических элементов IC3 (7400) можем смело выкидывать - нам это не потребуется. Делитель для таймера реализован настройками таймера без внешних делителей - счетчиков, логическая часть также реализована программно. Однако данный пример позволяет более полно понять работу пассивной схемы транспондера. Максимальное расстояние считывания для транспондера данного формата составляет 200см. В реальности большинство схем работает на расстояниях 2-10см. Параметры контура емкости и индуктивности LC подбираются максимально точно на резонансную частоту 125Кгц. Для примера использовался контур с емкостью 1nF и катушкой 60 витков на оправке диаметром 50мм проволокой ПЭВ 0.2. Рассчитать нужный контур можно в специальной программе (можно рассчитать контур для прямоугольно катушки, печатной и тп.). Главное подобрать точные номиналы под частоту 125 Кгц иначе расстояние считывания и чувствительность схемы значительно ухудшатся. При плохо настроенных контурах будет работать только при поднесении катушки транспондера вплотную к считывателю. Устройство работает по принципу Full Duplex (FDX) - генерация данных транспондера непрерывно при наличии питания схемы. Тактирование схемы от считывателя и передача данных осуществляется непрерывно. Некоторые схемы транспондеров используют схему работы HDX (Half Duplex) - считыватель излучает в импульсном режиме, транспондер передает данные в промежутках данных импульсов зарядки от считывателя. Это относится, например к TIRIS транспондерам от Texas Instruments.

Схема пассивного транспондера на основе схемы из RFID Handbook.


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



Как вам эта статья?

После нескольких лет работы по RFID тематике и разработки разнообразных считывателей для моделей транспондеров популярных стандартов типа Mifare, EMMARINE, TIRIS… меня часто начал озадачивать такой вопрос - буквально в последний год широкую популярность приобрели разного рода эмуляторы под тэги популярных протоколов и разнообразные копировальщики ключей/брелков.

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

Безусловно данная идея не решает глобальных проблем защищенности новой системы и может быть проанализирована другими разработчиками при наличии оборудования, однако суть в том, что все это не совпадает с существующими стандартами и все железки копировальщиков не позволят по-быстрому скопировать и воссоздать подобный алгоритм. Разумеется подобная система не преподносится тут не как полное решение проблем безопасности, а как опыт адаптации RFID под закрытую систему. Хорошим плюсом в вопросе безопасности среди прочих подобных беспроводных систем является сама технология низкочастотных RFID - она не позволяет считать тэги на большом расстоянии. Пассивные тэги достаточно маломощны и нуждаются для своего питания в достаточно мощном генераторе считывателя, особенности распространения радиоволн на данных частотах также ограничивают пределы работы данной системы. Реальная дальность считывания транспондеров редко превышает 20см для 125 Кгц стандартов типа EmMarine, скажем стандарта EM4001, для других протоколов типа Mifare (13,56Мгц) может быть побольше (1,5 метра для iso15693). Можно добиться большего расстояния считывания для низкочастотных ридеров если увеличить размеры катушки и напряжение питания, соответственно и мощность ридера. Однако такие системы имеют громоздки и как правило их тяжело сделать портативными. Как правило, такие системы реализуются только стационарно - скажем для автомобилей.

Итак, теперь собственно по архитектуре нашей RFID системы. Для экспериментов был выбран контроллер atmel atmega8. Для целей изготовления транспондера это кажется несомненным излишеством. Однако в данном случае решалась первостепенная задача разработки нового интерфейса на готовой отладочной платке c atmega с последующим портированием данного кода на более дешевые контроллеры типа tiny13.

Для транспондера алгоритм работы был построен на основе режима ШИМ генерации при помощи таймера T1 в режиме CTC с прерыванием и сбросом по совпадению с OCR1. Данные для передачи транспондера считываются из EEPROM при включении питания контроллера. Всего транспондер передает 10 байт. Содержимое EEPROM транспондера можно видеть на рисунке 1 . Первый байт 0xE7 является обязательным заголовком пакета, так как его наличие проверяется в первую очередь при разборе пакета считывателем. Первые 8 байт являются содержимым пакета транспондера, последние 2 байта содержат контрольную сумму CRC16 первых восьми байт пакета. Для примера в нашем транспондере были записаны такие данные - пакет 0xE7,0x05,0xE8,0x93,0x43,0x7F,0x20,0xFF и соответственно контрольную сумму 0xF5 0xA8. Для изготовления собственного уникального транспондера нужно кроме первого байта 0xE7 записать семь следующих байт в EEPROM, после чего рассчитать контрольную сумму для первых восьми байт. После этого записать в EEPROM два байта CRC16 в конце пакета. Первый байт оставляем без изменений - 0xE7. При включении транспондера данные этих байт разбиваются по битам и кодируются соответствующей длиной импульса в соответствии со значением регистра OCR. Для передачи используются 2 частоты 2Кгц и 5Кгц для передачи логических “0” и “1”. Кроме того данные разделяются импульсами синхронизации - стартовые метки пакетов.

Рис.1

Рис.2

Схему транспондера можно увидеть на рисунке 3 . Частота задающего генератора 8Мгц. Питание контроллера +5В. Можно использовать контроллер mega8 с маркировкой “L” тогда питание можно осуществлять от литиевой батарейки 3в (параметры для такого чипа +2,7…. +3,5). Вместо данного транзистора можно использовать любой другой маломощный NPN транзистор. Катушка транспондера была намотана на оправке диаметром 50мм проводом 0,22мм и насчитывает 50 витков. На данный момент транспондер сделан активным - с внешним питанием. На следующем этапе планируется сделать пассивный вариант транспондера, что достаточно просто - сделать развязку для питания от данной катушки, добавить диоды моста выпрямителя и стабилизатор.

Рис.3

Теперь поговорим о схеме считывателя для данного транспондера. Схема была адаптирована на основе раннее использованного считывателя для карт EMMARINE. Часть схемы с генератором на 74hc4060 можно на данном этапе смело удалять, так как пока мы используем активную метку.

Однако эта часть схемы нам понадобится в дальнейшем, когда мы будем делать пассивную метку и нам потребуется получить питание от считывателя. В остальном схема не имеет существенных отличий от схемы считывателя для EMMARINE: пассивный пиковый детектор - фильтр - усилитель - компаратор. Схема имеет максимально возможную простоту и позволяет считывать данные транспондера на расстоянии 10-12см при хорошо настроенных контурах.

Можно еще дальше упрощать схему оставив только детектор и фильтр, поставить один транзистор на выходе который будет играть роль компаратора, но я не стал так делать. На выходе мы получаем двоичный сигнал прямоугольной формы в соответствии с кодированными длительностями импульсов передаваемых транспондером. Допустимые отклонения номиналов элементов при котором схема работоспособна 5-10%. Питание контроллера и операционника +5В. Частота кварца задающего генератора контроллера 12Мгц. Выход компаратора на LM358 подключен к ножке внешнего прерывания контроллера INT0. В программе контроллера настроен вызов прерывания по нарастающему фронту на ножке внешнего прерывания INT0.

В обработчике прерывания происходит проверка синхронизирующих импульсов а затем проверка заголовка пакета и запись содержимого в буфер контроллера. Данные считанных пакетов передаются по интерфейсу RS232 на ПК. Для настройки терминалки указываем следующие параметры: скорость 57.6Kb/s, 8 бит данных, 1стоп бит, без контроля четности. При приеме пакета контроллер рассчитывает контрольную сумму принятых байт и передает данные в терминалку (пакет и CRC). В случае совпадения контрольных сумм расчитанной контроллером и принятой в пакете выводится сигнал на ножку PORTB.0 (14) контроллера (LED1 на схеме). Можно подключить в данную точку пищалку со встроенным генератором или светодиод через сопротивление. При считывании корректного ключа контроллер запрещает внешние прерывания и делает задержку 1с перед следующим считыванием.

Предусмотрен также режим работы данного считывателя в качестве основы RFID замка. Для этого необходимо в EEPROM контроллера считывателя записать полностью байты дампа транспондера - 10 байт. Данные пишутся в EEPROM считывателя точно также, как в EEPROM транспондера. В данном случае при считывании очередного транспондера и совпадении его с записанным в EEPROM считывателя выводится сигнал на ножку PORTB.1 (15) контроллера (LED2 на схеме). В данную точку можно подключить светодиод через сопротивление или выходной ключ (транзистор) на реле исполнительного устройства. Теперь мы получили RFID замок под конкретный ключ и обычный считыватель в одном флаконе.

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

Данный проект был сделан по просьбе друга для установки на дверь в складское помещение. В дальнейшем было изготовлено ещё несколько по просьбе друзей и знакомых. Конструкция оказалась простой и надёжной. Работает данное устройство так: пропускает только те RFID-карты, которые были заранее занесены в память устройства.

Основные характеристики контроллера доступа:

RFID-карты формат EMmarin 125кгц

Микроконтроллер ATtiny13

Количество карт/брелков - 10.
Кнопка "OPEN" нормально разомкнутая, защищена от залипания.
Выход управления замком, сильноточный полевой транзистор, режим работы на защёлку (включается на время).

Питание - 12в.
Потребление в дежурном режиме - 35 мА.
Количество карт/брелков доступа - 10 шт.
Длина связи с кнопкой "OPEN" - 10 метров.
Тип выхода управления замком - открытый сток (мощный полевой транзистор, ток до 2А).

Принципиальная схема контроллера ограничения доступа на RFID-картах 125КГц (Em-Marin) на 10 карт (на микроконтроллере ATtiny13):

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

Внешний вид собранного RFID-валидатора:

Установка Fuse-битов в PonyProg:

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

Инструкция по программированию

Рабочий режим - при подачи 12В на контроллер светодиод мигает 1Гц.
Режим программирования - светодиод мигает 2Гц.
При нажатии на кнопку "OPEN" серия коротких звуковых сигналов во временя открытия замка.

Звуковые сигналы

1 короткий сигнал - карта или брелок записан в память контроллера.
2 коротких сигнала - карта или брелок уже записан в памяти контроллера.
5 коротких сигнала - выход из режима программирования.
1 длинный сигнал - память карт-ключей стерта из контроллера.
Непрерывные короткие сигналы - память карт/ключей заполнена, максимально 10шт. (требуется отключение питания контроллера).

Запись МАСТЕР-КАРТЫ и времени открывания замка

1 - Выключить питание контроллера.
2 - Нажать кнопку "OPEN"
3 - Удерживая кнопку подключить питание к контроллеру, через 5 сек. контроллер "ПИСКНЕТ", светодиод будет мигать с частотой 2 Гц.
4 - Отпустить кнопку.
5 - Поднести в зону считывания карту или брелок, раздастся одиночный звуковой сигнал, Мастер-карта или брелок ЗАПИСАН, при этом запишется время открытия замка 1 сек.

6 - Удерживая карту или брелок в зоне считывания - считаем звуковые сигналы. Кол-во определяет требуемое время отрывания замка, приращение 1 сек., но не более 32 сек.
7 - Отключаем питание контроллера или выдерживаем паузу 30 сек.

Стирание всей памяти карт-брелков

1 - Рабочий режим.
2 - Нажимаем кнопку "OPEN" и удерживая подносим к считывателю МАСТЕР-карту или брелок и держим, через 5 сек раздастся продолжительный звуковой сигнал - память карт/брелков стёрта.
3 - Отпускаем кнопку отнимаем карту или брелок.

После нескольких лет работы по RFID тематике и разработки разнообразных считывателей для моделей транспондеров популярных стандартов типа Mifare, EMMARINE, TIRIS… меня часто начал озадачивать такой вопрос – буквально в последний год широкую популярность приобрели разного рода эмуляторы под тэги популярных протоколов и разнообразные копировальщики ключей/брелков.

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

Безусловно данная идея не решает глобальных проблем защищенности новой системы и может быть проанализирована другими разработчиками при наличии оборудования, однако суть в том, что все это не совпадает с существующими стандартами и все железки копировальщиков не позволят по-быстрому скопировать и воссоздать подобный алгоритм. Разумеется подобная система не преподносится тут не как полное решение проблем безопасности, а как опыт адаптации RFID под закрытую систему. Хорошим плюсом в вопросе безопасности среди прочих подобных беспроводных систем является сама технология низкочастотных RFID – она не позволяет считать тэги на большом расстоянии.

Пассивные тэги достаточно маломощны и нуждаются для своего питания в достаточно мощном генераторе считывателя, особенности распространения радиоволн на данных частотах также ограничивают пределы работы данной системы. Реальная дальность считывания транспондеров редко превышает 20см для 125 Кгц стандартов типа EmMarine, скажем стандарта EM4001, для других протоколов типа Mifare (13,56Мгц) может быть побольше (1,5 метра для iso15693). Можно добиться большего расстояния считывания для низкочастотных ридеров если увеличить размеры катушки и напряжение питания, соответственно и мощность ридера. Однако такие системы имеют громоздки и как правило их тяжело сделать портативными. Как правило, такие системы реализуются только стационарно – скажем для автомобилей.

Итак, теперь собственно по архитектуре нашей RFID системы. Для экспериментов был выбран контроллер atmel atmega8. Для целей изготовления транспондера это кажется несомненным излишеством. Однако в данном случае решалась первостепенная задача разработки нового интерфейса на готовой отладочной платке c atmega с последующим портированием данного кода на более дешевые контроллеры типа tiny13. Для транспондера алгоритм работы был построен на основе режима ШИМ генерации при помощи таймера T1 в режиме CTC с прерыванием и сбросом по совпадению с OCR1. Данные для передачи транспондера считываются из EEPROM при включении питания контроллера. Всего транспондер передает 10 байт. Содержимое EEPROM транспондера можно видеть на рисунке 1. Первый байт 0xE7 является обязательным заголовком пакета, так как его наличие проверяется в первую очередь при разборе пакета считывателем.

Первые 8 байт являются содержимым пакета транспондера, последние 2 байта содержат контрольную сумму CRC16 первых восьми байт пакета. Для примера в нашем транспондере были записаны такие данные – пакет 0xE7, 0x05, 0xE8, 0x93, 0x43, 0x7F, 0x20, 0xFF и соответственно контрольную сумму 0xF5 0xA8. Для изготовления собственного уникального транспондера нужно кроме первого байта 0xE7 записать семь следующих байт в EEPROM, после чего рассчитать контрольную сумму для первых восьми байт. После этого записать в EEPROM два байта CRC16 в конце пакета. Первый байт оставляем без изменений - 0xE7. При включении транспондера данные этих байт разбиваются по битам и кодируются соответствующей длиной импульса в соответствии со значением регистра OCR. Для передачи используются 2 частоты 2Кгц и 5Кгц для передачи логических “0” и “1”. Кроме того данные разделяются импульсами синхронизации – стартовые метки пакетов.

Рис.1 Содержимое пакета транспондера.


Рис.2 Дамп передачи транспондера на экране виртуального осцилографа.

Схему транспондера можно увидеть на рисунке 3. Частота задающего генератора 8Мгц. Питание контроллера +5В. Можно использовать контроллер mega8 с маркировкой “L” тогда питание можно осуществлять от литиевой батарейки 3в (параметры для такого чипа +2,7…. +3,5). Вместо данного транзистора можно использовать любой другой маломощный NPN транзистор. Катушка транспондера была намотана на оправке диаметром 50мм проводом 0,22мм и насчитывает 50 витков. На данный момент транспондер сделан активным - с внешним питанием. На следующем этапе планируется сделать пассивный вариант транспондера, что достаточно просто – сделать развязку для питания от данной катушки, добавить диоды моста выпрямителя и стабилизатор.


Рис.3 Схема транспондера.

Теперь поговорим о схеме считывателя для данного транспондера. Схема была адаптирована на основе раннее использованного считывателя для карт EMMARINE. Часть схемы с генератором на 74hc4060 можно на данном этапе смело удалять, так как пока мы используем активную метку. Однако эта часть схемы нам понадобится в дальнейшем, когда мы будем делать пассивную метку и нам потребуется получить питание от считывателя. В остальном схема не имеет существенных отличий от схемы считывателя для EMMARINE: пассивный пиковый детектор – фильтр – усилитель – компаратор. Схема имеет максимально возможную простоту и позволяет считывать данные транспондера на расстоянии 10-12см при хорошо настроенных контурах.

Можно еще дальше упрощать схему оставив только детектор и фильтр, поставить один транзистор на выходе который будет играть роль компаратора, но я не стал так делать. На выходе мы получаем двоичный сигнал прямоугольной формы в соответствии с кодированными длительностями импульсов передаваемых транспондером. Допустимые отклонения номиналов элементов при котором схема работоспособна 5-10%. Питание контроллера и операционника +5В. Частота кварца задающего генератора контроллера 12Мгц. Выход компаратора на LM358 подключен к ножке внешнего прерывания контроллера INT0. В программе контроллера настроен вызов прерывания по нарастающему фронту на ножке внешнего прерывания INT0. В обработчике прерывания происходит проверка синхронизирующих импульсов а затем проверка заголовка пакета и запись содержимого в буфер контроллера. Данные считанных пакетов передаются по интерфейсу RS232 на ПК. Для настройки терминалки указываем следующие параметры: скорость 57.6Kb/s, 8 бит данных, 1стоп бит, без контроля четности.

При приеме пакета контроллер рассчитывает контрольную сумму принятых байт и передает данные в терминалку (пакет и CRC). В случае совпадения контрольных сумм расчитанной контроллером и принятой в пакете выводится сигнал на ножку PORTB.0 (14) контроллера (LED1 на схеме). Можно подключить в данную точку пищалку со встроенным генератором или светодиод через сопротивление. При считывании корректного ключа контроллер запрещает внешние прерывания и делает задержку 1с перед следующим считыванием. Предусмотрен также режим работы данного считывателя в качестве основы RFID замка. Для этого необходимо в EEPROM контроллера считывателя записать полностью байты дампа транспондера - 10 байт. Данные пишутся в EEPROM считывателя точно также, как в EEPROM транспондера. В данном случае при считывании очередного транспондера и совпадении его с записанным в EEPROM считывателя выводится сигнал на ножку PORTB.1 (15) контроллера (LED2 на схеме). В данную точку можно подключить светодиод через сопротивление или выходной ключ (транзистор) на реле исполнительного устройства. Теперь мы получили RFID замок под конкретный ключ и обычный считыватель в одном флаконе.


Рис.4 Схема считывателя RFID меток. (увелчить схему)

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

Скачать прошивку:
У вас нет доступа к скачиванию файлов с нашего сервера

RFID (радиочастотная идентификация) использует электромагнитные поля для автоматической идентификации и отслеживания тегов, прикрепленных к объектам. Теги содержат электронно сохраненную информацию. Пассивные метки собирают энергию от радиосигналов соседнего RFID-считывателя. Активные теги имеют локальный источник питания (например, аккумулятор) и могут работать в сотнях метров от считывающего устройства. В отличие от штрих-кода, тег не должен находиться в пределах видимости прибора, поэтому он может быть встроен в отслеживаемый объект. RFID - это один из методов автоматической идентификации и сбора данных.

Применение

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

Поскольку метки RFID могут быть прикреплены к деньгам, одежде и имуществу или имплантированы в животных и людей, возможность читать личную информацию без согласия пользователя вызывает серьезную проблему конфиденциальности. Эти риски привели к разработке стандартных спецификаций, касающихся вопросов безопасности личных данных. Теги также могут использоваться в магазинах для ускорения оформления заказа и предотвращения краж.

История

В 1945 году Леон Термен изобрел прослушивающее устройство для Советского Союза, которое повторно передавало радиоволны с добавленной аудиоинформацией. Звуковые колебания при вибрации влияли на диафрагму, которая слегка меняла форму резонатора, модулировавшего отраженную радиочастоту. Несмотря на то что это устройство было скрытым прибором для прослушивания, а не идентификационным тегом, оно считается предшественником USB RFID-считывателя, поскольку активировалось аудиоволнами из внешнего источника. Транспондеры по-прежнему используются большинством работающих самолетов. А раньше подобная технология, такая как считыватель RFID-меток, регулярно использовалась союзниками и Германией во Второй мировой войне для идентификации самолетов.

Устройство Марио Кардулло, запатентованное 23 января 1973 года, было первым истинным предшественником современной RFID, поскольку это был пассивный радиоприемник с памятью. Первоначальное устройство было пассивным, с питанием от опросного сигнала. Оно было продемонстрировано в 1971 году администрации Нью-Йорка и другим потенциальным пользователям и состояло из транспондера с 16-разрядной памятью для использования в качестве платного устройства. Основной патент Cardullo охватывает использование радиочастот, звука и света в качестве среды передачи.

Область использования

Первоначальный бизнес-план, представленный инвесторам в 1969 году, демонстрировал следующие сферы применения считывателя RFID:

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

Ранняя демонстрация отраженной мощности (модулированного обратного рассеяния) RFID-меток, как пассивных, так и полупассивных, была выполнена Стивеном Деппом, Альфредом Коелле и Робертом Фрайманом в Национальной лаборатории Лос-Аламоса в 1973 году. Портативная система работала на частоте 915 МГц и использовала 12-битные теги. Этот метод применяется большинством современных UHFID и микроволновых RFID-считывателей. В современной жизни такие устройства очень востребованы.

Спецификация

Система радиочастотной идентификации использует метки, прикрепленные к идентифицируемым объектам. При изготовлении RFID-считывателя своими руками следует учитывать, что двусторонние радиопередатчики-приемники, называемые запросчиками или считывателями, посылают сигнал тегу и считывают его ответ. Метки RFID могут быть пассивными, активными или пассивными. Активный тег имеет встроенный аккумулятор и периодически передает его ID-сигнал. Пассивный аккумулятор (BAP) имеет небольшую батарею на борту и активируется при наличии считывателя RFID. Пассивная бирка дешевле и меньше, потому что у нее нет батареи. Вместо этого тег использует радиоволну, переданную считывателем. Однако для работы пассивного тега он должен быть освещен уровнем мощности примерно в тысячу раз сильнее, чем для передачи сигнала. Это влияет на интерференцию и облучение.