Урок 6. Arduino считываем метки (RFID-модуль RC522)
Для начала необходимо установить библиотеку 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 — линия прерываний;
В комплекте с модулем RFID-RC522 идут две метки, одна в виде пластиковой карточки, а вторая в виде брелка. При необходимости их можно докупить отдельно.
После того как все будет подключено на модуле будет гореть индикатор, это говорит о том что питание поступает на RFID . Пришло время запустить пробный скетч который находится в библиотеке которую мы установили.
Необходимо проверить правильность заданных констант:
Теперь загружаем скетч в ардуину и включаем Мониторинг последовательного порта.
Подносим метку к ридеру и модуль считает все данные с данной метки, например уникальный идентификатор метки UID.
An Introduction to RFID
![]()
The RC522 RFID module based on MFRC522 IC from NXP is one of the most inexpensive RFID options. It usually comes with an RFID card tag and key fob tag having 1KB memory. And best of all, it can write a tag.
Working
The RC522 RFID Reader module is designed to create a 13.56MHz electromagnetic field that it uses to communicate with the RFID tags (ISO 14443A standard tags). The reader can communicate with a microcontroller over a 4-pin Serial Peripheral Interface (SPI) with a maximum data rate of 10Mbps. It also supports communication over I2C and UART protocols.
The module comes with an interrupt pin. It is handy because instead of constantly asking the RFID module “is there a card in view yet? “, the module will alert us when a tag comes into its vicinity.
The operating voltage of the module is from 2.5 to 3.3V, but the logic pins are 5-volt tolerant, so it can be easily connected to an Arduino or any 5V logic microcontroller without using any logic level converter.
RC522 RFID Module Pinout
The RC522 module has a total of 8 pins that interface it to the outside world. The connections are as follows:
VCC supplies power for the module. This can be anywhere from 2.5 to 3.3 volts. It can be connected to 3.3V output from the Arduino.
RST is an input for Reset and power-down. When this pin goes low, hard power-down is enabled. This turns off all internal current sinks including the oscillator and the input pins are disconnected from the outside world. On the rising edge, the module is reset.
GND is the Ground Pin and needs to be connected to the GND pin on the Arduino.
IRQ is an interrupt pin that can alert the microcontroller when an RFID tag comes into its vicinity.
MISO / SCL / Tx pin acts as Master-In-Slave-Out when SPI interface is enabled, acts as serial clock when I2C interface is enabled and acts as serial data output when UART interface is enabled.
MOSI (Master Out Slave In) is SPI input to the RC522 module.
SCK (Serial Clock) accepts clock pulses provided by the SPI bus Master i.e. Arduino.
SS / SDA / Rx pin acts as Signal input when SPI interface is enabled, acts as serial data when I2C interface is enabled and acts as serial data input when UART interface is enabled. This pin is usually marked by encasing the pin in a square so it can be used as a reference for identifying the other pins.
Wiring
To start hooking up the Arudino, connect the VCC pin on the module to 3.3V on the Arduino and GND pin to ground. The pin RST can be connected to any digital pin on the Arduino. In this case, it’s connected to digital pin#5.
Each Arduino Board has different SPI pins which should be connected accordingly. Each Arduino Board has different SPI pins which should be connected accordingly.
Wiring RC522 RFID Reader Writer Module with Arduino UNO
Arduino Code — Reading
There’s a library called MFRC522 library which simplifies reading from and writing to RFID tags. Once the library is installed, open Examples submenu and select MFRC522 > DumpInfo example sketch.
This sketch will not write any data to the tag. It just tells us if it managed to read the tag, and displays some information about it.It should be made sure that the RST_PIN is correctly initialized.
Now the sketch is uploaded and the Serial Monitor is opened. On bringing the tag closer to the module, this is seen on the monitor.
It displays all the useful information about the tag including tag’s Unique ID (UID), the memory size and the whole 1K memory.
MIFARE Classic 1K Memory Layout
The 1K memory of the Tag is organized in 16 sectors (from 0 to 15) Each sector is further divided into 4 blocks (block 0 to 3). Each block can store 16 bytes of data (from 0 to 15).
16 sectors x 4 blocks x 16 bytes of data = 1024 bytes = 1K memory
The whole 1K memory with sectors, blocks and data is highlighted below.
3D Representation of MIFARE Classic 1K Memory Map Layout
The Block 3 of each sector is called Sector Trailer and contains information called Access Bits to grant read and write access to remaining blocks in a sector. That means only the bottom 3 blocks (block 0, 1 & 2) of each sector are actually available for data storage. Also The Block 0 of sector 0 is known as Manufacturer Block/Manufacturer Data contains the IC manufacturer data, and the Unique IDentifier (UID). The Manufacturer Block is highlighted in red below.
Arduino Code -Writing
This sketch will do a basic demonstration of writing custom data to RFID tag.
The sketch starts with including the MFRC522 and SPI library, defining Arduino pins to which RC522 is connected and instantiating MFRC522 reader objects.Next, a block in which we are going to store the data has to be defined. Here sector 0 block 2 is selected, since writing into ‘sector trailer’ block can make the block unusable. Next, an array of 16 bytes named blockcontent[16] is defined which holds the message to write into the block. Next, an array of 18 bytes named readbackblock[18] has to be defined. This can be used to read the written contents back. The MIFARE_Read method in MFRC522 library requires a buffer that is at least 18 bytes to hold the 16 bytes of a block.
In loop function: first scanning is done to see if there is a card in view, if yes, that card is selected for writing and reading purposes.
Checking the success of the operation can be done using custom function called readBlock() which again takes two parameters — one is block number and other is array to store block contents. Finally, the contents of readbackblock array using a for loop are printed and displayed on the serial monitor.
Arduino и считыватель RFID RC522
RFID – технология бесконтактного чтения и записи меток. Набор GyverKIT (с партии 003) комплектуется ключ-картой, меткой-брелоком, а также RFID считывателем RC522: новая чёрная модель платы для работы с RFID метками на частоте 13.56 MHz. 
Помимо комплектных меток, данный модуль читает и некоторые другие бесконтактные карты (банковские, проездные, пропускные и т.д.), их тоже можно использовать в своих проектах.
Подключение
Модуль подключается по шине SPI, а также требует два дополнительных цифровых пина на управление SDA (выполняет роль CS) и RST:
- SDA – любой пин
- SCK – (SCLK) D13
- MOSI – (MOSI) D11
- MISO – (MISO) D12
- GND – GND
- RST – любой пин
- 3.3V – 3V3

Библиотеки
Для работы с этим модулем используется библиотека MFRC522 от miguelbalboa. Библиотека есть в архиве к набору GyverKIT, а свежую версию всегда можно установить/обновить из встроенного менеджера библиотек Arduino по названию MFRC522. Краткая документация находится по ссылке выше, базовые примеры есть в самой библиотеке.
Примеры
Библиотека довольно сложна в использовании, особенно для чтения и записи хранящейся на метке информации. Но все метки имеют свой уникальный ID – идентификационный номер (4-10 байт), у большинства меток он жёстко задан и его нельзя изменить, что и можно использовать для идентификации. Простой пример чтения ID метки как 4-байтного числа:
Как подключить RFID считыватель RC522 к Arduino
В этой статье мы рассмотрим подключение к Arduino считывателя карт и брелоков RFID RC522, работающего на частоте 13,56 МГц.
- Arduino (или совместимая плата); ;
- беспроводная RFID метка (идёт в комплекте по ссылке выше) или бесконтактный билет на метро/наземный транспорт; ;
- соединительные провода (вот такие);
- компьютер с Arduino IDE.
Инструкция по подключению считывателя беспроводных радиометок RFID-RC522 к Arduino
1 Описание считывателяRFID RC522
Модуль RFID-RC522 выполнен на микросхеме MFRC522 фирмы NXP. Эта микросхема обеспечивает двухстороннюю беспроводную (до 6 см) коммуникацию на частоте 13,56 МГц.
Беспроводной модуль RFID-RC522
Микросхема MFRC522 поддерживает следующие варианты подключения:
| Интерфейс | Скорость передачи |
|---|---|
| SPI (Serial Peripheral Interface, последовательный интерфейс для связи периферийных устройств) | до 10 Мбит/сек; |
| двухпроводной интерфейс I 2 C | до 3400 кбод в режиме High-speed, до 400 кбод в режиме Fast; |
| последовательный UART (аналог RS232) | до 1228,8 кбод. |
С помощью данного модуля можно записывать и считывать данные с различных RFID-меток: брелоков от домофонов, пластиковых карточек-пропусков и билетов на метро и наземный транспорт, а также набирающих популярность NFC -меток.
2 Схема подключения RFID-RC522 к Arduino
Подключим модуль RFID-RC522 к Arduino по интерфейсу SPI по приведённой схеме.
Схема подключения RFID-RC522 к Arduino по интерфейсу SPI
Питание модуля обеспечивается напряжением от 2,5 до 3,3 В. Остальные выводы подключаем к Arduino так:
| Пин RC522 | Пин Arduino |
|---|---|
| RST | D9 |
| SDA (SS) | D10 |
| MOSI | D11 |
| MISO | D12 |
| SCK | D13 |
Не забывайте также, что Arduino имеет специальный разъём ICSP для работы по интерфейсу SPI. Его распиновка также приведена на иллюстрации. Можно подключить выводы RST, SCK, MISO, MOSI и GND модуля RC522 к разъёму ICSP на Ардуино.
3 Библиотека для работы Arduino с RFID
Микросхема MFRC522 имеет достаточно обширную функциональность. Познакомиться со всеми возможностями можно изучив её техническое описание (приложено внизу статьи). Мы же для знакомства с возможностями данного устройства воспользуемся одной из готовых библиотек, написанных для работы Arduino с RC522. Скачайте её и распакуйте в директорию Arduino IDE\libraries\
Установка библиотеки «rfid-master» для работы Arduino с RFID-метками
После этого запустите среду разработки Arduino IDE.
4 Скетч для считывания информации, записанной на RFID-метке
Теперь давайте откроем скетч из примеров: Файл Образцы MFRC522 DumpInfo и загрузим его в память Arduino.
Открываем скетч DumpInfo
Данный скетч определяет тип приложенного к считывателю устройства и считывает данные, записанные на RFID-метке или карте, а затем выводит их в последовательный порт.
Текст скетча достаточно хорошо прокомментирован.
Для более полного знакомства с библиотекой изучите файлы MFRC522.h и MFRC522.cpp из директории rfid-master.
5 Дамп данных с RFID-метки
Запустим монитор последовательного порта сочетанием клавиш Ctrl+Shift+M , через меню Инструменты или кнопкой с изображением лупы. Теперь приложим к считывателю билет метро или любую другую RFID-метку. Монитор последовательного порта покажет данные, записанные на RFID-метку или билет.
Считываем данные с билета на наземный транспорт и метро с помощью RFID
Например, в моём случае здесь зашифрованы уникальный номер билета, дата покупки, срок действия, количество оставшихся поездок, а также служебная информация. Мы разберём в одной из будущих статей, что же записано на карты метро и наземного транспорта.
Примечание
Да, с помощью модуля RFID-RC522 можно записать данные на билет метро. Но не обольщайтесь, каждая карта имеет неперезаписываемый счётчик циклов записи, так что «добавить» поездок себе на метро не получится – это сразу будет обнаружено и карта будет забракована турникетом 🙂 А вот использовать билеты метро для записи на них небольших объёмов данных – от 1 до 4 кб – можно. И способы применения этому ограничены только вашей фантазией.
