Электронный RFID замок на микроконтроллере своими руками. Схема

Электроника 21.06.2019
Электроника

Считыватель RFID - карт и брелков
на микроконтроллере ATtiny13

Источник: www.serasidis.gr
Vassilis Serasidis

Перевод: Vadim по заказу РадиоЛоцман

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

Любая система радиочастотной идентификации (RFID) состоит из считывающего устройства (считыватель, ридер или интеррогатор) и транспондера (он же RFID-метка, иногда также применяется термин RFID-тег). В статье мы рассмотрим простое устройство для считывания RFID ключей, поддерживающих протокол EM4100 и работающие на частоте 125 кГц. Данный тип RFID-ключей может иметь форму брелока или кредитной карточки (Рисунок ниже).

Основным компонентом считывающего устройства является микроконтроллер Atmel AVR ATtiny13, который считывает 10-значный уникальный идентификационный номер ключа и передает его в кодировке ASCII по последовательному интерфейсу (UART) со скоростью 2400 бит/с Host-устройству. Другими словами, считыватель представляет собой отдельный модуль, подключаемый к основному процессору или микроконтроллеру системы (Рисунок 2).

Принципиальная схема RFID считывателя изображена на Рисунке ниже:

Рассмотрим основные особенности работы схемы. Микроконтроллер использует встроенный ШИМ модулятор для генерирования на выходе PB0 прямоугольных импульсов с частотой 125 кГц. Если на выходе PB0 лог. 0 (спадающий фронт импульса), транзистор T1 находится в закрытом состоянии, и на катушку L1 подается напряжение питания +5 В через резистор R1. Нарастающий фронт на выходе PB0 (лог. 1) открывает транзистор T1, и верхний по схеме вывод катушки подключается к «земле». В этот момент катушка оказывается включенной параллельно конденсатору С2, образуя LC генератор (колебательный контур). Переключение транзистора происходит 125,000 раз в секунду (125 кГц).). В итоге, катушкой генерируется сигнал синусоидальной формы с частотой 125 кГц

Модуль считывателяя генерирует электромагнитное поле, энергия которого используется для питания RFID-ключа. В основе передачи энергии между RFID-ключом и считывателем лежит принцип работы обычного трансформатора: первичная обмотка трансформатора создает ЭДС индукции во всех остальных обмотках. Для нашего случая первичной обмоткой является катушка считывателя, а вторичной - катушка RFID-ключа. Элементы D1, C3 и R5 образуют демодулятор сигнала с амплитудной модуляцией.

Обмен данными между ключом и считывающим устройством

Процесс обмена данными между RFID-ключом и считывателем очень прост, но продуман до мелочей. Если RFID-ключ должен передать лог. 0, то он к своему источнику питания подключает определенную «нагрузку», что требует больше энергии, передаваемой считывателем. Это вызовет небольшую «просадку» напряжения на стороне считывателя; именно этот уровень воспринимается считывателем как лог. 0

RFID ключ в общем случае передает 64 бита данных в следующей последовательности (Рисунок 6):

  1. Первые 9 бит (всегда лог. 1) - стартовые биты, свидетельствующие о начале обмена данными.
  2. 4 бита - младшие значащие биты пользовательского идентификационного номера (D00 - D03).
  3. 1 бит (P0) - бит контроля четности предыдущих 4 бит.
  4. 4 бита - старшие значащие биты пользовательского идентификационного номера (D04 - D07).
  5. 1 бит (P1) - бит контроля четности предыдущих 4 бит.
  6. 4 бита - первая часть 32-битного серийного номера RFID ключа (D08 - D11).
  7. 1 бит (P2) - бит контроля четности предыдущих 4 бит.
  8. Далее передаются следующие группы по 4 бита серийного номера ключа, каждая с битом контроля четности.
  9. Затем передаются 4 бита контроля четности битов по столбцам. К примеру, бит контроля четности PC0 для битов D00, D04, D08, D12, D16, D20, D24, D28, D32 и D36.
  10. 1 стоп-бит.

Данные (64 битная последовательность), которые передает RFID-ключ.

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

Конструкция катушки.

Бескаркасная катушка индуктивности в считывающем устройстве диаметром 120 мм намотана проводом диаметром 0.5 мм и имеет 58 витков, однако автор рекомендует при намотке добавить еще 2 - 3 витка. С целью повышения эффективности катушки и увеличения расстояния считывания данных RFID-ключа необходимо выполнить калибровку колебательного контура. Если, подключив осциллограф в точку соединения R1 и L1, на экране прибора вы увидите искаженные пики (Рисунок 7), то это говорит о необходимости калибровки катушки L1.

Искажения сигнала, генерируемого катушкой L1, говорит о необходимости калибровки.

Калибровку можно выполнить двумя способами после подачи напряжения питания на модуль.

  1. Подключите щупы осциллографа в точку соединения R1 и L1 и, увеличивая или уменьшая количество витков катушки L1, добейтесь устранения искажения сигнала.
  2. Если у вас нет осциллографа, то медленно подносите RFID-ключ к катушке до момента распознавания ключа, о чем свидетельствует звуковой сигнал. Если ключ определяется с расстояния 2 см, то необходимо добавить/удалить несколько витков и после этого снова проверить расстояние, с которого уверенно считывается ключ. С помощью калибровки автор схемы добился уверенного считывания RFID-ключа с 3 см.

При программировании микроконтроллера необходимо установить следующую конфигурацию Fuse-битов: младший байт 0x7A и старший байт 0x1F (микроконтроллер работает от встроенного тактового генератора 9.6 МГц, делитель тактовой частоты на 8 отключен). Программный код занимает в памяти микроокнтроллера 1024 Байт - используется весь доступный объем памяти микроконтроллера ATtiny13. Поэтому в дальнейшем при расширении функционала считывателя лучше использовать другой 8-выводной микроконтроллер AVR, например ATtiny85.

Загрузки:

Исходный код программы микроконтроллера (AVRStudio 6), прошивка (.hex) и принципиальная схема -

Данный проект был сделан по просьбе друга для установки на дверь в складское помещение. В дальнейшем было изготовлено ещё несколько по просьбе друзей и знакомых. Конструкция оказалась простой и надёжной. Работает данное устройство так: пропускает только те 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 - Отпускаем кнопку отнимаем карту или брелок. 19 сентября 2013 в 18:32

Бюджетный UHF RFID считыватель и его развитие

  • Беспроводные технологии

Здравствуйте, досточтимые леди и джентльмены.
Самый дешевый UHF RFID считыватель или считыватель стандарта EPC Gen2 стоит в розницу никак не меньше 200 USD.

Как можно сделать работоспособный UHF RFID считыватель из деталей за 10 USD, и как можно было бы из этого извлечь пользу, рассказано ниже.

Большинство современных RFID считывателей стандарта EPC Gen2 использует специализированные микросхемы. Их выпускают компании Impinj, AMS и Phychips. Самые дешевые микросхемы стоят около 20 USD в партиях по 1000 штук. RFID считыватели получаются замечательные: мощные, шустрые и дальнобойные - но дорогие.
Весной этого года в Интернете появилась статья "Simple Low Cost UHF RFID Reader " о том, как из распространенных радиодеталей стоимостью около 5 USD в рознице собрать действующий RFID считыватель. Идея вроде как проста, но до реализации дошло только недавно. Предпосылка к разработке базируется на том, что очень часто вблизи от антенны нужно не спеша считать пару тройку меток, и платить много денег за считыватель скорострельностью 200-500 меток в секунду ни к чему. Блок схема считывателя представлена на картинке.


Её прелесть в простоте. Основой является обычный микроконтроллер, который формирует на ножке GPIO сигналы стандарта EPC Gen2, нужные для опроса метки. Сигналы передаются на микросхему трансмиттера Melexis TH72035, затем на антенну через каплер (coupler) Johanson 0910CF15B0100. Приемник собран на одном компараторе MAX931 по следующей схеме.


Логические сигналы с приемника поступают на другой вывод GPIO микропроцессора. Получаем простой софтовый UHF RFID считыватель. Конечно, написать софтовый EPC Gen2 RFID считыватель - это не фунт изюму. Но если четко определить цели и использовать только нужное подмножество протокола EPC Gen2, то задача упрощается значительно.
Авторы описываемого проекта одной из целей его дальнейшего развития считают размещение всех компонентов RFID считывателя на одной плате. Но не будет ли интереснее пойти в противоположном направлении? То есть разделить считыватель на физически обособленные функциональные модули и потом из разных модулей строить RFID считыватель с необходимыми характеристиками. Всё, что внизу, только идея, без детальной проработки.

Понятно, что главный модуль - микропроцессорный. Наверное, сделать его нужно на Cortex-M0, вывести на разъемы UART и USB с целью управления считывателем. Для подключения модуля приемопередатчика использовать разъем на 6 контактов: Rx, Tx, 2 на питание приемопередатчика, 2 GPIO. Таких разъемов можно сделать 2-4, насколько выводов микропроцессора хватит.
Модуль приемопередатчика подключаться к микропроцессорному модулю будет напрямую или через короткий кабель. Пожалуй, надо делать несколько вариантов модулей приемопередатчика с разной мощность и ценой, но одинаковым разъемом. 5-ый контакт разъема можно использовать для включения приемопередатчика, а 6-ой можно использовать под какой-то датчик при необходимости. Имеет смысл сделать печатную плату приемопередатчика с металлизированными торцевыми полуотверстиями. Тогда её можно будет припаивать к печатным платам с разными антеннами или печатной плате с коаксиальным разъемом SMA.
Итак, соединив микропроцессорный модуль и модуль приемопередатчика, мы получаем RFID считыватель. Но только ради этого городить огород не стоит. Пойдем дальше. Воткнем в 6-контактный разъем микропроцессорного модуля вместо приемопередатчика плату с драйвером RS422 и розеткой RJ45 (пара 1 - прием, пара 2 - передача, 3 - питание, 4 - GPIO). Такую же воткнем в приемопередатчик. Понятно, что теперь можно соединять микропроцессорный модуль и приемопередатчик с помощью любого патч-корда или использовать для соединения офисную СКС. В общем, антенна от микропроцессорного модуля может располагаться весьма далече. И никакого коаксиала.
Ну и это еще не всё :) RS422 - это шина. В приемопередатчике можно разместить микросхему D-триггера. Модули приемопередатчика соединить последовательно патч-кордами. Правда необходим второй разъем RJ45 или Т-разветвитель, если вместо D-триггера поставить синхронный счетчик. С помощью двух GPIO в четвертой паре UTP можно выбирать нужный приемопередатчик. Получается распределенный RFID считыватель, как на картинке.


Зачем нужен USB: а для того, чтобы уметь присоединить считыватель к планшетнику с Android.

Решение применимо, где не нужна большая скорость считывания меток и дальнобойность.
1. Для гастрономов не годится. Это RFID магазины будущего. А RFID магазины настоящего - это универмаги (обувь и одежда). Там RFID считыватели уже используются в примерочных (вместе в интерактивным дисплеем), на кассах и умных полках с товаром.
2. Склады с европоддонами (цепочка модулей приемопередатчика там, где находятся левые углы палет).
3. Пропускная система на разные массовые мероприятия.
4. Наверняка где-то ещё.

Метка 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 тематике и разработки разнообразных считывателей для моделей транспондеров популярных стандартов типа 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. Следующим шагом будет изготовление пассивной метки для нашего считывателя как делают известные производители промышленных транспондеров и портирование кода оборудования на более дешевые модели контроллеров. В архиве к статье прилагаю прошивки для транспондера и считывателя.

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



Рекомендуем почитать

Наверх