Rc522 запись на карту: Чтение и запись RFID меток. Модуль RC522 для Arduino.: arthurphdent — LiveJournal

RFID запись

Третий урок из цикла «Всё про RFID».
Сегодня мы продолжим изучать RFID считыватель на базе микросхемы RC522.
В первой части была теория, во второй мы сделали электронный rfid замок с доступом по карте или брелоку. Теперь настала очередь рассмотреть запись на карту

Давайте представим, что мы некое предприятие и у нас есть группа сотрудников и нам надо выпустить именные карты для допуска этих сотрудников в офис.
В этом уроке мы научимся писать на карту свою фамилию и имя, номер офиса, а в следующем уроке добавим время прихода и ухода.

 

Чтение и запись rfid меток не сложный процесс. Надо просто понять принцип и знать структуру rfid карты, а с модулем RFID RC522 и Ардуино – это вообще просто, так как большинство функций прописано в

библиотеке MFRC522. h.
Rfid  карта состоит из секторов и блоков, подробнее смотрите урок 1.


Сначала посмотрим, как подключить модуль считывания RC522 к Ардуино.  Для тех, кто смотрел предыдущий урок и не поленился собрать свой замок мои поздравления. Напишите кто собрал замок.
Объяснять схему не буду, и так всё понятно. Если что не понятно пишите в комментариях.
 

Сначала посмотрим, что получилось, а потом рассмотрим скетч.

Сначала давайте посмотрим дамп карты. Для этого загружаем из скетч dumpinfo.


Прикладываем карту к считывателю и ждём пока не считаются все данные.
Нас интересуют сектора 1 и 2.

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

В первых  4 байтах находится  серийный номер карты, а в оставшихся байтах информация о производителе.  

В первом блоке сейчас находятся нули, это говорит о том что там нет информации. Её также нет и во втором и четвёртом блоке. Эти блоки мы будем использовать для записи и хранения нашей информации.


Сначала запускаем Пример 1.
 
Нас просят поднести карту для считывания.
Что же, давайте так и сделаем.
Дождёмся окончания.
Что мы здесь видим, точнее, увижу только я, так как у вас пока чистая карта и вы ничего не увидите, ну кроме НОМЕРА КАРТЫ.

  • В сектор 1 у меня записана ФАМИЛИЯ.
  • В секторе 2  ИМЯ
  • Третий сектор использовать нельзя, так как это трейлер.
  • А в четвёртом секторе НОМЕР КАБИНЕТА.

Давайте рассмотрим скетч.

Как подключен модуль rc522 я рассказывать не буду. Давайте сразу перейдём  к считыванию секторов.

В самом начале мы должны проверить ключ карты и если он совпадает, то продолжаем работу.
По умолчанию для новой карты ключ равен FFFFFF.
Потом ждём пока не появится новая карта.
Выводим номер КАРТЫ в шестнадцатеричной системе. С этим всё понятно из предыдущего урока.
Код для вывода фамилии, имени и кабинета одинаков.
Меняется только номер блока. Поэтому я расскажу только про фамилию.

  • Создаём массив – буфер —  для хранения значений.
  • Указываем номер блока.
  • Затем в статус загружаем разные значения.

Такие как — Ключ карты, номер блока, UID карты.
Если всё правильно то можно работать дальше, а если нет, то выскочит ошибка и скетч прекратит работу.
Дальше мы в цикле выводим все 16 байт из блока.

И так со всеми блоками, то есть с блоками 1, 2 и 4.
Со считыванием разобрались, теперь давайте разбираться с записью.

Загружаем скетч Пример 2.

Поднести карту.

 

Кстати там есть ограничение на время ожидания ввода текста. Я установил 60 секунд.

Сначала вводим ФАМИЛИЮ  и символ «решётка». Этот символ даёт знать, что ввод окончен и надо обработать текст. Нажимаем ENTER.
Затем вводим ИМЯ и снова вводим решётку и нажимаем ENTER.
Теперь вводим номер кабинета, решётку и ENTER.
И если после каждого ввода у вас не было ошибок и вы видите надпись УБЕРИТЕ КАРТУ, то значит всё прошло хорошо, и теперь можно перейти к ПРИМЕРУ 1 и считать ваши записи с карты.
Записывать на карту можно до 200 тыс. раз, так что можете тренироваться и не ограничивать себя.

 


Ну вот и всё. Всё работает. И как всегда в конце урока я прошу вас поставить лайк этому видео если оно вам понравилось. И жду ваших комментариев.

Следующее видео будет про копирование и клонирование карт.
И чем больше ваших положительных отзывов, тем быстрее оно выйдет.
До встречи в следующих уроках.
Как и обещал, хочу рассказать про русский шрифт. Если вы будете делать записи на латинице, то в каждом блоке вы можете сохранить до 16  символов. А вот если вы будете писать на кириллице, то всего лишь 8 букв.
Это потому, что для хранения будут использован формат Unicode , а он требует для хранения 2 байта.  
Постскриптум.
Я ещё написал код для очистки блоков карт. Правда, это только набросок, но он вполне рабочий.

RFID набор RC522 — R2INO

Подробнее

Считыватель RFID RC522 13.56MHz + карта + брелок

Комплект содержит минимум деталей, позволяющий создать основу небольшой системы радиочастотной идентификации. В комплект вошли: пластиковая карточка и брелок, содержащие RFID радиометки, модуль RFID RC522 считывания-записи радиометки и штыревые контакты для монтажа в плате модуля. Считыватель RFID RC522 – периферийное устройство более сложного прибора. Радиоидентификация RFID (Radio Frequency IDentification) происходит при обмене данными по протоколу Mifare 1K. Использовать термин Mifare может только компания NXP Semiconductors, а также компании, имеющие лицензию от NXP на производство чипов (сейчас компания Infineon). Эта технология позволяет автоматически опознавать объекты, содержащие RFID метки – так называемые транспондеры.

Из меток данные могут не только читаться, но и записываться.
Mifare – торговая марка, объединяющая несколько типов микросхем пластиковых карт, микросхемы считывания и записи стационарных приборов и различные продукты на их основе. Продукты Mifare соответствуют стандарту ISO 14443 Type A  пластиковых карт. Перевод стандарта на русский язык ГОСТ Р ИСО/МЭК 14443. Обмен данными по радио происходит через рамочные антенны, находящиеся в карточке и в модуле. Сигнал модуля служит источником энергии для метки. Считыватель RFID RC522 срабатывает при поднесении метки. Основа модуля – микросхема MFRC522. Он может обрабатывать информацию одновременно от нескольких меток. Для считывания информации достаточно ненадолго попасть карте в зону регистрации даже при перемещении на большой скорости.
В наше время происходит бурное внедрение RFID технологий в различных областях жизни. RFID системы используются для оплаты общественного транспорта в Москве, Санкт-Петербурге, Казани, Минске, Баку и в других городах. Вошли в употребление бесконтактные проездные билеты метро, представляющие собой карточку с RFID меткой. Зародившись как альтернатива жетонам и бумажным билетам общественного транспорта, пропускам, всевозможным талонам, радиоидентификация шагнула в складской учет и автоматизацию конвейерного производства. Нашлось применение карточек для малых платежей в школьных и студенческих столовых. Но по-прежнему главным применением RFID является опознавание свой, чужой.
 
Характеристики считывателя RFID RC522
Питание
Напряжение 3,3 B

Ток потребления в режимах
дежурный 80 мкA
ожидания 12 мA
обычный не более 26 мA
наибольший 30 мА

Частота HF 13,56 МГц
Частотная полоса 13,55–13,57 МГц

Расстояние считывания 0–25 мм
Сопровождаемые карты
классы S50, S70, Ultralight, Pro, DESFire
типы Mifare S50, Mifare S70, Mifare UltraLight, Mifare Pro, Mifare DESfire

Скорость передачи информации 106, 212, 424, 848 кбит/с
Стандарт протокола NFC Reader ISO 14443 A Mifare classic protocol

Шифрование Security Features Mifare classic™

Размеры 40 x 60 мм
Температура
рабочая –20…80 С°
хранения –40…85 С°
Относительная влажность 5–95 %
 

Контакты и сигналы RFID RC522

 

SDA (SS, CS, NSS) выбор ведомого, вход SPI
SCK тактовый сигнал SPI, вход
MOSI передача от мастера к помощнику, вход SPI
MISO передача от помощника к мастеру, выход SPI
IRQ прерывание, выход
GND общий
RST сброс, вход
3. 3 V питание
 
Считыватель поддерживает интерфейсы SPI, UART и I2C через которые происходит обмен данными с другими приборами. На плате модуля RFID RC522 установкой логических уровней на специальных выводах микросхемы выбран интерфейс SPI. С одним Arduinio могут работать несколько приборов, подключенных к шине SPI.
 
Соединение
Множество устройств, к которым подключается считыватель имеют питание 5 В. При соединении устройств с разной величиной питания одними линиями следует применять меры согласования. Для этого используется следующая схема.

 

Схема согласования считывателя RFID RC522 с главным модулем Arduino, питающимся от 5 В.
 
Сигнал сброса, поступающий на контакт RST считывателя это не сброс Arduino или Raspberry Pi. Это совершенно другой сигнал. Он должен поступать от цифрового выхода МК и формируется программно. При подаче логического 0 происходит перезагрузка считывателя. Также считыватель сообщает низким уровнем на RST, что находится в режиме сна, и чтоб его ”разбудить” необходимо туда же подать высокий уровень.
 

Подключение к Arduino Uno.
 
Подключение RFID RC522 к различным типам контроллера Arduino.
 

RFID rc522 Mega Uno/Nano v3 Leonardo/Micro Pro Micro CraftDuino Raspberry Pi B+
MISO 50 12 ICSP-1 14 12 21
MOSI 51 11 ICSP-4 16 11 19
SCK 52 13 ICSP-3 15 13 23
SDA 53 10 24

 

 
Контакт главного модуля для подключения к контакту SDA указывается как SS_PIN в программе. Контакт главного модуля для подключения к контакту RST указывается как RST_PIN в программе. Это выполняется с помощью команд:
 
#define SS_PIN номер контакта
и
#define RST_PIN номер контакта
 
Все контакты модуля кроме IRQ обязательно подключаются. Сигнал от контакта IRQ обрабатывается программно.
 
Запись с помощью считывателя RFID RC522
Устройство может применяться как программатор карточек. С его помощью можно не только читать хранящиеся данные, корректировать используя ПК и записать вновь, но и изменить идентификационный код.
 
Пластиковая карта
В комплект входит белая пластиковая карта. Mifare 1K на которую можно нанести цветное изображение. Внутри нее находятся антенна и микросхема Mifare S50, содержащая память и радиочасть. Размер памяти 1 килобайт, тип EEPROM. Она разделена на 16 секторов, состоящих из 4 разделов. В каждом разделе три информационных части и одна для ключей. Внутри одной части есть 16 байт памяти. Срок хранения данных 10 лет, количество циклов перезаписи 100000.
Уникальность карточки Mifare обеспечивается присвоением изготовителем номера. Он используется в качестве идентификационного кода. Для защиты хранящихся данных в микросхеме карты использовано аппаратное шифрование. При работе данные с пластиковой карточки поступают на считыватель только после взаимной идентификации кода, записанного в сектор памяти карточки и хранящегося в считывателе.
 
Характеристики карты
Тип Mifare Standard 1k (тонкая)
Время транзакции 0,164 с
Температура
рабочая –30…75 С°
хранения –40…85 С°
Размеры: 86 х 54 х 0,8 мм
 
Определение номера карты

Для записи и чтения с карты необходимо знать ее уникальный номер, необходимый для работы системы радиоидентификации. Определить номер можно использую программу Arduino. Соедините считыватель RFID RC522 и Arduino UNO. Воспользуйтесь готовой библиотекой, установив ее в Arduino IDE с помощью копирования в соответствующую папку. Запишите программу.
 
 

 
Программа выводит ряд чисел: 44, 133, 240, 36, 125. Пишем их в обратном порядке. Убираем первое число, (контрольная сумма, оно только что было последним) и оставшиеся числа переводим в шестнадцатеричный вид. Пишем в том же порядке но без пробелов. Теперь это большое число переводим в десятичный вид и получаем номер карты.

Домашняя страница
Полезная статья
Большое описание RFID
Программы и описание для Arduino
Программы для Raspberry Pi

Другие товары этой категории

100 руб

100 руб

100 руб

100 руб

150 руб

100 руб

100 руб

100 руб

Как записать данные на карту RFID с помощью модуля RFID RC522?

В этом проекте мы узнаем, как записывать данные на карту MIFARE 1K RFID с помощью модуля считывания/записи RFID RC522. Это полезно, если вы хотите сохранить пользовательские данные в теге, такие как информация о студенте или данные о сотруднике.

Мы будем использовать Arduino в качестве хост-контроллера для взаимодействия с RFID-модулем RC522 и записи данных на RFID-карту. Я уже сделал учебник о том, как связать RFID-модуль RC522 с Arduino. Прежде чем продолжить, ознакомьтесь с этим учебным пособием, так как есть некоторые основы, связанные с связью RFID, микросхемой MFRC522, модулем RFID RC522 и многим другим.

Outline

Краткий обзор карты памяти тега MIFARE 1K

Если вы загрузите пример «DumpInfo» и откроете последовательный монитор, Arduino распечатает все содержимое тега MIFARE 1K RFID на последовательном мониторе после его сканирования. правильно.

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

Следующее изображение представляет собой снимок экрана вывода последовательного монитора из примера «DumpInfo». Давайте теперь проанализируем это.

Анализ вывода последовательного монитора

В первой строке показана версия микропрограммы микросхемы MFRC522. В этом случае результат 0x92. Здесь «9» означает MFRC522 IC, а «2» — версию программного обеспечения 2.0. После сканирования RFID-карты мы получаем UID, SAK и тип RFID-метки.

В этом случае UID — «6C 08 88 17», SAK — «08», а тип карты — MIFARE 1K.

Далее вы можете увидеть фактический дамп памяти тега MIFARE 1K. Типичная метка MIFARE 1K RFID имеет 1K байт памяти, организованной в 16 секторов (от 0 до 15). Каждый сектор состоит из 4 блоков.

Понимание карты памяти тега MIFARE 1K

Например, в секторе 0 есть блоки 0, 1, 2 и 3. В секторе 1 есть блоки 4, 5, 6 и 7 и т. д., и, наконец, в секторе 15 есть блоки 60, 61, 62 и 63. Каждый блок может хранить 16 байт данных.

ПРИМЕЧАНИЕ: Эта нумерация предназначена только для понимания структуры памяти.

Итак, 16 секторов * 4 блока * 16 байт = 1024 байта = 1K

Блок 0 сектора 0 зарезервирован для хранения данных производителя. Обычно этот блок содержит 4-байтовый UID (уникальный идентификатор) в случае тегов MIFARE 1K (а также тегов MIFARE 4K, MIFARE Mini от NXP). Расширенные теги, такие как MIFARE Plus, MIFARE Ultralight, MIFARE DESFire, состоят из 7-байтового UID.

Каждый сектор состоит из трех блоков данных, которые можно использовать для хранения пользовательских данных. Последний блок каждого сектора, т. е. блок 3 в случае сектора 0, блок 7 в случае сектора 1 и т. д., известен как трейлер сектора.

Так как секторов 16, то и трейлеров секторов 16. Каждый трейлер сектора содержит следующую информацию:

  • Обязательный 6-байтовый ключ A.
  • 4 байта для битов доступа.
  • Дополнительный 6-байтовый ключ B (если не используется, данные могут быть сохранены).

ПРИМЕЧАНИЕ. Байт 9 в области «Биты доступа» доступен для пользовательских данных.

ПРИМЕЧАНИЕ: Все сектора имеют три блока данных и один концевой сектор, кроме сектора 0. Он имеет один блок (блок 0), зарезервированный для данных производителя. Итак, сектор 0 имеет два блока данных и один трейлер сектора.

Биты доступа в конце сектора определяют условия доступа ко всем блокам сектора. 3 бита необходимы для указания условий доступа к трем блокам данных и трейлеру сектора. Условие доступа включает чтение, запись, увеличение, уменьшение, передачу и восстановление.

Со всей этой информацией мы можем сделать вывод, что вы можете хранить 47 байт данных в данных MIFARE 1K RFID. Давайте теперь посмотрим, как записывать данные в RFID-метку с помощью Arduino и RFID-модуля RC522.

Взаимодействие RC522 с Arduino

Несмотря на то, что микросхема MFRC522 поддерживает три типа последовательной связи; UART, SPI и I 2 C, интерфейс SPI является самым быстрым и наиболее распространенным. На следующем изображении показана разводка контактов RFID-модуля RC522.

Для надежной связи между Arduino и RC522 воспользуемся аппаратными контактами SPI. В следующей таблице показаны соединения между Arduino и модулем RC522.

Модуль RFID RC522

Ардуино УНО

ВКЦ

3,3 В
РСТ

7

ЗЕМЛЯ

ЗЕМЛЯ
IRQ

МИСО

12
МОСИ

11

СКК

13
нержавеющая сталь

10

Необходимые компоненты

  • Arduino UNO
  • RC522 Модуль считывания/записи RFID
  • Метка RFID MIFARE 1K
  • Соединительные провода

Принципиальная схема

На следующем рисунке показаны соединения между Arduino и модулем RFID RC522.

Запись данных на карту RFID

Я написал простенькую программу, в которой записываю данные в 1 Блок (Блок 2) и полностью его заполняю. Это означает, что длина данных должна быть 16 байт.

Код

Код Arduino для записи данных в метку MIFARE 1K RFID приведен ниже. Я прокомментировал код, чтобы вы могли его легко понять.

Заключение

Простая демонстрация того, как записывать данные на карту RFID с помощью модуля считывания/записи RFID RC522 и Arduino UNO. Вы изучили структуру памяти RFID-меток MIFARE Classic 1K, области памяти, которые можно использовать для записи данных, а также для записи произвольного текста на карту RFID.

Как записать данные на карту RFID с помощью RC522 RFID и Arduino?

В этом проекте мы узнаем, как записывать данные на карту MIFARE 1K RFID с помощью модуля считывания/записи RFID RC522. Это полезно, если вы хотите разместить пользовательские данные, относящиеся к метке, такие как информация о студенте или данные о сотруднике.

Мы будем использовать Arduino в качестве хост-контроллера для взаимодействия с модулем RC5 22 RFID и записи данных на карту RFID. Ранее я сделал учебник о том, как связать модуль RFID RC5 22 с Arduino. Прежде чем продолжить, ознакомьтесь с этим учебным пособием, так как здесь есть некоторые основы, связанные с связью RFID, MFRC5 22 IC, модулем RFID RC522 и многим другим.

Краткий обзор карты памяти тега MIFARE 1K

Если вы загрузите пример «DumpInfo» и откроете последовательный монитор, Arduino выгравирует все содержимое тега RFID MIFARE 1K на последовательном обозревателе после надлежащей проверки.

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

Следующий портрет представляет собой снимок экрана последовательного наблюдения за выходом примера «DumpInfo». Давайте сейчас проанализируем это.

Анализ вывода последовательного монитора

Первый маршрут показывает версию микропрограммы MFRC5 22 IC. В таких случаях результатом будет 0x92. Теперь «9» означает MFRC5 22 IC, а «2» — версию программного обеспечения 2.0. После сканирования RFID-карты мы получаем UID, SAK и тип RFID-метки.

В этом случае UID — «6C 08 88 17», SAK — «08», а тип карты — MIFARE 1K.

Далее вы можете увидеть фактический дамп памяти тега MIFARE 1K. Обычная метка MIFARE 1K RFID имеет 1K байт памяти, организованной в 16 секторов (от сектора 0 до сектора 15). Каждый сектор состоит из 4 блоков.

Понимание запоминания карты тега MIFARE 1K

Например, в секторе 0 есть блоки 0, 1, 2 и 3. В секторе 1 есть блоки 4, 5, 6 и 7 и т. д., и, наконец, в секторе 15 есть блоки 60, 61, 62 и 63. Каждый блок может хранить 16 байт данных.

ПРИМЕЧАНИЕ. Эта нумерация предназначена только для понимания схемы распознавания.

Итак, 16 секторов* 4 блока* 16 байт= 1024 байта= 1K

Блок 0 сектора 0 зарезервирован для хранения данных производителя. Обычно этот блок содержит 4-байтовый UID (уникальный идентификатор) в случае тегов MIFARE 1K (а также теги MIFARE 4K, MIFARE Mini от NXP). Расширенные теги, такие как MIFARE Plus, MIFARE Ultralight, MIFARE DESFire, состоят из 7-байтового UID.

Каждый сектор состоит из трех блоков данных, которые можно использовать для хранения пользовательских данных. Последний блок каждого сектора, т. е. блок 3 в случае сектора 0, блок 7 в случае сектора 1 и т. д., известен как трейлер сектора.

Поскольку существует 16 секторов, в настоящее время имеется 16 секторных трейлеров. Каждый трейлер сектора состоит из следующей информации: TAGEND

Обязательный 6-байтовый ключ A. 4 байта для бита доступа. Дополнительный 6-байтовый ключ B (если не используется, данные могут накапливаться).

ПРИМЕЧАНИЕ. Байт 9 в области «Биты доступа» доступен для пользовательских данных.

ПРИМЕЧАНИЕ. Во всех секторах есть три блока данных и один трейлер сферы, кроме области 0. В ней есть один блок (блок 0), зарезервированный для данных производителя. Итак, Сектор 0 имеет два блока данных и один трейлер сферы.

Биты доступа в конце сектора определяют условия доступа ко всем блокам сектора. 3 бита необходимы для указания условий доступа к трем блокам данных и трейлеру сектора. Обстоятельства доступа включают чтение, запись, увеличение, уменьшение, передачу и восстановление.

Со всей этой информацией мы можем сделать вывод, что вы можете хранить 47 байт данных в данных MIFARE 1K RFID. Давайте теперь посмотрим, как записывать данные в RFID-метку с помощью Arduino и RFID-модуля RC522.

Взаимодействие RC522 с Arduino

Несмотря на то, что MFRC5 22 IC поддерживает три типа последовательной связи; UART, SPI и I2C, интерфейс SPI является самым быстрым и наиболее распространенным. Следующие изображения показывают распиновку RFID-модуля RC522.

Для надежной связи между Arduino и RC522 мы используем аппаратные контакты SPI. В следующей таблице показаны соединения между Arduino и модулем RC522.

RC5 22 RFID-модуль

Arduino UNO

VCC

3. 3 V

RST

7

GND

GND

IRQ

MISO

12

MOSI

11

SCK

13

SS

10

Необходимые компоненты

Модуль считывания/записи RFID Arduino UNO RC522 MIFARE 1K RFID-метка Соединительные провода

Принципиальная схема

На следующем рисунке показаны соединения между Arduino и модулем RFID RC522.

Запись данных на карту RFID

Я написал простую программу, в которой я записываю данные в 1 блок (блок 2) и полностью заполняю их. Это означает, что длина данных должна быть 16 байт.

Система

Код Arduino для записи данных в метку MIFARE 1K RFID приведен ниже. Я наблюдал за системой, чтобы вы могли легко ее понять.

Код

Заключение

Простая демонстрация того, как записывать данные на карту RFID с помощью модуля считывания/записи RFID RC522 и Arduino UNO. Вы узнали структуру памяти RFID-меток MIFARE Classic 1K, области памяти, в которые можно записывать данные, а также записывать случайные стихи на RFID-карту.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *