Контроль доступа с помощью RFID-считывателя MFRC522 и Arduino

В этом руководстве показан простой пример использования RFID-считывателя MFRC522. Мы сделаем краткий обзор характеристик и продемонстрируем пример проекта с использованием Arduino.

Описание

RFID означает радиочастотную идентификацию (Radio-Frequency Identification). RFID использует электромагнитные поля для передачи данных на короткие расстояния. RFID полезен для идентификации людей, совершения транзакций и т.д.

Вы можете использовать RFID-систему для открытия двери. Например, только человек с правильной информацией на карте может войти. RFID-система использует:

  • метки (tags), прикреплённые к объекту, который необходимо идентифицировать. В данном примере у нас есть брелок и электромагнитная карта. Каждая метка имеет свой собственный идентификатор (UID).

RFID-метки: брелок и карта
  • двусторонний радиопередатчик-приёмник, считыватель (reader), который отправляет сигнал метке и считывает её ответ.

RFID-считыватель MFRC522

Характеристики

Загрузка библиотеки

Вот библиотека, которая вам понадобится для этого проекта:

  1. Скачайте библиотеку RFID отсюда, созданную miguelbalboa

  2. Распакуйте библиотеку RFID

  3. Установите библиотеку RFID в вашу Arduino IDE

  4. Перезапустите Arduino IDE

Подключение выводов

Вывод

Подключение к Arduino Uno

SDA

Digital 10

SCK

Digital 13

MOSI

Digital 11

MISO

Digital 12

IRQ

не подключается

GND

GND

RST

Digital 9

3.3V

3.3V

Внимание: Это устройство необходимо питать от 3.3В!

Схема

Схема подключения RFID-считывателя MFRC522 к Arduino

Считывание данных с RFID-метки

После сборки схемы перейдите в File > Examples > MFRC522 > DumpInfo и загрузите код. Этот код будет доступен в вашей Arduino IDE (после установки библиотеки RFID).

Затем откройте монитор последовательного порта. Вы должны увидеть что-то похожее на рисунок ниже:

Монитор последовательного порта - ожидание RFID-карты

Приблизьте RFID-карту или брелок к считывателю. Держите считыватель и метку рядом, пока не отобразится вся информация.

Монитор последовательного порта - данные RFID-карты

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

У вас есть 1024 байта хранилища данных, разделённых на 16 секторов, и каждый сектор защищён двумя различными ключами — A и B.

Запишите UID вашей карты, потому что он понадобится вам позже.

Загрузите следующий код.

/*
 *
 * All the resources for this project: https://randomnerdtutorials.com/
 * Modified by Rui Santos
 *
 * Created by FILIPEFLOP
 *
 */

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

#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.

void setup()
{
  Serial.begin(9600);   // Initiate a serial communication
  SPI.begin();      // Initiate  SPI bus
  mfrc522.PCD_Init();   // Initiate MFRC522
  Serial.println("Approximate your card to the reader...");
  Serial.println();

}
void loop()
{
  // Look for new cards
  if ( ! mfrc522.PICC_IsNewCardPresent())
  {
    return;
  }
  // Select one of the cards
  if ( ! mfrc522.PICC_ReadCardSerial())
  {
    return;
  }
  //Show UID on serial monitor
  Serial.print("UID tag :");
  String content= "";
  byte letter;
  for (byte i = 0; i < mfrc522.uid.size; i++)
  {
     Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
     Serial.print(mfrc522.uid.uidByte[i], HEX);
     content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
     content.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  Serial.println();
  Serial.print("Message : ");
  content.toUpperCase();
  if (content.substring(1) == "BD 31 15 2B") //change here the UID of the card/cards that you want to give access
  {
    Serial.println("Authorized access");
    Serial.println();
    delay(3000);
  }

 else   {
    Serial.println(" Access denied");
    delay(3000);
  }
}

Посмотреть исходный код

В приведённом выше фрагменте кода необходимо изменить строку if (content.substring(1) == «ЗАМЕНИТЕ НА ВАШ UID») и ввести UID карты, который вы записали ранее.

Демонстрация

Теперь загрузите код на Arduino и откройте монитор последовательного порта.

Приблизьте карту, которой вы выбрали предоставить доступ, и вы увидите:

Монитор последовательного порта - доступ разрешён

Если вы приблизите другую метку с другим UID, появится сообщение об отказе в доступе:

Монитор последовательного порта - доступ запрещён

Надеемся, это руководство было для вас полезным.

Поделитесь этой статьёй с другом, который тоже увлекается электроникой!

Вы можете связаться с нами, оставив комментарий. Если вам понравилась эта статья, вероятно, вам понравятся и следующие, поэтому поддержите нас, подписавшись на блог.