Arduino:Примеры/Гайд по использованию RFID-ридера MFRC522 вместе с Arduino
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Черновик |
Гайд по использованию RFID-ридера MFRC522 вместе с Arduino[1]
Эта статья рассказывает о проекте, который демонстрирует, как использовать RFID-ридер MFRC522 вместе с платой Arduino. Кроме того, здесь будет немного о самом датчике, включая информацию о том, как он работает.
Описание
Аббревиатура RFID расшифровывается как «radio-frequency identification», что переводится как «радио-частотная идентификация». Эта технология используется для передачи данных на короткие расстояния при помощи электромагнитных полей. Она может пригодиться, к примеру, для идентификации людей, совершения финансовых транзакций и т.д.
Систему, в основе которой лежит технология RFID, можно использовать, к примеру, для открытия дверей. То есть можно вручить какому-нибудь человеку карту, на которой будут данные, позволяющие открыть дверь лишь при помощи этой карты.
RFID-система состоит из следующих компонентов:
- Теги (метки). Они встраиваются в объект, который нужно идентифицировать. К примеру, в брелок или электромагнитную карту. У каждого тега есть собственный UID (расшифровывается как «user identifier», т.е. «идентификатор пользователя»)
- Ридер. Это двусторонний радио-приемопередатчик. Он отправляет сигнал тегу, а затем считывает ответ.
Характеристики
- Входное напряжение: 3,3 вольта
- Цена: 4 доллара (см. на eBay)
- Частота: 13,56 МГц
Библиотека
Для этого проекта вам понадобится библиотека RFID (создатель – miguelbalboa).
- Скачайте архив библиотеки отсюда
- Распакуйте скачанный архив
- Установите библиотеку в IDE Arduino
- Перезапустите IDE Arduino
Подключение контактов
- Контакт SDA на RFID-ридере – к цифровому контакту 10 на Arduino
- Контакт SCK – к цифровому контакту 13
- Контакт MOSI – к цифровому контакту 11
- Контакт MISO – к цифровому контакту 12
- Контакт IRQ – оставьте неподключенным
- Контакт GND – к контакту GND
- Контакт RST – к цифровому контакту 9
- Контакт 3.3V – к контакту 3.3V
Внимание! RFID-ридер нужно питать 3,3 вольтами!
Цепь
RFID-ридер нужно подключить к Arduino следующим образом:
Считывание данных с RFID-тега
Подключив все как нужно, кликните в IDE Arduino по Файл > Примеры > MFRC522 > DumpInfo (File > Examples > MFRC522 > DumpInfo) и загрузите этот скетч на Arduino. Он уже будет в IDE Arduino, когда вы установите в него библиотеку RFID.
Затем откройте в IDE Arduino монитор порта. В нем должны появиться данные примерно как на картинке ниже:
Приложите к RFID-ридеру карту или брелок с RFID-тегом. Держите их в таком положении, пока в мониторе порта не будет показана вся необходимая информация.
Это информация, считанная с 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 instance.
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) == "BD 31 15 2B")
// впишите здесь UID тега, которому вы хотите дать доступ
{
Serial.println("Authorized access"); // "Доступ открыт"
Serial.println();
delay(3000);
}
else {
Serial.println(" Access denied"); // "Запрос на доступ отклонен"
delay(3000);
}
}
В этом скетче вам нужно поменять строчку...
if (content.substring(1) == "BD 31 15 2B")
...вписав вместо BD 31 15 2B значение для UID, которое ранее было показано в мониторе порта.
Демонстрация
Теперь загружаем скетч на Arduino и открываем монитор порта.
Приложите карту к ридеру, чтобы получить доступ, и вы увидите...
Но если приложить к ридеру другую карту с другим UID, появится сообщение об отказе в доступе...
См.также
Внешние ссылки
- Страницы с устаревшим атрибутом подсветки синтаксиса «enclose»
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Черновик
- Надо доработать
- Черновой вариант статьи
- Черновой вариант
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino