admin / 30.11.2017
.
Подключение к Arduino:
Для начала необходимо установить библиотеку RFID Library for MFRC522.
Контакты на модуле RFID-модуль RC522 необходимо подключить к Ардуине. Для подключения удобно использовать провода папа-мама.
Описание контактов у RFID-модуля RC522:
Содержание
Данный пин цепляется на цифровой порт с PWM;
В комплекте с модулем RFID-RC522 идут две метки, одна в виде пластиковой карточки, а вторая в виде брелка. При необходимости их можно докупить отдельно.
После того как все будет подключено на модуле будет гореть индикатор, это говорит о том что питание поступает на RFID. Пришло время запустить пробный скетч который находится в библиотеке которую мы установили.
Необходимо проверить правильность заданных констант:
#define SS_PIN 10 #define RST_PIN 9 // Данные константы соответствуют
Теперь загружаем скетч в ардуину и включаем Мониторинг последовательного порта.
Подносим метку к ридеру и модуль считает все данные с данной метки, например уникальный идентификатор метки UID.
Видео работы RFID-RC522:
Проект 28: Считыватель RFID на примере RC522. Принцип работы, подключение
Необходимые компоненты:
• контроллер Arduino UNO R3;
• плата для прототипирования;
• RFID-считыватель RC522;
• брелок;
• карта;
• провода папа-папа.
Радиочастотная идентификация (RFID) – это технология автоматической бесконтактной идентификации объектов при помощи радиочастотного канала связи.
Базовая система RFID состоит из:
• радиочастотной метки;
• считывателя информации (ридера);
• компьютера для обработки информации.
Идентификация объектов производится по уникальному цифровому коду, который считывается из памяти электронной метки, прикрепляемой к объекту идентификации. Считыватель содержит в своем составе передатчик и антенну, посредством которых излучается электромагнитное поле определенной частоты. Попавшие в зону действия считывающего поля радиочастотные метки «отвечают» собственным сигналом, содержащим информацию (идентификационный номер товара, пользовательские данные и т. д.). Сигнал улавливается антенной считывателя, информация расшифровывается и передается в компьютер для обработки. Подавляющее большинство современных систем контроля доступа (СКД) использует в качестве средств доступа идентификаторы, работающие на частоте 125 кГц. Это проксимити-карты доступа (только чтение), самыми распространенными являются карты EM-Marin, а также HID, Indala. Карты этого стандарта являются удобным средством открывания дверей и турникетов.
Но не более. Эти карты не обладают никакой защищенностью, легко копируются и подделываются и, соответственно, ничего не дают для защиты объекта от несанкционированного проникновения.
Настоящую защиту от копирования и подделки обеспечивают такие идентификаторы, в чипах которых реализована криптографическая защита. Это бесконтактные смарт-карты, работающие на частоте 13,56 МГц, наиболее распространенными из них являются карты Mifare®. В картах этих стандартов криптозащита организована на высоком уровне, и подделка таких карт практически невозможна.
Модуль RC522 – RFID-модуль 13,56 МГц с SPI-интерфейсом. В комплекте к модулю идут 2 RFID-метки – в виде карты и брелока.
Основные характеристики:
• основан на микросхеме MFRC522;
• напряжение питания: 3,3 В;
• потребляемый ток: 13–26 мА;
• рабочая частота: 13,56 MГц;
• дальность считывания: 0~60 мм;
• интерфейс: SPI, максимальная скорость передачи 10 МБит/с;
• размер: 40×60 мм;
• чтение и запись RFID-меток.
Схема подключения модуля к плате Arduino показана на рис. 28.1.
Рис. 28.1. Схема подключения модуля RFID-считывателя RC522C к Arduino
// Подключение библиотек #include <SPI.h> #include <MFRC522.h> // константы подключения контактов SS и RST #define RST_PIN 9 #define SS_PIN 10 // Инициализация MFRC522 MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance. void setup() { Serial.begin(9600); // инициализация последовательного порта SPI.begin(); // инициализация SPI mfrc522.PCD_Init(); // инициализация MFRC522 } void loop() { if ( ! mfrc522.PICC_IsNewCardPresent()) return; // чтение карты if ( ! mfrc522.PICC_ReadCardSerial()) return; // показать результат чтения UID и тип метки Serial.print(F("Card UID:")); dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size); Serial.println(); Serial.print(F("PICC type: ")); byte piccType = mfrc522.PICC_GetType(mfrc522.uid.sak); Serial.println(mfrc522.PICC_GetTypeName(piccType)); delay(2000); } // Вывод результата чтения данных в HEX-виде void dump_byte_array(byte *buffer, byte bufferSize) { for (byte i = 0; i < bufferSize; i++) { Serial.print(buffer[i] < 0x10 ? " 0" : " "); Serial.print(buffer[i], HEX); } }
Порядок подключения:
1. Подключаем модули RFID-считывателя RC522 к плате Arduino по схеме на рис. 28.1.
2.
Загружаем в плату Arduino скетч из листинга 28.1. Открываем монитор последовательного порта.
3. Подносим метку (карту или брелок) к считывателю и видим вывод в последовательный порт данных метки UID и тип (рис. 28.2).
Рис. 28.2. Вывод в последовательный порт информации о метках
Метки Mirafe позволяют записывать на них информацию. В следующем скетче мы организуем на карте счетчик, который будет инкрементироваться при поднесении карты к считывателю. В последовательный порт будем выводить показания счетчика. Содержимое скетча показано в листинге 28.2.
// Подключение библиотек #include <SPI.h> #include <MFRC522.h> // константы подключения контактов SS и RST #define RST_PIN 9 #define SS_PIN 10 // Инициализация MFRC522 MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance. MFRC522:MIFARE_Key key; byte sector = 1; byte blockAddr = 4; byte dataBlock[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; byte trailerBlock = 7; byte status; byte buffer[18]; byte size = sizeof(buffer); void setup() { Serial.begin(9600); // инициализация последовательного порта SPI.begin(); // инициализация SPI mfrc522.PCD_Init(); // инициализация MFRC522 // Значение ключа (A или B) – FFFFFFFFFFFFh значение с завода for (byte i = 0; i < 6; i++) key.keyByte[i] = 0xFF; } void loop() { if ( ! mfrc522.PICC_IsNewCardPresent()) return; // чтение карты if ( ! mfrc522.PICC_ReadCardSerial()) return; // показать результат чтения UID и тип метки Serial.print(F("Card UID:")); dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size); Serial.println(); Serial.print(F("PICC type: ")); byte piccType = mfrc522.PICC_GetType(mfrc522.uid.sak); Serial.println(mfrc522.PICC_GetTypeName(piccType)); // Чтение данных из блока 4 Serial.print(F("Reading data from block ")); Serial.print(blockAddr); Serial.println(F(" …")); Serial.print(F("Data for count ")); Serial.print(blockAddr); Serial.println(F(":")); dump_byte_array(buffer, 2); Serial.println(); Serial.println(); for (byte i = 0; i < 16; i++) // запись в buffer[] dataBlock[i]=buffer[i]; // получение байт счетчика (0 и 1) int count1=(buffer[0]<<8)+buffer[1]; Serial.print("count1=");Serial.println(count1); count1=count1+1; // инкремент счетчика dataBlock[0]=highByte(count1); dataBlock[1]=lowByte(count1); // Аутентификация key B Serial.println(F("Authenticating again using key B…")); // Запись данных в блок Serial.print(F("Writing data into block ")); Serial.print(blockAddr); Serial.println(F(" …")); dump_byte_array(dataBlock, 2); Serial.println(); } // Вывод результата чтения данных в HEX-виде void dump_byte_array(byte *buffer, byte bufferSize) { for (byte i = 0; i < bufferSize; i++) { Serial.print(buffer[i] < 0x10 ? " 0" : " "); Serial.print(buffer[i], HEX); } }
Порядок подключения:
Рис. 28.3. Вывод в последовательный порт информации о счетчике на метках
Листинги программскачать
RFID (англ. Radio Frequency IDentification, радиочастотная идентификация) — способ автоматической идентификации объектов, в котором посредством радиосигнала считываются или записываются данные, хранящиеся в так называемых транспондерах, или RFID-метках. Любая RFID-система состоит из считывающего устройства (считыватель, ридер или интеррогатор) и транспондера (он же RFID-метка, иногда также применяется термин RFID-тег).
В данной статье просто считаем адрес поднесенной карты и выведем его в порт
Компоненты для повторения (купить в Китае):
Arduino UNO, либо Arduino Nano, либо Arduino Mega
RFID RC-522
Соединительные провода (перемычки)
SS — 10 цифровой
SCK — 13 цифровой
MOSI — 11 цифровой
MISO — 12 цифровой
IRQ — не подключаем
GND — GND
RST — 9 цифровой
VCC — 3.3V
Библиотека необходимая для работы с модулем RFID library
Её необходимо распаковать и добавить в папку "libraries" в папке с Arduino IDE.
Не забывайте перезагрузить среду, если на момент добавления IDEшка была открыта.
Пример программного кода
Полученный адрес в будущем можно проверить на соответствие с забитым в коде, и, если адреса совпадают, выполнить какое-либо действие.
Купить в России RFID reader
В данный момент еще реализованы не все элементы нашего сообщества. Мы активно работаем над ним и в ближайшее время возможность комментирования статей будет добавлена.
FILED UNDER : IT