What is rfid? how it works? interface rc522 rfid module with arduino

Содержание

Проект на Arduino

RFID система контроля доступа для дверного замка

Давайте создадим небольшой проект на Arduino, чтобы продемонстрировать, как простой модуль RFID считывателя RC522 можно использовать для создания RFID системы контроля доступа для дверного замка. Наша программа будет сканировать уникальный идентификатор каждой RFID метки, когда она достаточно близко, чтобы запитываться от считывателя RC522. Если UID метки соответствует предопределенному значению (), которое хранится в памяти Arduino, доступ будет предоставлен. И если сканируем любую неизвестную метку, доступ будет запрещен. Круто! Так ведь?

Так выглядит результат.

Рисунок 13 – Демонстрация работы RFID системы контроля доступа для дверного замка

Конечно, этот проект можно привязать к открытию дверей, включению реле, включению светодиода или к чему-то еще.

Если вы не знакомы с символьными LCD дисплеями размером 16×2, то взгляните на эту статью.

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

Рисунок 14 – RFID система контроля доступа для дверного замка. Подключение RFID считывателя RC522 и LCD дисплея к Arduino

Всё! Теперь попробуйте приведенный ниже скетч в работе.

Программа довольно проста. Сначала мы включаем необходимые библиотеки, определяем выводы Arduino, создаем объекты LCD и MFRC522 и определяем главную метку.

В функции мы инициализируем интерфейс SPI, объект MFRC522 и LCD дисплей. После этого мы печатаем на LCD дисплее приветственное сообщение.

В функции мы ждем, пока не будет отсканирована новая метка. Как только это будет сделано, мы сравним неизвестную метку с мастер-меткой, определенной в функции . Всё! Если ID метки совпадает с ID мастера, доступ предоставляется, в противном случае в доступе будет отказано.

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

Шаг 5: Код проекта

Чтобы код проекта был скомпилирован, нам нужно включить некоторые библиотеки. Прежде всего, нам нужна библиотека MFRC522 Rfid.

Чтобы установить её, перейдите в Sketch -> Include Libraries -> Manage libraries (Управление библиотеками). Найдите MFRC522 и установите её.

Нам также нужна библиотека Adafruit SSD1306 и библиотека Adafruit GFX для отображения.

Установите обе библиотеки. Библиотека Adafruit SSD1306 нуждается в небольшой модификации. Перейдите в папку Arduino -> Libraries, откройте папку Adafruit SSD1306 и отредактируйте библиотеку Adafruit_SSD1306.h. Закомментируйте строку 70 и раскомментируйте строку 69, т.к. дисплей имеет разрешение 128×64.

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

int code[] = {69,141,8,136}; // UID

Затем мы инициализируем считыватель RFID и дисплей:

rfid.PCD_Init();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

После этого в функции цикла мы проверяем тег на считывателе каждые 100 мс.

Если на считывателе есть тег, мы читаем его UID и печатаем его на дисплее. Затем мы сравниваем UID тега, который мы только что прочитали, со значением, которое хранится в кодовой переменной. Если значения одинаковы, мы выводим сообщение UNLOCK, иначе мы не будем отображать это сообщение.

if(match)
    {
      Serial.println("\nI know this card!");
      printUnlockMessage();
    }else
    {
      Serial.println("\nUnknown Card");
    }

Конечно, вы можете изменить этот код, чтобы сохранить более 1 значения UID, чтобы проект распознал больше RFID-меток. Это просто пример.

Код проекта:

#include <MFRC522.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <SPI.h>


#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

#define SS_PIN 10
#define RST_PIN 9
 
MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class

MFRC522::MIFARE_Key key; 

int code[] = {69,141,8,136}; //This is the stored UID
int codeRead = 0;
String uidString;
void setup() {
  
  Serial.begin(9600);
  SPI.begin(); // Init SPI bus
  rfid.PCD_Init(); // Init MFRC522 
  
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3D (for the 128x64)

  // Clear the buffer.
  display.clearDisplay();
  display.display();
  display.setTextColor(WHITE); // or BLACK);
  display.setTextSize(2);
  display.setCursor(10,0); 
  display.print("RFID Lock");
  display.display();
  
}

void loop() {
  if(  rfid.PICC_IsNewCardPresent())
  {
      readRFID();
  }
  delay(100);

}

void readRFID()
{
  
  rfid.PICC_ReadCardSerial();
  Serial.print(F("\nPICC type: "));
  MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
  Serial.println(rfid.PICC_GetTypeName(piccType));

  // Check is the PICC of Classic MIFARE type
  if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&  
    piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
    piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
    Serial.println(F("Your tag is not of type MIFARE Classic."));
    return;
  }

    clearUID();
   
    Serial.println("Scanned PICC's UID:");
    printDec(rfid.uid.uidByte, rfid.uid.size);

    uidString = String(rfid.uid.uidByte)+" "+String(rfid.uid.uidByte)+" "+String(rfid.uid.uidByte)+ " "+String(rfid.uid.uidByte);
    
    printUID();

    int i = 0;
    boolean match = true;
    while(i<rfid.uid.size)
    {
      if(!(rfid.uid.uidByte == code))
      {
           match = false;
      }
      i++;
    }

    if(match)
    {
      Serial.println("\nI know this card!");
      printUnlockMessage();
    }else
    {
      Serial.println("\nUnknown Card");
    }


    // Halt PICC
  rfid.PICC_HaltA();

  // Stop encryption on PCD
  rfid.PCD_StopCrypto1();
}

void printDec(byte *buffer, byte bufferSize) {
  for (byte i = 0; i < bufferSize; i++) {
    Serial.print(buffer < 0x10 ? " 0" : " ");
    Serial.print(buffer, DEC);
  }
}

  void clearUID()
  {
    display.setTextColor(BLACK); // or BLACK);
    display.setTextSize(1);
    display.setCursor(30,20); 
    display.print(uidString);
    display.display();
  }

  void printUID()
  {
    display.setTextColor(WHITE); // or BLACK);
    display.setTextSize(1);
    display.setCursor(0,20); 
    display.print("UID: ");
    display.setCursor(30,20); 
    display.print(uidString);
    display.display();
  }

  void printUnlockMessage()
  {
    display.display();
    display.setTextColor(BLACK); // or BLACK);
    display.setTextSize(2);
    display.setCursor(10,0); 
    display.print("RFID Lock");
    display.display();
    
    display.setTextColor(WHITE); // or BLACK);
    display.setTextSize(2);
    display.setCursor(10,0); 
    display.print("Unlocked");
    display.display();
    
    delay(2000);
    
    display.setTextColor(BLACK); // or BLACK);
    display.setTextSize(2);
    display.setCursor(10,0); 
    display.print("Unlocked");

    display.setTextColor(WHITE); // or BLACK);
    display.setTextSize(2);
    display.setCursor(10,0); 
    display.print("RFID Lock");
    display.display();
  }

Библиотека MFRC522

Установим через менеджер библиотек вариант MFRC522 (домашняя страница).

При поднесении карточки в мониторе порта увидите большую таблицу данных

Дождитесь полной загрузки данных и обратите внимание на данные в блоке 0 — там можно увидеть идентификатор

Но у вас нет необходимости вручную считывать информацию из массива данных, идентификатор можно получить через вызов функции. В начале есть отдельная строка Card UID: 77 E7 BC 3A.

Рассмотрим упрощённый пример. Суть в следующем. Инициализируем объект класса MFRC522 и проверяем различные условия. Если к ридеру не поднесли карточку, то выходим из функции loop(), если прочитать карточку не можем, то также выходим из функции. Если оба условия всё же выполнились (есть карта и данные с неё), то выполняем уже нужный код.

Подносим карточку и брелок из комплекта (MIFARE 1 KB), а также карточки московского транспорта (MIFARE Ultralight or Ultralight C). Идентификатор карточки выводится в десятичном формате.

Вход по пропускам

Каждая карточка имеет свой идентификатор, который можно узнать после запуска скетча библиотеки DumpInfo. Запомним идентификатор и напишем свой скетч для проверки. Если идентификатор совпадает, то выводим сообщение (включаем светодиод, открываем ворота и т.д.). Если идентификатор не совпадает, то выводим сообщение о запрете. Карточку с правом доступа отдаём коту (вешаем на шею) и проверяем.

Меня программа не пустила на порог собственного дома, а кота пустили. «Умный дом» — угроза человечеству.

Troubleshooting

  • I don’t get input from reader or WARNING: Communication failure, is the MFRC522 properly connected?
    1. Check your physical connection, see .
    2. Check your pin settings/variables in the code, see .
    3. Check your pin header soldering. Maybe you have cold solder joints.
    4. Check your power supply. Maybe add a capacitor between 3.3V and GND to stabilize the power #560, sometimes an additional delay after PCD_Init() can help.
    5. Check voltage. Most breakouts work with 3.3V.
    6. SPI only works with 3.3V, most breakouts seem 5V tolerant, but try a level shifter.
    7. SPI does not like long connections. Try shorter connections.
    8. SPI does not like prototyping boards. Try soldered connections.
    9. According to reports #101, #126 and #131, there may be a problem with the soldering on the MFRC522 breakout. You could fix this on your own.
  • Firmware Version: 0x12 = (unknown) or other random values
    1. The exact reason of this behaviour is unknown.
    2. Some boards need more time after PCD_Init() to be ready. As workaround add a delay(4) directly after PCD_Init() to give the PCD more time.
    3. If this sometimes appears, a bad connection or power source is the reason.
    4. If the firmware version is reported permanent, it is very likely that the hardware is a fake or has a defect. Contact your supplier.
  • Sometimes I get timeouts or sometimes tag/card does not work.
    1. Try the other side of the antenna.
    2. Try to decrease the distance between the MFRC522 and your tag.
    3. Increase the antenna gain per firmware:
    4. Use better power supply.
    5. Hardware may be corrupted, most products are from china and sometimes the quality is really poor. Contact your seller.
  • My tag/card doesn’t work.
    1. Distance between antenna and token too large (>1cm).
    2. You got the wrong type PICC. Is it really 13.56 MHz? Is it really a Mifare Type A?
    3. NFC tokens are not supported. Some may work.
    4. Animal RFID tags are not supported. They use a different frequency (125 kHz).
    5. Hardware may be corrupted, most products are from china and sometimes the quality is really poor. Contact your seller.
    6. Newer versions of Mifare cards like DESFire/Ultralight maybe not work according to missing authentication, see or different .
  • My mobile phone doesn’t recognize the MFRC522 or my MFRC522 can’t read data from other MFRC522
    1. Card simulation is not supported.
    2. Communication with mobile phones is not supported.
    3. Peer to peer communication is not supported.
  • I can only read the card UID.
    1. Maybe the AccessBits have been accidentally set and now an unknown password is set. This can not be reverted.
    2. Probably the card is encrypted. Especially official cards like public transport, university or library cards. There is no way to get access with this library.
  • I need more features.
    1. If software: code it and make a pull request.
    2. If hardware: buy a more expensive chip like the PN532 (supports NFC and many more, but costs about $15)

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

RFID или система радиочастотной идентификации состоит из двух основных компонентов: транспондера или метки, прикрепленной к идентифицируемому объекту, и приемопередатчика, также известного как интеррогатор (interrogator) или считыватель.

Рисунок 1 – Как работает технология RFID

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

Для считывания информации, закодированной в метке, она размещается в непосредственной близости от считывателя (она не обязательно должна находиться в пределах прямой видимости от считывателя). Считыватель генерирует электромагнитное поле, которое заставляет электроны проходить через антенну метки и обеспечивать чип питанием.

Рисунок 2 – Как работает технология RFID

Обеспеченная питанием микросхема внутри метки затем отвечает отправкой своей сохраненной информации обратно считывателю в виде другого радиосигнала. Это называется обратным рассеянием (backscatter). Обратное рассеяние или изменение электромагнитной/радиочастотной волны обнаруживается и интерпретируется считывателем, который затем отправляет данные на компьютер или микроконтроллер.

RC522 RFID Module Pinout

The RC522 module has total 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. You can connect it to 3.3V output from your Arduino. Remember connecting it to 5V pin will likely destroy your module!

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 GND pin on the Arduino.

IRQ is an interrupt pin that can alert the microcontroller when 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.

Шаг 3. Основные характеристики:

  • Входное напряжение: 3.3 В
  • Частота: 13,56 МГц

Прежде чем начать писать код, вам необходимо скачать библиотеку для этого датчика из этого хранилища.

Извлеките содержимое из zip-папки «rfid-master» и добавьте эту папку с библиотекой в существующие библиотеки Arduino IDE.

После этого перезапустите Arduino IDE.

Теперь наш Arduino готов воспринимать команды и выполнять их првильно.

Код Arduino будет представлен в конце этого урока. Скомпилируйте код и исправьте ошибки «опечатки» (если есть).

Теперь пришло время подключить наш Arduino к считывателю RFID. Ознакомьтесь с правильным подключением контактов ниже, а также воспользовавшись принципиальной схемой подлючения.

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

Сейчас на рынке доступно достаточно много моделей считывателей RFID меток, однако для нашего проекта мы выбрали модуль RC522, работающий по интерфейсу SPI. Это достаточно дешевое устройство, доступное для покупки практически во всех магазинах радиоэлектроники. Модуль RC522 имеет интерфейсы SPI, UART и I2C, однако по умолчанию он использует интерфейс SPI. Внешний вид данного модуля показан на следующем рисунке.

В этом проекте модуль RC522 подключен к плате Arduino, а плата Arduino подключена к компьютеру. Когда RFID метку подносят к модулю RC522, плата Arduino с его помощью считывает идентификатор RFID метки (ID number) и передает его в компьютер.

Как подключить RFID считыватель RC522 к Arduino

В этой статье мы рассмотрим подключение к Arduino считывателя карт и брелоков RFID RC522, работающего на частоте 13,56 МГц.

Модуль RFID-RC522 выполнен на микросхеме MFRC522 фирмы NXP. Эта микросхема обеспечивает двухстороннюю беспроводную (до 6 см) коммуникацию на частоте 13,56 МГц.

Беспроводной модуль RFID-RC522

Микросхема MFRC522 поддерживает следующие варианты подключения:

SPI (Serial Peripheral Interface, последовательный интерфейс для связи периферийных устройств) до 10 Мбит/сек;
двухпроводной интерфейс I2C до 3400 кбод в режиме High-speed,до 400 кбод в режиме Fast;
последовательный UART (аналог RS232) до 1228,8 кбод.

С помощью данного модуля можно записывать и считывать данные с различных RFID-меток: брелоков от домофонов, пластиковых карточек-пропусков и билетов на метро и наземный транспорт, а также набирающих популярность NFC-меток.

RFID – это сокращение от “Radio Frequency IDentification” и переводится как «радиочастотная идентификация». NFC – это “Near field communication”, «коммуникация ближнего поля» или «ближняя бесконтактная связь».

2Схема подключения RFID-RC522 к Arduino

Подключим модуль RFID-RC522 к Arduino по интерфейсу SPI по приведённой схеме.

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

Питание модуля обеспечивается напряжением от 2,5 до 3,3 В. Остальные выводы подключаем к 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 имеет достаточно обширную функциональность. Познакомиться со всеми возможностями можно изучив её паспорт (datasheet). Мы же для знакомства с возможностями данного устройства воспользуемся одной из готовых библиотек, написанных для работы Arduino с RC522. Скачайте её и распакуйте в директорию Arduino IDE\libraries\

Установка библиотеки “rfid-master” для работы Arduino с RFID-метками

После этого запустите среду разработки Arduino IDE.

4Скетч для считывания информации, записанной на RFID-метке

Теперь давайте откроем скетч из примеров: Файл Образцы MFRC522 DumpInfo и загрузим его в память Arduino.

Открываем скетч DumpInfo

Данный скетч определяет тип приложенного к считывателю устройства и считывает данные, записанные на RFID-метке или карте, а затем выводит их в последовательный порт.

#include #include const int RST_PIN = 9; // пин RST const int SS_PIN = 10; // пин SDA (SS) MFRC522 mfrc522(SS_PIN, RST_PIN); // создаём объект MFRC522 void setup() { Serial.begin(9600); // инициализация послед. порта SPI.begin(); // инициализация шины SPI mfrc522.PCD_Init(); // инициализация считывателя RC522 } void loop() { // Ожидание прикладывания новой RFID-метки: if ( ! mfrc522.PICC_IsNewCardPresent()) { return; // выход, если не приложена новая карта } // Считываем серийный номер: if ( ! mfrc522.PICC_ReadCardSerial()) { return; // выход, если невозможно считать сер. номер } // Вывод дампа в послед. порт: mfrc522.PICC_DumpToSerial(&(mfrc522.uid)); }

Текст скетча достаточно хорошо прокомментирован.

Для более полного знакомства с библиотекой изучите файлы MFRC522.h и MFRC522.cpp из директории rfid-master.

5Дамп данных с RFID-метки

Запустим монитор последовательного порта сочетанием клавиш Ctrl+Shift+M, через меню Инструменты или кнопкой с изображением лупы. Теперь приложим к считывателю билет метро или любую другую RFID-метку. Монитор последовательного порта покажет данные, записанные на RFID-метку или билет.

Считываем данные с билета на наземный транспорт и метро с помощью RFID

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

Примечание

Да, с помощью модуля RFID-RC522 можно записать данные на билет метро.

Но не обольщайтесь, каждая карта имеет неперезаписываемый счётчик циклов записи, так что «добавить» поездок себе на метро не получится – это сразу будет обнаружено и карта будет забракована турникетом А вот использовать билеты метро для записи на них небольших объёмов данных – от 1 до 4 кб – можно. И способы применения этому ограничены только вашей фантазией.

Pin Layout

The following table shows the typical pin layout used:

  PCD Arduino
MFRC522 Uno / 101 Mega Nano v3 Leonardo / Micro Pro Micro Yun Due
Signal Pin Pin Pin Pin Pin Pin Pin Pin
RST/Reset RST 9 5 D9 RESET / ICSP-5 RST Pin9 22
SPI SS SDA 10 53 D10 10 10 Pin10 23
SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16 ICSP4 SPI-4
SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14 ICSP1 SPI-1
SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15 ICSP3 SPI-3
  ESP8266 Teensy
Wemos D1 mini 2.0 ++ 2.0 3.1
Signal Pin Pin Pin Pin
RST/Reset D3 7 4 9
SPI SS D8 20 10
SPI MOSI D7 2 22 11
SPI MISO D6 3 23 12
SPI SCK D5 1 21 13
(, , ) Configurable, typically defined as RST_PIN in sketch/program.
(, , ) Configurable, typically defined as SS_PIN in sketch/program.
The SDA pin might be labeled SS on some/older MFRC522 boards.
Source: .

Important: If your micro controller supports multiple SPI interfaces, the library only uses the default (first) SPI of the Arduino framework.

Step 2: Simple Code to Read and Print RFID Tags Value

Copy the Below code then upload it on your Arduino

/*PINOUT:
RC522 MODULE Uno/Nano MEGA
SDA D10 D9
SCK D13 D52
MOSI D11 D51
MISO D12 D50
IRQ N/A N/A
GND GND GND
RST D9 D8
3.3V 3.3V 3.3V
*/
/* Include the standard Arduino SPI library */
#include <SPI.h>
/* Include the RFID library */
#include <RFID.h>

/* Define the DIO used for the SDA (SS) and RST (reset) pins. */
#define SDA_DIO 9
#define RESET_DIO 8
/* Create an instance of the RFID library */
RFID RC522(SDA_DIO, RESET_DIO);

void setup()
{
Serial.begin(9600);
/* Enable the SPI interface */
SPI.begin();
/* Initialise the RFID reader */
RC522.init();
}

void loop()
{
/* Has a card been detected? */
if (RC522.isCard())
{
/* If so then get its serial number */
RC522.readCardSerial();
Serial.println(«Card detected:»);
for(int i=0;i<5;i++)
{
Serial.print(RC522.serNum,DEC);
//Serial.print(RC522.serNum,HEX); //to print card detail in Hexa Decimal format
}
Serial.println();
Serial.println();
}
delay(1000);
}

Arduino Code – Reading RFID Tag

Communicating with RC522 RFID module is a bunch of work, but luckily for us, there’s a library called MFRC522 library which simplifies reading from and writing to RFID tags. Thanks to Miguel Balboa. Download the library first, by visiting the GitHub repo or, just click this button to download the zip:

To install it, open the Arduino IDE, go to Sketch > Include Library > Add .ZIP Library, and then select the rfid-master.zip file that you just downloaded. If you need more details on installing a library, visit this Installing an Arduino Library tutorial.

Once you have the library installed, open Examples submenu and select MFRC522 > DumpInfo example sketch.

This sketch will not write any data to the tag. It just tells you if it managed to read the tag, and displays some information about it. This can be very useful before trying out any new tag!

Go to the beginning of the sketch and make sure that the RST_PIN is correctly initialized, in our case we’re using digital pin #5 so change it to 5!

OK, now upload the sketch and open the Serial Monitor. As soon as you bring the tag closer to the module, you’ll probably get something like the following. Do not move the tag until all the information is displayed.

It displays all the useful information about the tag including tag’s Unique ID (UID), the memory size and the whole 1K memory.

Установка блокировки/разблокировки компьютера с помощью RFID

После сборки схемы проекта подключите плату Arduino к компьютеру. Определите COM порт компьютера, к которому подключилась плата Arduino – это можно сделать либо с помощью диспетчера устройств Windows, либо с помощью Arduino IDE как показано на следующем рисунке. В нашем случае плата Arduino оказалась подключенной к COM порту под номером 1.

После этого в плату Arduino необходимо загрузить код программы для работы с модулем RC522 – он приведен в конце статьи. После загрузки кода программы в плату откройте окно монитора последовательной связи (serial monitor). Затем прислоните RFID метку к модулю RC522, после чего вы увидите в окне монитора последовательной связи 5 значений. Эти значения необходимо скопировать себе в «укромное место» и закрыть окно монитора последовательной связи. Полученные нами значения показаны на следующем рисунке.

После распаковки ZIP архива зайдите в нем в каталог с именем 32 bit или 64-bit в зависимости от того 32 или 64-разрядная у вас операционная система. В этом каталоге откройте текстовый файл RFIDcredentials.txt. Вставьте в него свои значения из окна монитора последовательной связи (которые вы получили ранее) и обновите (укажите свои) имя пользователя (user name) и пароль (password). Если вы хотите добавить две карты для входа в операционную систему, то заполните и вторую строчку в файле RFIDcredentials.txt как показано на следующем рисунке.

После этого сохраните и закройте этот файл. Затем откройте из этой же папки файл RFIDCredSettings, измените в нем номер COM порта, к которому подключена плата Arduino, на свой, сохраните и закройте этот файл. Остальные значения в файле не меняйте.

Теперь скопируйте все 4 элемента нашего каталога, которые вы извлекли из скачанного ZIP архива и изменили в них часть значений на свои, в каталог C:\Windows\System32. Если система потребует подтверждения этой операции – подтвердите ее.

Теперь запустите файл реестра (register file) чтобы внести изменения в реестр. При этом, скорее всего, вы на своем экране увидите примерно следующее диалоговое окно:

Нажмите «yes», затем «ok». После этого осуществите выход из системы и вы увидите что в систему был добавлен еще один пользователь – с именем RFID.

Вход в учетную запись этого пользователя теперь можно будет осуществлять с помощью RFID карт/меток. То есть никакого пароля на вход в систему вводить уже не будет нужно – достаточно будет всего лишь прислонить RFID метку к RFID считывателю и вход в систему произойдет автоматически.

Технология RFID/NFC


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

Технология RFID

RFID (англ. Radio Frequency IDentification, радиочастотная идентификация) — система однонаправленной связи, в которой данные из метки передаются к бесконтактному считывателю. RFID метки могут быть отсканированы на расстоянии до 100 метров, причём метка может находиться вне прямой видимости ридера.

Состовляющие RFID

  • Метки (tag) — устройства, способные хранить и передавать данные. В памяти меток содержится их уникальный идентификационный код. Метки некоторых типов имеют перезаписываемую память.
  • Антенны используются для наведения электромагнитного поля и получения информации от меток.
  • Считыватели (reader) — приборы, которые с помощью антенн получают информацию из меток, а также записывают в них данные.
  • Система управления — программное обеспечение, которое формирует запросы на чтение или запись меток, управляет считывателями, объединяя их в группы, накапливает и анализирует полученную с RFID-меток информацию, а также передает эту информацию в учетные системы.

Принцип работы

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

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

Частоты и стандарты

RFID работает в разных частотах для каждой из которых присвоен свой набор стандартов и протоколов.

Полоса частот RFID Расстояние сканирования Применения
120–150 кГц
(Low Frequency, LF)
до 10 см Автоматизация производства, СКУД на основе RFID-брелков, браслетов, идентификация животных.
13.56 МГц
(High Frequency, HF)
до 1 м Идентификации товаров в складских системах и книг в библиотечных системах.
860–960 МГц
(Ultra High Frequency, UHF)
1–100 м В системах логистики и учета движения транспорта.

Технология NFC

NFC (англ. Near Field Communication, ближняя бесконтактная связь) — технология беспроводной передачи данных малого радиуса действия, которая дает возможность обмена данными между устройствами, находящимися на расстоянии до 10 сантиметров. NFC работает на частоте 13,56 МГц и является продолжением высокочастотного RFID стандарта.

Режим работы NFC-чипов

Чип NFC состоит из катушки индуктивности, которая создаёт определённое радиочастотное поле и воздействует на другое такое же поле по заданному сценарию с различным уровнем кодирования. В таком процессе технология NFC имеет два режима работы: активный и пассивный.

С учетом двух режимов технология NFC может использоваться для следующего:

  1. Режим считывания/записи. NFC-чип работает в активном режиме и считывает пассивную метку. Метка NFC — это пассивное устройство с данными внутри. Информацию можно считать, лишь поднеся к метке активное считывающее устройство.
  2. Режим peer-to-peer — обмен данными между двумя активными устройствами. Это может быть как файл, передача контакта или приложения.
  3. Режим эмуляции карты. NFC-чип прикидывается картой (пассивным устройством), например пропуском или платежной картой.

Виды NFC-меток

NFC-метки отличаются объемом и структурой памяти. Наиболее важные параметры популярных NFC меток мы собрали в сравнительную таблицу.