RFID – технология бесконтактного чтения и записи меток. Комплектуется ключ-картой, меткой-брелоком, а также RFID считывателем RC522: новая чёрная модель платы для работы с RFID метками на частоте 13.56 MHz.
Модуль подключается по шине SPI, а также требует два дополнительных цифровых пина на управление SDA (выполняет роль CS) и RST:
- SDA — Slave Select — выбор ведомого, SPI;
- SCK — Serial Clock — тактовый сигнал, SPI;
- MOSI — Master Output Slave Input — данные от ведущего к ведомому, SPI;
- MISO — Master Input Slave Output — данные от ведомого к ведущему, SPI;
- IRQ — линия прерываний;
- GND — земля
- RST — линия сброса. Данный пин подлючается к цифровму порту с ШИМ (PWM);
- VCC — питание 3.3 В.

Пример: чтение ID метки как 4-байтного числа

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#include <MFRC522.h> MFRC522 rfid(10, 9); // SDA, RST void setup() { Serial.begin(9600); SPI.begin(); // запуск шины rfid.PCD_Init(); // инициализация модуля } void loop() { // если поднесена метка if (rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial()) { // запишем метку в 4 байта uint32_t ID; for (byte i = 0; i < 4; i++) { ID <<= 8; ID |= rfid.uid.uidByte[i]; } /* В таком виде ID метки удобно хранить и сравнивать, но большинство карт имеют ID большего размера (до 10 байт), для работы с полной длиной нужно оперировать массивом rfid.uid.uidByte. Реальный размер прочитанного ID кстати можно узнать из rfid.uid.size */ // выведем Serial.println(ID, HEX); delay(500); } } |
Схема
