Arduino:Примеры/Защищенный доступ с помощью RFID-ридера MFRC522 и Arduino
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Черновик |
Защищенный доступ с помощью RFID-ридера MFRC522 и Arduino[1]
Эта статья рассказывает, как использовать RFID-ридер MFRC522. Сначала я сделаю беглый обзор устройства, а потом покажу проект, использующий MFRC522 вместе с платой Arduino.
Описание
Аббревиатура RFID означает «radio-frequency identification», что переводится как «радиочастотная идентификация». Это технология, которая использует электромагнитные поля для передачи данных на короткие дистанции. Она применяется, к примеру, для идентификации людей, осуществления финансовых транзакций и т.д.
Технологию RFID можно также использовать для открытия/закрытия дверей. То есть для того, чтобы открыть дверь, человек должен обладать картой, хранящей правильную информацию.
Система, работающая по технологии RFID, состоит из следующих элементов:
- Теги. Ими оснащаются объекты, которые нужно идентифицировать. Это может быть, к примеру, брелок или электромагнитная карта. Каждый тег имеет собственный идентификатор (UID от «user identifier»).
- Ридер. Это двухсторонний трансивер, который отправляет сигнал тегу и считывает ответ от него.
Характеристики
- Входное напряжение: 3,3 вольта
- Цена: 4 доллара
- Частота: 13,56 МГц
Библиотека
Для этого проекта понадобится библиотека RFID. Чтобы установить ее, проделайте следующее:
- Кликните здесь, чтобы скачать ZIP-архив с библиотекой (она написана пользователем miguelbalboa).
- Распакуйте ZIP-архив
- Установите библиотеку RFID в IDE Arduino
- Перезапустите IDE Arduino
Подключение контактов
- Контакт SDA на RFID-ридере – к цифровому контакту 10 на Arduino Uno
- Контакт SCK – к цифровому контакту 13
- Контакт MOSI – к цифровому контакту 11
- Контакт MISO – к цифровому контакту 12
- Контакт IRQ – не подключен
- Контакт GND – к контакту GND
- Контакт RST – к цифровому контакту 9
- Контакт 3.3V – к контакту 3.3V
Внимание: RFID-ридер нужно питать 3,3 вольтами!
Схема
Считывание данных с RFID-тега
Подключив компоненты друг к другу, кликните в IDE Arduino по Файл > Примеры > MFRC522 > Dumpinfo (File > Examples > MFRC522 > Dumpinfo) и загрузите код на плату Arduino. После установки библиотеки «RFID» нужный скетч уже будет находиться в IDE Arduino.
Затем откройте монитор порта IDE Arduino. Вы должны увидеть примерно следующее:
Приложите RFID-карту или брелок к ридеру. Держите их близко друг к другу, пока монитор порта не покажет всю необходимую информацию:
Это информация, считанная с карты, включая UID, который выделен желтым цветом. Информация хранится в памяти, которая – как можно видеть на картинке выше – поделена на сегменты и блоки.
Всего у нас 1024 байта данных, хранящиеся в 16 сегментах, и каждый сегмент защищен двумя разными ключами – A и B.
Запишите или запомните UID карты, т.к. он нам еще понадобится.
Загрузите на Arduino код, показанный ниже:
/*
*
* Более подробно о проекте на: http://randomnerdtutorials.com/
* Модифицирован Руи Сантосом (Rui Santos)
*
* Создан пользователем FILIPEFLOP
*
*/
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN); // создаем экземпляр MFRC522
void setup()
{
Serial.begin(9600); // запускаем последовательную коммуникацию
SPI.begin(); // инициализируем шину SPI
mfrc522.PCD_Init(); // инициализируем MFRC522
Serial.println("Approximate your card to the reader...");
// "Приложите карту к ридеру..."
Serial.println();
}
void loop()
{
// ищем новые карты:
if ( ! mfrc522.PICC_IsNewCardPresent())
{
return;
}
// выбираем одну из карт:
if ( ! mfrc522.PICC_ReadCardSerial())
{
return;
}
// показываем UID в мониторе порта:
Serial.print("UID tag :"); // "UID тега: "
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) == "ЗАМЕНИТЕ СВОИМ UID")
// впишите здесь UID одной или нескольких карт,
// которым хотите дать доступ; например, "BD 31 15 2B"
{
Serial.println("Authorized access"); // "Доступ разрешен"
Serial.println();
delay(3000);
}
else {
Serial.println(" Access denied"); // " Доступ отклонен"
delay(3000);
}
}
Обратите внимание на эту строчку:
if (content.substring(1) == "ЗАМЕНИТЕ_СВОИМ_UID")
Вам нужно вписать вместо ЗАМЕНИТЕ_СВОИМ_ID собственный UID.
Демонстрация
Теперь загружаем код на Arduino и открываем монитор порта:
[Видео]
Приближаем карту к RFID-ридеру и видим...
Но если приблизить к RFID-ридеру карту с другим тегом, доступ будет отклонен:
См.также
Внешние ссылки
- Страницы с устаревшим атрибутом подсветки синтаксиса «enclose»
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Черновик
- Надо доработать
- Черновой вариант статьи
- Черновой вариант
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino