RFID считыватель своими руками

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

Если приближаете RFID-метку достаточно близко (5 см) к катушке считывателя (L1), тот считывает 10-значный уникальный идентификатор метки и передает его в виде символов ASCII через последовательный выход со скоростью 2400 бит в секунду. Схема включает также зуммер, который издает звуковой сигнал при успешном чтении.

Схема считывателя меток

Вот как работает RFID устройство. МК ATtiny13 использует функцию ШИМ для создания прямоугольного сигнала 125 кГц. Этот сигнал поступает с вывода PB0. На заднем фронте PB0 (логический 0) T1 не проводит. Таким образом, катушка L1 получает питание от R1 (100 Ом) с +5 В. Когда вывод PB0 поднимается (логическая 1), T1 проводит, а одна сторона L1 переходит на GND. Катушка L1 подключается параллельно с C2, создавая LC-генератор. Эти переходы L1 в логическую «1» и логический «0» выполняются 125000 раз в секунду (125 кГц).

Считыватель RFID обеспечивает энергией транспондер (метку), создавая электромагнитное поле. Передача энергии между считывателем RFID и меткой такая же, как и трансформаторы преобразовывают напряжение из сети переменного тока 220 В в переменное 12 В на основе магнитного поля, которое создает первичную катушку.

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

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

Как RFID-метка взаимодействует с считывателем? Идея простая: когда метка хочет отправить считывающему устройству логический «0», он «нагружает» свою линию питания, чтобы запросить у считывателя больше мощности. Это приведет к небольшому падению напряжения на стороне считывателя RFID. Этот уровень напряжения равен логическому «0».

Одновременно, пока считыватель передает сигнал 125 кГц, он считывает напряжение передаваемого сигнала через фильтры D1, C3 и R5, C1. Когда метка понижает напряжение, считыватель считывает это падение напряжения как логический «0». Когда метке не требуется дополнительная мощность, она не вызывает падения напряжения. Это логическая «1».

Длина «единиц» или «нулей» зависит от скорости последовательной передачи данных. Но для несущей частоты 125 кГц нет передачи данных 125000 бит в секунду. Реальная передача к считывателю варьируется от 500 до 8000 бит в секунду.

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

Выше пример расшифровки RFID-метки. Тут используется RFID-метка с серийным номером 0010016317.

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

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

Как откалибровать L1? Включите RFID-считыватель и делайте следующее:

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

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

В данном экземпляре сделана L1 диаметром 120 мм и 58 витков, но для достижения меньшего размера сложили катушку пополам, чтобы получилась «восьмерка» (форма похожа на число 8), и снова провели калибровку. Поэтому катушка L1 на фото кажется меньше 120 мм. В итоге L1 имеет диаметр 60 мм и почти 116 витков.

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

Нужно установить фузы ATtiny13 на: High Fuse: 0x1F и Low Fuse: 0x7A. Эти настройки устанавливают ATtiny13 для работы с внутренним генератором 9,6 МГц. Параметр системный таймер разделенный на 8 отключен.

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

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

Нужно установить фузы ATtiny85 на: High Fuse: 0xDD и Low Fuse: 0xE2. Эти настройки устанавливают ATtiny85 для работы с внутренним генератором 8 МГц. Параметр системный таймер разделенный на 8 отключен.

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