RFID – технология идентификации на основе считывания и записи данных с помощью радиосигналов. Данные для идентификации содержатся в RFID-метках (транспондерах). Аббривиатура RFID является сокращением от «Radio Frequency Identification», что переводится как «радиочастотная идентификация».
Данный набор содержит:
- модуль RFID RC522 (считыватель);
- RFID-метку в виде карты доступа;
- RFID-метку в виде брелока для ключей;
- прямую 8-пиновую контактную панель;
- Г-образную 8-пиновую контактную панель.
Подключать RFID RC522 можно по интерфейcу SPI. Модуль RFID RC522 имеет 8-пиновый разъем стандарта 2,54 мм:
- 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 В.
Пример 1
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
#include <SPI.h> #include <MFRC522.h> #define RST_PIN 9 #define SS_PIN 10 MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance void setup() { Serial.begin(9600); // Initialize serial communications with the PC while (!Serial); // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4) SPI.begin(); // Init SPI bus mfrc522.PCD_Init(); // Init MFRC522 ShowReaderDetails(); // Show details of PCD - MFRC522 Card Reader details Serial.println(F("Scan PICC to see UID, type, and data blocks...")); } void loop() { // Look for new cards if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } // Select one of the cards if ( ! mfrc522.PICC_ReadCardSerial()) { return; } // Dump debug info about the card; PICC_HaltA() is automatically called mfrc522.PICC_DumpToSerial(&(mfrc522.uid)); } void ShowReaderDetails() { // Get the MFRC522 software version byte v = mfrc522.PCD_ReadRegister(mfrc522.VersionReg); Serial.print(F("MFRC522 Software Version: 0x")); Serial.print(v, HEX); if (v == 0x91) Serial.print(F(" = v1.0")); else if (v == 0x92) Serial.print(F(" = v2.0")); else Serial.print(F(" (unknown)")); Serial.println(""); // When 0x00 or 0xFF is returned, communication probably failed if ((v == 0x00) || (v == 0xFF)) { Serial.println(F("WARNING: Communication failure, is the MFRC522 properly connected?")); } } |
Пример 2
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
#include <SPI.h> // подключаем библиотеки #include <MFRC522.h> #define RST_PIN 9 #define SS_PIN 10 #define RED_LED 2 #define GREEN_LED 3 MFRC522 mfrc522(SS_PIN, RST_PIN); unsigned long uidDec, uidDecTemp; // для хранения номера метки в десятичном формате void setup() { Serial.begin(9600); Serial.println("Waiting for card..."); SPI.begin(); // инициализация SPI / Init SPI bus. mfrc522.PCD_Init(); // инициализация MFRC522 / Init MFRC522 pinMode(RED_LED, OUTPUT); // красный светодиод pinMode(GREEN_LED, OUTPUT); // зеленый светодиод } void loop() { // по умолчанию светодиоды не горят digitalWrite(RED_LED, LOW); digitalWrite(GREEN_LED, LOW); // Поиск новой метки if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } // Выбор метки if ( ! mfrc522.PICC_ReadCardSerial()) { return; } uidDec = 0; // Выдача серийного номера метки. for (byte i = 0; i < mfrc522.uid.size; i++) { uidDecTemp = mfrc522.uid.uidByte[i]; uidDec = uidDec * 256 + uidDecTemp; } Serial.println("Card UID: "); Serial.println(uidDec); // Выводим UID метки в монитор порта if (uidDec == 361056883) // Сравниваем Uid метки, если он равен заданному, то загорается зеленый светодиод, иначе красный { digitalWrite(GREEN_LED, HIGH); digitalWrite(RED_LED, LOW); } else { digitalWrite(RED_LED, HIGH); digitalWrite(GREEN_LED, LOW); } delay(1000); } |