Это старая версия документа!
RFID (англ. Radio Frequency IDentification, радиочастотная идентификация) — способ автоматической идентификации объектов, в котором посредством радиосигналов считываются или записываются данные, хранящиеся в так называемых транспондерах, или RFID-метках.
RFID метки широко применяются в качестве проездных билетов для общественного транспорта и в качестве пропусков. Их часто называют магнитными пропусками, но это категорически не правильно. Большинство RFID-меток состоит из двух частей. Первая — интегральная схема (ИС) для хранения и обработки информации, модулирования и демодулирования радиочастотного (RF) сигнала и некоторых других функций. Вторая — антенна для приёма и передачи сигнала.
Пассивные RFID метки не имеют источника питания. Необходимую для работы энергию они получают от считывающего оборудования благодаря электро- магнитной индукции.
В комплект нашего конструктора (в версии MAXI) входит RFID считыватель и две метки — одна в формате карты, вторая в виде брелока.
Проведем эксперимент с RFID. Для работы с модулем приемника нам потребуется специальная библиотека «MFRC522». Ее нужно установить с помощью управления библиотеками, как мы уже делали ранее в эксперименте 29 .
#include <SPI.h> #include <MFRC522.h> #define PIN_SS 15 #define PIN_RST 16 MFRC522 rdr(PIN_SS, PIN_RST); String bytesToString(byte *bytes, byte size) { String str; for (byte i = 0; i < size; i++) { str += bytes[i] < 0x10 ? "0":""; str += String(bytes[i], HEX); } return str; } void setup() { SPI.begin(); rdr.PCD_Init(); } void loop() { if (!rdr.PICC_IsNewCardPresent()) return; if (!rdr.PICC_ReadCardSerial()) return; rdr.PICC_HaltA(); }
Подключаем библиотеку для работы со считывателем RFID меток
#include <MFRC522.h>
Задаем псевдонимы для пинов, к которым подключен считыватель:
#define PIN_SS 15 #define PIN_RST 16
Создаем объект считывателя, указываем как подключен модуль:
MFRC522 rdr(PIN_SS, PIN_RST);
В основном цикле запрашиваем данные о состоянии считывателя
(stat, tag_type) = rdr.request(rdr.REQIDL)
Если обнаружена метка, то запрашиваем номер метки
(stat, raw_uid) = rdr.anticoll()
Формируем строку с номером карты для отображения пользователю
card_number = '{:x}{:x}{:x}{:x}'.format(raw_uid[0], raw_uid[1], raw_uid[2], raw_uid[3])
Метод format()
принимает произвольное количество аргументов и выполняет их подстановку в указанных местах строки, относительно которой он вызван. В строке- шаблоне есть специальные метки в фигурных скобках. На их места подставляются соответствующие аргументы метода. Полученную таким образом строку выводим в терминал
print("Card detected: " + card_number)
Оператор +
в данном случае выполняет функцию конкатенации (склейки строк) так как находится в контексте строк, а не чисел.