В этом руководстве мы разберем принцип работы считывателей RFID в паре с Arduino.
Шаг 1. Компоненты
Нам понадобятся 3 вещи – плата Ардуино, RFID считыватель и RFID карта.
Шаг 2. Предыстория
Что такое считыватель RFID?
RFID — это система идентификации, которая использует небольшие устройства радиочастотной идентификации для идентификации и отслеживания. Система RFID-меток включает в себя, устройство чтения / записи и приложение хост-системы для сбора, обработки и передачи данных.
Проще говоря, RFID использует электромагнитные поля для передачи данных на короткие расстояния. RFID полезен для идентификации людей, осуществления транзакций и т. д.
Вы можете использовать систему RFID, для открытия двери. Например, только лицо, имеющее правильную информацию на своей карте, может войти. Система RFID использует:
>> теги (например карта или брелок), прикрепленные к идентифицируемому объекту, в этом примере мы используем брелок для ключей и электромагнитную карту. Каждый тег имеет свою собственную идентификацию (UID).
>> двусторонний радиопередатчик-приемник, считыватель, который отправляет сигнал на метку и считывает её ответ.
Шаг 3. Основные характеристики:
- Входное напряжение: 3.3 В
- Частота: 13,56 МГц
Прежде чем начать писать код, вам необходимо скачать библиотеку для этого датчика из этого хранилища.
Извлеките содержимое из zip-папки «rfid-master» и добавьте эту папку с библиотекой в существующие библиотеки Arduino IDE.
После этого перезапустите Arduino IDE.
Теперь наш Arduino готов воспринимать команды и выполнять их првильно.
Код Arduino будет представлен в конце этого урока. Скомпилируйте код и исправьте ошибки «опечатки» (если есть).
Теперь пришло время подключить наш Arduino к считывателю RFID. Ознакомьтесь с правильным подключением контактов ниже, а также воспользовавшись принципиальной схемой подлючения.
Шаг 4. Контакты для подключения Arduino Uno
SDA------------------------Digital 10
SCK------------------------Digital 13
MOSI----------------------Digital 11
MISO----------------------Digital 12
IRQ------------------------unconnected
GND-----------------------GND
RST------------------------Digital 9
3.3V------------------------3.3V (Не соединяйте с 5V)
Шаг 5. Чтение данных из метки RFID
После того, как вы подключите все контакты, перейдите в Arduino IDE Файл> Примеры> MFRC522> DumpInfo и загрузите код. Этот код будет доступен в Arduino IDE (после установки библиотеки RFID).
Затем откройте последовательный монитор. Вы должны увидеть что-то вроде скриншота ниже:
Приложите RFID-карту или брилок к считывателю. До момента пока вся информация не отобразится.
Это информация, которую вы можете прочитать с карты, включая UID карты, который выделен желтым цветом. Информация хранится в памяти, которая разделена на сегменты и блоки, как вы можете видеть на предыдущем рисунке.
У вас есть объем в 1024 байта для хранения данных, разделенных на 16 секторов, и каждый сектор защищен двумя разными ключами, A и B.
Запишите свою UID-карту, потому что она понадобится вам позже.
Шаг 6. Демонстрация.
Приложите карту, которую вы выбрали для предоставления доступа, и вы увидите:
Если вы приблизите другой тег с другим UID, появится сообщение об отказе:
Шаг 7. Итоги.
В приведенном выше фрагменте кода вам необходимо изменить if (content.substring(1) == “REPLACE WITH YOUR UID”) и ввести UID-карту, которую вы записали ранее.
/*
*
* All the resources for this project: https://www.hackster.io/Aritro
* Modified by Aritro Mukherjee
*
*
*/
#include
#include
#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);
}
}