RFID MFRC-522 антенна , брелок, карта

270 руб.

1 в наличии

Артикул: 169 Категория:

Описание

Обзор аппаратного обеспечения – Модуль чтения / записи RF522 RFID

RFID модуль RC522 на основе микросхемы MFRC522 от NXP – это один из самых недорогих вариантов RFID, который вы можете найти в интернете менее чем за четыре доллара. Обычно он поставляется с картой RFID метки и брелоком с объемом памяти 1 КБ. И что лучше всего, он может записать метку, чтобы вы могли хранить в ней свое секретное сообщение.

Рисунок 3 Модуль RFID считывателя RC522 с меткой-картой и меткой-ключом
Рисунок 3 – Модуль RFID считывателя RC522 с меткой-картой и меткой-ключом

Модуль считывателя RFID RC522 предназначен для создания электромагнитного поля на частоте 13,56 МГц, которое он использует для связи с метками RFID (стандартные метки ISO 14443A). Считыватель может взаимодействовать с микроконтроллером через 4-контактный последовательный периферийный интерфейс (SPI) с максимальной скоростью передачи данных 10 Мбит/с. Он также поддерживает связь по протоколам I2C и UART.

У модуля имеется вывод прерывания. Это удобно потому, что вместо того, чтобы постоянно опрашивать RFID модуль «есть ли карта в поле зрения?», модуль сам предупредит нас, когда метка окажется рядом.

Рабочее напряжение модуля составляет от 2,5 до 3,3 В, но хорошая новость заключается в том, что логические выводы допускают напряжение 5 вольт, поэтому мы можем легко подключить его к Arduino или любому микроконтроллеру с 5-вольтовой логикой без использования какого-либо преобразователя логических уровней.

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

Распиновка RFID модуля RC522

Модуль RC522 имеет всего 8 контактов, соединяющих его с внешним миром.

Рисунок 4 Распиновка RFID модуля считывателя RC522
Рисунок 4 – Распиновка RFID модуля считывателя RC522

VCC обеспечивает питание для модуля. Напряжение питания может быть в диапазоне от 2,5 до 3,3 вольт. Вы можете подключить его к выходу 3.3V вашей платы Arduino. Помните, что подключение его к выводу 5V, скорее всего, выведет модуль из строя!

RST – вход для сброса и отключения питания. Когда на этот вывод подается низкий логический уровень, запускается жесткое отключение питания. Оно отключает всех внутренних потребителей тока, включая генератор, и входные выводы отключаются от внешних цепей. Во время нарастающего фронта на этом выводе модуль сбрасывается.

GND вывод земли, должен быть подключен к выводу GND на Arduino.

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

Вывод MISO / SCL / Tx действует либо как Master-In-Slave-Out (вход ведущего – выход ведомого) при включенном интерфейсе SPI, либо как последовательный тактовый сигнал при включенном интерфейсе I2C, либо как выход последовательных данных при включенном интерфейсе UART.

MOSI (Master Out Slave In) – вход SPI для модуля RC522.

SCK (Serial Clock) принимает тактовые импульсы, предоставляемые мастером на шине SPI, то есть Arduino.

Вывод SS / SDA / Rx действует либо как вход, когда включен интерфейс SPI, либо как линия последовательных данных, когда включен интерфейс I2C, либо как вход последовательных данных, когда включен интерфейс UART. Этот вывод обычно помечается заключением в квадрат, чтобы его можно было использовать в качестве опорной точки для идентификации других выводов.

Подключение RFID модуля RC522 к Arduino UNO

Теперь, когда мы знаем всё о модуле, мы можем подключить его к нашей плате Arduino!

Для начала подключите вывод VCC на модуле к выводу 3,3V на Arduino, а вывод GND – к земле Arduino. Вывод RST может быть подключен к любому цифровому выводу на Arduino. В нашем случае он подключен к цифровому выводу 5. Вывод IRQ не подключен, так как библиотека Arduino, которую мы собираемся использовать, не поддерживает его.

Теперь у нас остаются выводы, которые используются для связи по SPI. Поскольку модуль RC522 требует передачи больших данных, то наилучшая производительность будет обеспечена при использовании аппаратного модуля SPI в микроконтроллере. Использование выводов аппаратного SPI модуля намного быстрее, чем «дергание битов» в коде при взаимодействии через другой набор выводов.

Обратите внимание, что у плат Arduino выводы SPI различаются. Для плат Arduino, таких как UNO/Nano V3.0, это цифровые выводы 13 (SCK), 12 (MISO), 11 (MOSI) и 10 (SS).

Если у вас Arduino Mega, выводы отличаются! Вы должны использовать цифровые выводы 50 (MISO), 51 (MOSI), 52 (SCK) и 53 (SS). В таблице ниже приведен список выводов для связи по SPI для разных плат Arduino.

Список выводов для связи по SPI для разных плат Arduino
MOSI MISO SCK CS
Arduino Uno 11 12 13 10
Arduino Nano 11 12 13 10
Arduino Mega 51 50 52 53

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

Рисунок 5 Подключение модуля RFIDсчитывателя RC522 к Arduino UNO
Рисунок 5 – Подключение модуля RFIDсчитывателя RC522 к Arduino UNO

Как только вы всё подключите, вы готовы к работе!

Код Arduino. Считывание RFID метки

Связь с RFID модулем RC522 – это сложная работа, но, к счастью для нас, есть библиотека MFRC522, которая упрощает чтение и запись в RFID меток. Спасибо Мигелю Бальбоа. Сначала скачайте библиотеку, посетив репозиторий GitHub, или просто нажмите на кнопку ниже, чтобы скачать архив:

Чтобы установить библиотеку, откройте Arduino IDE, перейдите в Скетч → Подключить библиотеку → Добавить .ZIP библиотеку и выберите только что загруженный файл rfid-master.zip.

После установки библиотеки откройте меню Файл → Примеры → MFRC522 → DumpInfo.

Рисунок 6 Скетч DumpInfo библиотеки MFRC522
Рисунок 6 – Скетч DumpInfo библиотеки MFRC522

Этот скетч не будет записывать какие-либо данные в метку. Он просто сообщает вам, удалось ли ему прочитать метку, и отображает некоторую информацию о ней. Это может быть очень полезно, прежде чем опробовать любую новую метку!

Перейдите к началу скетча и убедитесь, что RST_PIN инициализирован правильно, в нашем случае мы используем цифровой вывод 5, поэтому измените его на 5!

Рисунок 7 Изменение вывода RST в примере скетча
Рисунок 7 – Изменение вывода RST в примере скетча

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

Рисунок 8 Вывод скетча DumpInfo
Рисунок 8 – Вывод скетча DumpInfo

Он отображает всю полезную информацию о метке, включая уникальный идентификатор (UID) метки, объем памяти и содержание всей памяти в 1 КБ.

Распределение памяти MIFARE Classic 1K

Память метки 1 КБ организована в 16 секторов (от 0 до 15). Каждый сектор дополнительно делится на 4 блока (блоки 0–3). Каждый блок может хранить 16 байтов данных (от 0 до 15).

Это говорит нам, что у нас точно

16 секторов x 4 блока x 16 байтов данных = 1024 байта = 1 КБ памяти

Весь 1 килобайт памяти с секторами, блоками и данными показан ниже.

Рисунок 9 Вывод скетча DumpInfo. Структура памяти
Рисунок 9 – Вывод скетча DumpInfo. Структура памяти
Рисунок 10 Трехмерное представление структуры памяти MIFARE Classic 1K
Рисунок 10 – Трехмерное представление структуры памяти MIFARE Classic 1K

Блок 3 каждого сектора называется Sector Trailer и содержит информацию, называемую Access Bits (биты доступа), для предоставления доступа на чтение и запись к остальным блокам в секторе. Это означает, что в каждом секторе на самом деле для хранения данных доступны только 3 нижних блока (блоки 0, 1 и 2), а это означает, что в 64 байтовом секторе у нас есть только 48 байтов, доступных для нашего собственного использования.

Блок 0 сектора 0 также известен как Manufacturer Block / Manufacturer Data содержит данные производителя микросхемы и уникальный идентификатор (UID). Блок производителя выделен ниже красным цветом.

Рисунок 11 Вывод скетча DumpInfo. Блок производителя
Рисунок 11 – Вывод скетча DumpInfo. Блок производителя