Rfid rc522 arduino подключение. RFID RC522: подключение к Arduino, принцип работы и программирование

Как работает технология RFID. Как подключить модуль RC522 к Arduino. Какие основные команды используются для работы с RFID-метками. Как считывать и записывать данные на RFID-карты и брелоки.

Что такое RFID и как эта технология работает

RFID (Radio Frequency Identification) — это технология бесконтактной идентификации объектов с помощью радиочастотного электромагнитного излучения. Система RFID состоит из двух основных компонентов:

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

Принцип работы RFID заключается в следующем:

  1. Считыватель генерирует электромагнитное поле определенной частоты
  2. Когда RFID-метка попадает в это поле, в ее антенне наводится ЭДС
  3. Полученная энергия активирует микрочип метки
  4. Микрочип модулирует отраженный сигнал, передавая хранящиеся в памяти данные
  5. Считыватель принимает модулированный сигнал и декодирует передаваемую информацию

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


Особенности модуля RFID RC522

RC522 — это популярный недорогой модуль для работы с RFID-метками на частоте 13,56 МГц. Основные характеристики:

  • Основан на микросхеме MFRC522 от NXP
  • Поддерживает протокол ISO/IEC 14443A
  • Работает с картами MIFARE Classic 1K, 4K, Ultralight и др.
  • Дальность считывания до 50 мм
  • Интерфейсы: SPI, I2C, UART
  • Напряжение питания: 3.3В
  • Потребляемый ток: 13-26 мА
  • Размеры модуля: 40×60 мм

RC522 позволяет легко добавить функционал RFID в проекты на базе Arduino и других микроконтроллеров.

Подключение RC522 к Arduino

Модуль RC522 подключается к Arduino по интерфейсу SPI. Схема соединений:

RC522Arduino UnoArduino Mega
SDA (SS)1053
SCK1352
MOSI1151
MISO1250
IRQне используетсяне используется
GNDGNDGND
RST95
3.3V3.3V3.3V

Важно подать на RC522 питание 3.3В, так как микросхема MFRC522 не рассчитана на 5В. При этом логические выводы модуля толерантны к 5В, поэтому их можно напрямую подключать к Arduino.

Установка библиотеки MFRC522

Для работы с RC522 используется библиотека MFRC522. Установить ее можно двумя способами:


Через менеджер библиотек Arduino IDE:

  1. Откройте Arduino IDE
  2. Перейдите в Скетч ->
    Подключить библиотеку -> Управлять библиотеками
  3. В поиске введите «MFRC522»
  4. Найдите библиотеку «MFRC522 by GithubCommunity» и нажмите «Установить»

Вручную:

  1. Скачайте ZIP архив библиотеки с GitHub: https://github.com/miguelbalboa/rfid
  2. В Arduino IDE выберите Скетч -> Подключить библиотеку -> Добавить .ZIP библиотеку
  3. Укажите путь к скачанному архиву

После установки библиотеки перезапустите Arduino IDE.

Чтение UID метки

Самая базовая операция с RFID — это чтение уникального идентификатора (UID) метки. Рассмотрим пример кода для этого:

«`cpp #include #include #define SS_PIN 10 #define RST_PIN 9 MFRC522 rfid(SS_PIN, RST_PIN); void setup() { Serial.begin(9600); SPI.begin(); rfid.PCD_Init(); } void loop() { if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) return; Serial.print(«UID метки: «); for (byte i = 0; i < rfid.uid.size; i++) { Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " "); Serial.print(rfid.uid.uidByte[i], HEX); } Serial.println(); rfid.PICC_HaltA(); rfid.PCD_StopCrypto1(); } ```

Этот скетч инициализирует модуль RC522, ожидает поднесения метки и выводит ее UID в Serial Monitor. Обратите внимание на основные функции библиотеки MFRC522:


  • PICC_IsNewCardPresent() — проверяет наличие новой карты в поле считывателя
  • PICC_ReadCardSerial() — считывает серийный номер карты
  • PICC_HaltA() — переводит карту в состояние остановки
  • PCD_StopCrypto1() — останавливает шифрование

Структура памяти MIFARE Classic 1K

Большинство RFID-меток, работающих на частоте 13.56 МГц, относятся к типу MIFARE Classic 1K. Рассмотрим структуру их памяти:

  • Общий объем памяти: 1 КБ (1024 байта)
  • Память разделена на 16 секторов
  • Каждый сектор содержит 4 блока по 16 байт
  • Всего 64 блока (16 секторов * 4 блока)

Особенности распределения памяти:

  • Блок 0 сектора 0 содержит данные производителя и UID метки
  • Последний блок каждого сектора (блок 3) — это трейлер сектора с ключами доступа
  • Остальные блоки (0-2) в секторах 1-15 доступны для пользовательских данных

Таким образом, для хранения данных доступно 48 блоков по 16 байт, что составляет 768 байт пользовательской памяти.

Аутентификация и доступ к секторам

Для чтения и записи данных в секторах MIFARE Classic необходимо пройти аутентификацию. Каждый сектор защищен двумя ключами — A и B. Стандартные ключи для новых карт:


  • Ключ A: FF FF FF FF FF FF
  • Ключ B: FF FF FF FF FF FF

Пример аутентификации для доступа к сектору:

«`cpp MFRC522::MIFARE_Key key; for (byte i = 0; i < 6; i++) key.keyByte[i] = 0xFF; byte sector = 1; byte blockAddr = 4; // Первый блок в секторе 1 status = rfid.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, blockAddr, &key, &(rfid.uid)); if (status != MFRC522::STATUS_OK) { Serial.println(F("Ошибка аутентификации")); return; } ```

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

Чтение данных из блока

Для чтения данных из определенного блока памяти RFID-метки используется функция MIFARE_Read(). Пример чтения блока после аутентификации:

«`cpp byte blockAddr = 4; byte buffer[18]; byte size = sizeof(buffer); status = rfid.MIFARE_Read(blockAddr, buffer, &size); if (status != MFRC522::STATUS_OK) { Serial.println(F(«Ошибка чтения»)); return; } Serial.println(F(«Данные в блоке:»)); for (byte i = 0; i < 16; i++) { Serial.print(buffer[i] < 0x10 ? " 0" : " "); Serial.print(buffer[i], HEX); } Serial.println(); ```

Этот код читает 16 байт данных из блока 4 (первый блок сектора 1) и выводит их в шестнадцатеричном формате.


Запись данных в блок

Для записи данных в блок используется функция MIFARE_Write(). Пример записи 16 байт в блок:

«`cpp byte blockAddr = 4; byte dataBlock[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10 }; status = rfid.MIFARE_Write(blockAddr, dataBlock, 16); if (status != MFRC522::STATUS_OK) { Serial.println(F(«Ошибка записи»)); return; } Serial.println(F(«Данные успешно записаны»)); «`

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

Увеличение значения в блоке

MIFARE Classic поддерживает специальные операции для работы с блоками как с счетчиками. Функция MIFARE_Increment() позволяет увеличить значение в блоке на заданную величину:

«`cpp byte blockAddr = 4; long value = 5; // Значение для увеличения status = rfid.MIFARE_Increment(blockAddr, value); if (status != MFRC522::STATUS_OK) { Serial.println(F(«Ошибка инкремента»)); return; } status = rfid.MIFARE_Transfer(blockAddr); if (status != MFRC522::STATUS_OK) { Serial.println(F(«Ошибка передачи»)); return; } Serial.println(F(«Значение успешно увеличено»)); «`

Обратите внимание, что после операции инкремента необходимо вызвать MIFARE_Transfer() для сохранения результата в блоке.



Урок 6. Arduino считываем метки (RFID-модуль RC522)

Подключение к Arduino:

Для начала необходимо установить библиотеку RFID Library for MFRC522.

Контакты на модуле RFID-модуль RC522 необходимо подключить к Ардуине. Для подключения удобно использовать провода папа-мама.

Описание контактов у RFID-модуля RC522:

  • VCC — Питание. Необходимо 3.3V;
  • RST — Reset. Линия сброса. Ни в коем случае не подключать к пину RESET на CraftDuino! Данный пин цепляется на цифровой порт с PWM;
  • GND — Ground. Земля
  • MISO — Master Input Slave Output — данные от ведомого к ведущему, SPI;
  • MOSI — Master Output Slave Input — данные от ведущего к ведомому, SPI;
  • SCK — Serial Clock — тактовый сигнал, SPI;
  • NSS — Slave Select — выбор ведомого, SPI;
  • IRQ — линия прерываний;
MFRC522Arduino UnoArduino MegaArduino Nano v3Arduino Leonardo/MicroArduino Pro Micro
RST95D9RESET/ICSP-5RST
SDA(SS)1053D101010
MOSI 11 (ICSP-4)51D11ICSP-416
MISO 12 (ICSP-1)50D12ICSP-1 14
SCK13 (ICSP-3)52D13ICSP-315
3. 3V 3.3V 3.3VСтабилизатор 3,3ВСтабилизатор 3,3ВСтабилизатор 3,3В
GNDGNDGNDGNDGNDGND

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

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


Необходимо проверить правильность заданных констант:

#define SS_PIN 10
#define RST_PIN 9 // Данные константы соответствуют

Теперь загружаем скетч в ардуину и включаем Мониторинг последовательного порта.

Подносим метку к ридеру и модуль считает все данные с данной метки, например уникальный идентификатор метки UID.

Видео работы RFID-RC522:

подключение RFID RC522 к Arduino Nano

Продолжаем изучение RFID RC522. Поговорим о подключении модуля к всем версиям Ардуино. Отличий в подключении UNO и Nano нет, но Nano удобнее подключать на плате прототипирования Breadboard SYB-400, поэтому начнём с неё.  

RFID RC522 для считывания и записи на карты  
RFID RC522 Arduino схема, подключение
Datasheet или описание от производителя  

МОДУЛЬ РАБОТАЕТ ОТ НАПРЯЖЕНИЯ 3,3  ВОЛЬТ

Если вы подключили библиотеку RFID то по умолчанию для всех примеров там заданы вот такие параметры подключения.
Этот модуль  работает на частоте 13,56 МГц и подключается к Ардуино по SPI интерфейсу.

В комплекте :

  • Ридер(считыватель)
  • Карта
  • Брелок

 

Основные характеристики:

  • микросхема MFRC522 производитель NXP;
  • напряжение питания: 3,3 В;
  • потребляемый ток: 13–26 мА;
  • рабочая частота: 13,56 MГц;
  • дальность считывания: 0-60 мм;
  • интерфейс: SPI, максимальная скорость передачи 10 МБит/с;
  • размер: 40×60 мм;
  • поддерживаемые типы карт: MIFARE S50, MIFARE S70, MIFARE UltraLight, MIFARE Pro, MIFARE DESfire

Назначение выводов интерфейса SPI:
SDA – выбор ведомого;
SCK –сигнал синхронизации;
MOSI – передача от master к slave;
MISO – передача от slave к master;
RST – вывод для сброса;
IRQ – вывод прерывания;
GND – земля;
Vcc –питание 3. 3 В.
Сигнал сброса RST – это сигнал, поступающий от цифрового выхода контроллера. При поступлении сигнала LOW происходит перезагрузка считывателя. Также ридер установкой на RST низкого уровня  сообщает, что находится в режиме сна, для вывода модуля из режима сна необходимо подать на данный вывод сигнал HIGH.

Reset           9        RST
SS(SDA)     10       SDA
MOSI          11        MOSI
MISO          12       MISO
SCK             13       SCK


Reset           9        RST
SS(SDA)     10       SDA
MOSI          11        MOSI
MISO          12       MISO
SCK             13       SCK

 


Reset          5                 RST
SS (SDA)   53               SDA
MOSI         51               MOSI
MISO         50               MISO
SCK            52               SCK

 

 


Reset                        RST
SS (SDA)                 SDA
MOSI                       MOSI
MISO                       MISO
SCK                          SCK

фото в блоге

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

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

 

Система RFID состоит из двух частей: метки и считывателя

 

метки RFID

 

Метка RFID содержит чип для хранения информации о физическом объекте и антенну для приема и передачи сигнала. Метка RFID обычно может хранить 1 КБ данных, но этого достаточно для хранения имени, номера кредитной карты, уникального идентификационного номера, даты рождения и другой информации.

 

Считыватель RFID

 

Считыватель RFID выполняет две функции: передача и прием. Так что вы также можете сказать, что это трансивер. Считыватель RFID содержит антенну, радиочастотный модуль и блок управления.

 

 

  • Высокоинтегрированная аналоговая схема для демодуляции и декодирования ответов.
  • Поддерживает ISO/IEC 14443 A/MIFARE.
  • Типичное рабочее расстояние в режиме чтения/записи до 50 мм.
  • Поддерживает ISO/IEC 14443 Более высокая скорость передачи данных до 848 кбод.
  • SPI до 10 Мбит/с.
  • Буфер FIFO обрабатывает 64 байта для отправки и получения.
  • Гибкие режимы прерывания.
  • Отключение в программном режиме.

 

 

  • Диапазон частот — ISM-диапазон 13,56 МГц
  • Хост-интерфейс — SPI/I2C/UART
  • Рабочее напряжение питания — от 2,5 В до 3,3 В
  • Макс. Рабочий ток — 13–26 мА        
  • Мин. Ток (отключение питания) — 10 мкА     
  • Логические входы — допустимое напряжение 5 В           
  • Диапазон считывания — 5 см

 

 

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

PIN-код RFID-RC522 КОНТАКТ ARDUINO UNO
ПДД 10
СКК 13
МОСИ 11
МИСО 12
IRQ НЕИСПОЛЬЗУЕМЫЙ
Земля ЗЕМЛЯ
РСТ 9
3,3 В 3,3 В

 

 

 

Чтобы упростить управление точечной матрицей, вам необходимо загрузить и установить в Arduino IDE библиотеку LedControl. Чтобы установить библиотеку, выполните следующие действия:

 

МЕТОД 1

 

  • Перейдите в меню «Эскиз».
  • Выберите «Включить библиотеки».
  • Перейти к управлению библиотеками.
  • Найдите MFRC522 и установите его.

 

МЕТОД 2

 

  • Вы можете установить его извне, используя следующую ссылку: https://github.com/miguelbalboa/rfid
  • После загрузки zip-файлов,
  • Перейдите в Sketch →   Включить библиотеку → Добавить библиотеку .ZIP
  • Затем добавьте загруженные zip-файлы.
  • Теперь библиотеки включены в вашу Arduino IDE.

 

ШАГ 1

 

После установки библиотеки откройте «Dumpinfo» из примеров и загрузите его в Arduino IDE.

 

 

ШАГ 2

 

Откройте два окна Arduino IDE, выберите Arduino UNO в качестве платы и выберите соответствующий COM-порт.


Плата: Инструменты > Плата > Arduino/Geniuno UNO.

 

 

ШАГ 3

 

Выберите последовательное устройство платы в меню Tools / Serial Port. Скорее всего, это COM3 или выше (COM1 и COM2 обычно зарезервированы для аппаратных последовательных портов). Чтобы узнать это, вы можете отключить плату и снова открыть меню; запись, которая исчезнет, ​​должна быть платой Arduino. Снова подключите плату и выберите этот последовательный порт.

 

 

ШАГ 4

 

ВЫВОД

 

Загрузите скетч и откройте Serial Monitor. Как только вы приблизите метку к модулю, вы, вероятно, получите что-то вроде рисунка, приведенного ниже. Не перемещайте тег, пока не будет отображена вся информация.

 

В этом примере проекта отображается вся полезная информация о теге, включая уникальный идентификатор (UID) тега, размер памяти и весь объем памяти 1 КБ. Память 1 КБ тега организована в 16 секторов (от 0 до 15) Каждый сектор далее делится на 4 блока (блоки от 0 до 3). Каждый блок может хранить 16 байтов данных (от 0 до 15). Блок 3 каждого сектора называется трейлером сектора и содержит информацию, называемую битами доступа к предоставить доступ для чтения и записи к оставшимся блокам в секторе. Это означает, что только нижние 3 блока (блок 0, 1 и 2) каждого сектора фактически доступны для хранения данных, то есть у нас есть 48 байтов на 64-байтовый сектор, доступных для нашего собственного использования. Также блок 0 сектора 0 известен как Блок производителя/данные производителя содержат данные производителя микросхемы и уникальный идентификатор (UID) 9.0003

 

 

ПРИМЕР КОДА:

 

Пример кода доступен по ссылке git здесь

 

Взаимодействие MFRC522 Модуль считывателя RFID RC522 с Arduino

В этом руководстве мы узнаем, как подключить считыватель RFID RC522 к Arduino и использовать карту RFID MIFARE Classic 1K и брелок. Модуль RC522 основан на микросхеме считывателя/записи RFID MFRC522 от NXP, работающей на частоте 13,56 МГц. Мы узнаем, как работает интерфейс считывателя RFID-карт Arduino RC522, с помощью нескольких тестовых кодов.

Краткое описание

Введение

Если вы соблюдаете правила дорожного движения в некоторых странах, электронные системы взимания платы за проезд (ETC) становятся обязательными. В ETC плата за проезд для транспортного средства автоматически вычитается, как только транспортное средство прибывает на будку. Нет необходимости платить наличными или ждать в очереди.

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

Все эти и многие другие приложения используют технологию RFID.

Взгляд назад на RFID

RFID — это сокращение от Radio Frequency Identification. Как следует из названия, RFID использует электромагнитные волны на радиочастоте для передачи данных. Простая система RFID состоит всего из двух компонентов: транспондера RFID и приемопередатчика RFID.

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

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

Затем IC подтверждает информацию, хранящуюся в нем, с помощью обратного радиосигнала.

Краткая заметка о RFID-модуле RC522

Со всем введением давайте углубимся в важный компонент этого проекта — RFID-модуль RC522. Это недорогой модуль считывателя RFID, основанный на микросхеме RFID MFRC522 от NXP.

Микросхема MFRC522 поддерживает широкий спектр RFID-меток, таких как MIFARE 1K, MIFARE 4K, MIFARE Mini и другие карты и метки на основе протокола ISO/IEC 14443.

Работает на частоте 13,46 МГц, рабочий диапазон до 50 мм. Микросхема MFRC522 поддерживает три типа последовательной связи с хостом (микроконтроллером, таким как Arduino). Это:

  • SPI
  • УАПП
  • I 2 С

Содержимое набора

Комплект считывателя RFID RC522 состоит из модуля считывателя RFID RC522, карты RFID, брелока RFID и пары штекерных разъемов для пайки. Обе RFID-метки, т. е. RFID-карта и RDIF-брелок в комплекте, совместимы с метками MIFARE 1K (оба имеют 1 КБ памяти).

Модуль считывателя RFID RC522 состоит из микросхемы MFRC522, кварцевого генератора 27,12 МГц, антенны, встроенной в печатную плату, и вспомогательных пассивных компонентов для излучения электромагнитного поля 13,56 МГц.

Важно помнить, что микросхема MFRC522 работает при напряжении питания от 2,5 В до 3,3 В, но коммуникационные контакты выдерживают напряжение до 5 В. Итак, напряжение питания должно быть 3,3 В, но вы можете подключить выводы данных к Arduino напрямую.

Схема контактов модуля RC522

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

Номер контакта

Название контакта

Описание

1

ВКЦ Контакт питания 3,3 В
2 РСТ

Пин-код сброса. Низкий уровень сбрасывает микросхему MFRC522.

3

ЗЕМЛЯ Земля
4 IRQ

Пин прерывания. Для прерывания хост-устройства (микроконтроллера).

5

МИСО/СКЛ/ТС Этот вывод действует как MISO в SPI, SCL в I 2 C и TX в UART
6 МОСИ

SPI MOSI Контакт.

7

СКК Тактовый контакт SPI.
8 СС / ПДД / RX

Этот контакт действует как SS в SPI, SDA в I 2 C и RX в UART

Терминология

В документации модуля RFID MFRC522 часто используются два термина. Это:

  • PCD
  • PICC

PCD — это сокращение от бесконтактного соединительного устройства. Это не что иное, как модуль считывания RFID, основанный на микросхеме MFRC522.

PICC — сокращение от Proximity Integrated Circuit Card — это RFID-карта или метка, созданная с использованием протокола ISO/IEC 14443, такого как MIFARE или NTAG.

Считыватель RFID-карт Arduino RC522 Interfaarduino megace

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

Но SPI является самым быстрым из трех со скоростью передачи данных до 10 Мбит/с. Итак, в этом проекте мы увидим, как подключить RFID-модуль RC522 к Arduino с помощью SPI.

Переходя к SPI Arduino, вместо использования программного SPI с битовым взрывом мы будем использовать аппаратный SPI. Это означает, что контакты SPI в Arduino фиксированы (по крайней мере, для MOSI, MISO и SCK).

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

Считыватель RFID RC522

Ардуино УНО/Нано Ардуино Мега
РСТ 9

5

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

10 53
МОСИ 11

51

МИСО

12 50
СКК 13

52

ПРИМЕЧАНИЕ. Вы ​​можете настроить выводы RST и SCK в Arduino на любой вывод цифрового ввода-вывода.

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

  • Arduino UNO
  • Модуль RFID RC522
  • RFID-метки (карта и брелок в комплекте)
  • Соединительные провода

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

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

Тестирование считывателя RFID-карт RC522

После выполнения всех необходимых подключений давайте приступим к тестированию интерфейса модуля RFID Arduino RC522. Сначала откройте Arduino IDE и убедитесь, что в качестве платы выбрана Arduino UNO. Теперь перейдите в Инструменты -> Управление библиотеками. . .

Введите «rc522» в строке поиска и установите библиотеку «MFRC522» от GithubCommunity.

Давайте теперь попробуем пример скетча под названием «DumpInfo», который считывает данные с PICC (например, карты или брелока) и распечатывает их на последовательном мониторе. Перейдите в меню «Файл» -> «Примеры» -> «MFRC522» -> «DumpInfo», чтобы открыть скетч-пример.

ПРИМЕЧАНИЕ. Я изменил контакт RST на D7 в Arduino UNO.

Скомпилируйте и загрузите скетч в Arduino и откройте последовательный монитор. Считыватель RFID RC522 ожидает обнаружения метки RFID. Итак, возьмите карту, которая у вас есть в комплекте, и поместите ее в непосредственной близости от RFID-считывателя (ближе к антенне).

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

Ниже приведен снимок экрана последовательного монитора для скетча DumpInfo.

Первые несколько строк содержат версию микропрограммы PCD (устройство чтения RFID) и сведения о PICC (метке RFID), такие как UID, SAK и тип карты.

После этого дамп основной памяти метки RFID. Давайте теперь проанализируем его.

Анализ карты памяти карты MIFARE Classic 1K

Карта RFID и брелок имеют тип MIFARE 1K, что означает EEPROM в PICC, т. е. карта RFID или брелок имеют размер 1 КБ. Этот 1 КБ памяти организован в 16 секторов.

Каждый сектор снова делится на 4 блока, и каждый блок содержит 16 байтов памяти. Итак, общая память:

16 секторов * 4 блока * 16 байт = 1024 байта или 1 КБ

При этом блок 0, т. е. первый блок в секторе 0, является резервом для данных производителя. Обычно он содержит 7-байтовый UID (уникальный идентификатор) или 4-байтовый NUID (неуникальный идентификатор).

Как упоминалось ранее, каждый сектор состоит из 4 блоков. В нем первые три блока — это блоки данных, а четвертый блок — трейлер сектора. Три блока данных каждого сектора могут использоваться для хранения 16 байтов данных каждый.

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

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

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