Как подключить rfid rc522 модуль к ардуино uno
Перейти к содержимому

Как подключить rfid rc522 модуль к ардуино uno

  • автор:

Урок 6. Arduino считываем метки (RFID-модуль RC522)

Для начала необходимо установить библиотеку RFID Library for MFRC522.

Контакты на модуле RFID-модуль RC522 необходимо подключить к Ардуине. Для подключения удобно использовать провода папа-мама.

Описание контактов у RFID-модуля RC522:

  • VCC — Питание. Необходимо 3.3V;
  • RST — Reset. Линия сброса. Ни в коем случае не подключать к пину RESET на CraftDuino! Данный пин цепляется на цифровой порт с PWM;
  • GND — Ground. Земля
  • MISO — Master Input Slave Output — данные от ведомого к ведущему, SPI;
  • MOSI — Master Output Slave Input — данные от ведущего к ведомому, SPI;
  • SCK — Serial Clock — тактовый сигнал, SPI;
  • NSS — Slave Select — выбор ведомого, SPI;
  • IRQ — линия прерываний;
MFRC522 Arduino Uno Arduino Mega Arduino Nano v3 Arduino Leonardo/Micro Arduino Pro Micro
RST 9 5 D9 RESET/ICSP-5 RST
SDA(SS) 10 53 D10 10 10
MOSI 11 (ICSP-4) 51 D11 ICSP-4 16
MISO 12 (ICSP-1 ) 50 D12 ICSP-1 14
SCK 13 (ICSP-3) 52 D13 ICSP-3 15
3.3V 3.3V 3.3V Стабилизатор 3,3В Стабилизатор 3,3В Стабилизатор 3,3В
GND GND GND GND GND GND

В комплекте с модулем RFID-RC522 идут две метки, одна в виде пластиковой карточки, а вторая в виде брелка. При необходимости их можно докупить отдельно.

После того как все будет подключено на модуле будет гореть индикатор, это говорит о том что питание поступает на RFID . Пришло время запустить пробный скетч который находится в библиотеке которую мы установили.

Необходимо проверить правильность заданных констант:

#define SS_PIN 10 #define RST_PIN 9 // Данные константы соответствуют

Теперь загружаем скетч в ардуину и включаем Мониторинг последовательного порта.

Подносим метку к ридеру и модуль считает все данные с данной метки, например уникальный идентификатор метки UID.

Видео работы RFID-RC522:

Урок 10. Контроль доступа. RFID-rc522 + Servo + Arduino

В данном уроке мы научимся делать простую систему, которая будет отпирать замок по электронному ключу (Метке).

В дальнейшем Вы можете доработать и расширить функционал. Например, добавить функцию «добавление новых ключей и удаления их из памяти». В базовом случае рассмотрим простой пример, когда уникальный идентификатор ключа предварительно задается в коде программы.

В этом уроке нам понадобится:

  • Arduino
  • RFID-модуль RC522
  • Сервопривод
  • Провода Папа-Мама
  • Провода Папа-Папа или Набор проводов для макетирования 65 шт.
  • Зуммер пьезоэлектрический
  • Breadboard

Для реализации проекта нам необходимо установить библиотеки:

Сборка:

1) RFID-модуль RC522 подключается к arduino проводами Папа-Мама в следующей последовательности:

MFRC522 Arduino Uno Arduino Mega Arduino Nano v3 Arduino Leonardo/Micro Arduino Pro Micro
RST 9 5 D9 RESET/ICSP-5 RST
SDA(SS) 10 53 D10 10 10
MOSI 11 (ICSP-4) 51 D11 ICSP-4 16
MISO 12 (ICSP-1 ) 50 D12 ICSP-1 14
SCK 13 (ICSP-3) 52 D13 ICSP-3 15
3.3V 3.3V 3.3V Стабилизатор 3,3В Стабилизатор 3,3В Стабилизатор 3,3В
GND GND GND GND GND GND

2) Теперь нужно подключить Зуммер, который будет подавать сигнал, если ключ сработал и замок открывается, а второй сигнал, когда замок закрывается.

Зуммер подключаем в следующей последовательности:

Arduino Зуммер
5V VCC
GND GND
pin 5 IO

3) В роли отпирающего механизма будет использоваться сервопривод. Сервопривод может быть выбран любой, в зависимости от требуемых вам размеров и усилий, который создает сервопривод. У сервопривода имеется 3 контакта:

Arduino Сервопривод
5V * Красный (Центральный)
GND Черный или Коричневый (Левый)
pin 6 Белый или Оранжевый (Правый)

*Сервопривод рекомендуется питать от внешнего источника питания, если запитать сервопривод от ардуины, то могут возникнуть помехи и перебои в работе arduino. Организовать это можно с помощью источника питания 9V и комбинированного стабилизатора 5V ,3.3V.

Более наглядно Вы можете посмотреть, как мы подключили все модули на картинке ниже:

Контроль доступа. RFID-rc522 Servo Arduino

Теперь, если все подключено, то можно переходить к программированию.

Скетч:

#include #include #include // библиотека "RFID". #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); unsigned long uidDec, uidDecTemp; // для храниения номера метки в десятичном формате Servo servo; void setup() < Serial.begin(9600); Serial.println("Waiting for card. "); SPI.begin(); // инициализация SPI / Init SPI bus. mfrc522.PCD_Init(); // инициализация MFRC522 / Init MFRC522 card. servo.attach(6); servo.write(0); // устанавливаем серву в закрытое сосотояние >void loop() < // Поиск новой метки if ( ! mfrc522.PICC_IsNewCardPresent()) < return; >// Выбор метки if ( ! mfrc522.PICC_ReadCardSerial()) < return; >uidDec = 0; // Выдача серийного номера метки. for (byte i = 0; i < mfrc522.uid.size; i++) < uidDecTemp = mfrc522.uid.uidByte[i]; uidDec = uidDec * 256 + uidDecTemp; >Serial.println("Card UID: "); Serial.println(uidDec); // Выводим UID метки в консоль. if (uidDec == 3763966293) // Сравниваем Uid метки, если он равен заданому то серва открывает. < tone(5, 200, 500); // Делаем звуковой сигнал, Открытие servo.write(90); // Поворациваем серву на угол 90 градусов(Отпираем какой либо механизм: задвижку, поворациваем ключ и т.д.) delay(3000); // пауза 3 сек и механизм запирается. tone(5, 500, 500); // Делаем звуковой сигнал, Закрытие >servo.write(0); // устанавливаем серву в закрытое сосотояние >

Разберем скетч более детально:

Для того, что бы узнать UID карточки(Метки), необходимо записать данный скетч в arduino, собрать схему, изложенную выше, и открыть Консоль (Мониторинг последовательного порта). Когда вы поднесете метку к RFID, в консоли выведется номер

Полученный UID необходимо ввести в следующую строчку:

if (uidDec == 3763966293) // Сравниваем Uid метки, если он равен заданному то сервопривод открывает задвижку.

У каждой карточки данный идентификатор уникальный и не повторяется. Таком образом, когда вы поднесете карточку, идентификатор которой вы задали в программе, система откроет доступ с помощью сервопривода.

Видео:

Ардуино RFID модуль RC522, как подключить

Ардуино RFID модуль RC522, как подключить

RFID Arduino (Radio Frequency IDentification) — это бесконтактная идентификация транспондера (метки) с помощью радиочастотного канала связи. Система широко используется во многих отраслях: для контроля доступа по пропускам, отслеживания товаров в логистических цепочках поставок, создания систем вознаграждения и т.д. Рассмотрим, как подключить считыватель меток RFID-RC522 к плате Ардуино.

Необходимые компоненты:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • модуль RC522 и ключ RFID
  • светодиоды и резисторы
  • макетная плата
  • коннекторы
  • скачать библиотеку MFRC522.h и SPI.h
  1. Как подключить сенсорную кнопку к Ардуино
  2. Подключение WiFi модуля ESP-12E к Ардуино
  3. Подключение WiFi модуля ESP-01 к Ардуино

Система RFID для плат Arduino состоит из двух элементов: метки в виде пластиковой карты или брелка и считывателя меток. Идентификация меток основана на уникальном идентификаторе UID (стандарт Epc-96 на 96 бит), который есть у каждой rfid-метки. Модуль RC522 Arduino излучает электромагнитные волны, а RFID метки отправляют обратно свой идентификационный номер (UID) и сохраненные данные из памяти чипа.

RFID модуль RC522 распиновка, характеристики

RFID модуль RC522 распиновка, характеристики

Характеристики RFID RC522 Arduino (datasheet)

  • Источник питания: 3,3 В
  • Частота: 13,56 МГц
  • Оптимальное расстояние: 10 мм
  • Интерфейс: SPI
  • Протокол: Mifare
  • Размеры: 61 мм x 40 мм

Метки RFID могут быть активными или пассивными (пассивные метки работают без источника питания, поэтому они автономны и не изнашиваются) и работать на различных частотах: НЧ (125-134 кГц), ВЧ (13,56 МГц), УВЧ (860-960 МГц). Модули, которые считывают и записывают информацию на метки, называются считывателями. Модули RC522 на базе чипа MFRC522 используют электромагнитные поля для передачи данных на карту.

Как подключить RFID модуль RC522 к Arduino

Как подключить RFID модуль RC522 к Arduino

MFRC522 Arduino Uno Arduino Nano Arduino Mega
GND GND GND GND
VCC 3,3V 3,3V 3,3V
MOSI 11 11 51
MISO 12 12 50
SCK 13 13 52
SDA 10 10 10
RST 9 9 9

Модуль подключается к Ардуино через интерфейс SPI. Помните, что шина SPI на платах Arduino Uno (Nano) и Mega 2560 находится на разных портах. Вам необходимо скачать библиотеки SPI, MFRC522 и распаковать архив с файлами в директории libraries в папке Arduino. После подключения модуля RC522, загрузите следующий пример программы, чтобы получить тип метки и UID (уникальный идентификатор брелка или карты).

Скетч для считывания RFID метки на Ардуино

#include "SPI.h" #include "MFRC522.h" #define RST_PIN 9 // пин RES #define SS_PIN 10 // пин SS MFRC522 mfrc522(SS_PIN, RST_PIN); void setup() < Serial.begin(9600); SPI.begin(); mfrc522.PCD_Init(); delay(4); mfrc522.PCD_DumpVersionToSerial(); Serial.println(F("Scan PICC to see UID, SAK, type, and data blocks. ")); >void loop() < // сброс цикла, если на rc модуле нет карты if ( ! mfrc522.PICC_IsNewCardPresent()) < return; >if ( ! mfrc522.PICC_ReadCardSerial()) < return; >// вывод на монитор порта идентификатора ключа mfrc522.PICC_DumpToSerial(&(mfrc522.uid)); >

Контроль доступа с помощью Arduino RFID-RC522

Контроль доступа с помощью Arduino RFID RC522

Рассмотрим пример, который можно использовать для создания системы доступа (например, открывание двери). Программа сканирует уникальный идентификатор метки, если UID карты совпадает со значением, определенным в программе (cardID), доступ будет предоставлен (загорится зеленый светодиод). Если к кардридеру RC522 поднести неизвестную метку, доступ будет запрещен (загорится красный светодиод).

Скетч для контроль доступа с помощью RFID-RC522

#include "SPI.h" #include "MFRC522.h" #define RST_PIN 9 // пин RES #define SS_PIN 10 // пин SS byte readCard[4]; String cardID = "20C3935E"; // замените на UID своей карты String tagID = ""; MFRC522 mfrc522(SS_PIN, RST_PIN); void setup() < Serial.begin(9600); SPI.begin(); mfrc522.PCD_Init(); pinMode(5, OUTPUT); pinMode(6, OUTPUT); >void loop() < while (getID()) < if (tagID == cardID) < Serial.println("Access Granted!"); digitalWrite(5, LOW); digitalWrite(6, HIGH); >else < Serial.println("Access Denied!"); >Serial.print("ID: "); Serial.println(tagID); delay(2000); digitalWrite(6, LOW); > > boolean getID() < if (! mfrc522.PICC_IsNewCardPresent()) < return false; >if (! mfrc522.PICC_ReadCardSerial()) < return false; >tagID = ""; for (uint8_t i = 0; i < 4; i++) < tagID.concat(String(mfrc522.uid.uidByte[i], HEX)); >tagID.toUpperCase(); mfrc522.PICC_HaltA(); return true; >

Заключение. Модуль rc522 Arduino предназначен для генерации электромагнитного поля, которое используется для связи с метками (ключами) RFID. Считыватель может взаимодействовать с микроконтроллером Arduino с максимальной скоростью передачи данных 10 Мбит в секунду через интерфейс SPI или протокол связи I2C (порты sda scl), через который можно одновременно подключить до 127 ведомых устройств.

● Проект 28: Считыватель RFID на примере RC522. Принцип работы, подключение

В этом эксперименте мы покажем, как плата Arduino получает доступ к данным RFID-карт и брелоков Mifare с помощью RFID-считывателя RC522C.

Необходимые компоненты:

Радиочастотная идентификация (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-меток.

Схема подключения модуля RFID-считывателя RC522C к Arduino

Схема подключения модуля к плате Arduino показана на рис. 28.1.

Рис. 28.1. Схема подключения модуля RFID-считывателя RC522C к Arduino

Напишем скетч считывания с карты и вывода в последовательный порт Arduino UID (уникальный идентификационный номер) RFID-метки (карты или брелока). При написании скетча будем использовать библиотеку MFRC522 (https://github.com/miguelbalboa/rfid). Содержимое скетча показано в листинге 28.1.

// Подключение библиотек #include #include // константы подключения контактов 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 #include // константы подключения контактов 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 hljs-number">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); > >

Порядок подключения:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *