Контроль доступа с помощью RFID-считывателя MFRC522 и Arduino
В этом руководстве показан простой пример использования RFID-считывателя MFRC522. Мы сделаем краткий обзор характеристик и продемонстрируем пример проекта с использованием Arduino.
Описание
RFID означает радиочастотную идентификацию (Radio-Frequency Identification). RFID использует электромагнитные поля для передачи данных на короткие расстояния. RFID полезен для идентификации людей, совершения транзакций и т.д.
Вы можете использовать RFID-систему для открытия двери. Например, только человек с правильной информацией на карте может войти. RFID-система использует:
метки (tags), прикреплённые к объекту, который необходимо идентифицировать. В данном примере у нас есть брелок и электромагнитная карта. Каждая метка имеет свой собственный идентификатор (UID).
двусторонний радиопередатчик-приёмник, считыватель (reader), который отправляет сигнал метке и считывает её ответ.
Характеристики
Входное напряжение: 3.3В
Цена: приблизительно 3$ (проверить лучшую цену на Maker Advisor)
Частота: 13.56 МГц
Загрузка библиотеки
Вот библиотека, которая вам понадобится для этого проекта:
Скачайте библиотеку RFID отсюда, созданную miguelbalboa
Распакуйте библиотеку RFID
Установите библиотеку RFID в вашу Arduino IDE
Перезапустите 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-метки
После сборки схемы перейдите в File > Examples > MFRC522 > DumpInfo и загрузите код. Этот код будет доступен в вашей Arduino IDE (после установки библиотеки 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, появится сообщение об отказе в доступе:
Надеемся, это руководство было для вас полезным.
Поделитесь этой статьёй с другом, который тоже увлекается электроникой!
Вы можете связаться с нами, оставив комментарий. Если вам понравилась эта статья, вероятно, вам понравятся и следующие, поэтому поддержите нас, подписавшись на блог.