Подключение rfid замка на ардуино. Делаем RFID-замок с использованием Arduino. Технические характеристики модуля RFID RC522

В настоящее время очень популярным становится использование технологии радиочастотной идентификации (RFID). Многие приложения внедряются в различные области нашей жизни, и используются для различных целей. RFID обеспечивает беспроводный сбор данных с помощью считывателей электронных меток, прикрепленных или внедренных в объекты для идентификации и других целей. В данной статье рассматривается способ создания простого, самодельного RFID устройства управления доступом с использованием Arduino UNO и RFID считывателя (EM-18) для управления светодиодом и реле. Электрическая схема и скетч Arduino (исходный код) представлены ниже.

При включении считыватель передает радиочастотный сигнал. Когда RFID метка помещается возле считывателя, она получает радиочастотный сигнал через антенну внутри метки. Принятый радиочастотный сигнал будет преобразовываться в электрическую энергию, которая достаточна для передачи данных от метки назад в RFID считыватель. Кроме того, считыватель будет передавать идентификатор метки во внешнее устройство по последовательному порту передачи данных. В настоящее время доступен широкий диапазон моделей считывателей. Наиболее распространенным и удобным в использовании является модуль EM-18. Данный модуль считывает RFID пассивные метки и отправляет идентификатор метки в микроконтроллер Arduino.

Считывание RFID идентификатор метки

Для начала загрузите простой программный код rfid1.ino в Arduino Uno, используя средство разработки IDE.

Теперь соберите схему, как показано ниже.

Откройте монитор Serial Monitor в Arduino IDE, удерживайте RFID метку очень близко к центральной части RFID считывателя, и зафиксируйте отображаемый идентификатор метки. Данный уникальный идентификатор понадобится в следующем скетче! (Наша метка имеет идентификатор 51005F46642C)

Управление доступом

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

Разберите существующее соединение и загрузите новый скетч rfid2.ino в микроконтроллер Arduino

Повторно соедините проводами аппаратные компоненты (с некоторыми модификациями) как показано на рисунке выше. Здесь вывод D12 микроконтроллера Arduino используется для управления стандартным 5-мм светодиодом. Вывод D13 используется для управления электромагнитным реле через управляющий транзистор. Каждый раз при совпадении метки на выводе D13 в течение 5 секунд появляется высокий управляющий сигнал. Реле может использоваться для управления внешней нагрузкой, например упором двери. Если значения метки не совпадают, тогда на выводе D13 остается низкий уровень сигнала, однако при этом на выводе D12 появляется высокий уровень для срабатывания светодиода аварии.

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

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

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

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

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

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

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

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

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

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

Скетч:

#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 метки стали неотъемлемой частью нашей жизни, без них немыслимы современные системы автоматизации и умные устройства. Ардуино предоставляет нам отличные возможности использовать современные технологии даже в начальных проектах. В этой статье мы расскажем, что такое RFID, сделаем обзор стандартов, типов карточек, узнаем как подключать популярные RFID-считыватели RC522 и RDM3600 к Arduino.

RFID (радиочастотная идентификация) – это метод обеспечения передачи, записи и хранения данных при помощи радиосигналов. Каждая RFID-система включает в себя считыватель/ридер и RFID-метку, в которой хранятся данные. Метки состоят из двух частей – интегральной схемы и антенны. Интегральная схема позволяет хранить и обрабатывать данные, антенна – принимать и передавать информацию.

Все RFID-системы можно разделить по дальности действия:

  • Ближней идентификации – расстояние не более 20 см;
  • Средней идентификации – расстояние от 20 см до 5 м;
  • Дальней идентификации – максимум 300 м.

С точки зрения частот можно выделить:

  • Системы, работающие в низкочастотном диапазоне (125 кГц, 134 кГц);
  • Работающие в среднечастотном диапазоне (13,56 МГц);
  • Работающие в высокочастотном диапазоне (800 МГц – 2, 4 ГГц).

Наиболее популярным диапазоном является среднечастотным – он широко используется в транспортных приложениях и других проектах, где требуется перезаписывание карт. Основными стандартами являются ISO 14443, ISO 15693 и EPC. На основе стандарта ISO 14443 изготавливаются смарт-карты. ISO 15693 используется для перезаписывания меток. EPC – аналог штрихкодов, имеет более простую и понятную структуру.

ВЧ диапазон начали использовать недавно, в основном его применяют для складских приложений. Для этого диапазона используются стандарты ISO 18000 и EPC. Стандарты ISO 18000 вызывают наибольший интерес, они используются в приложениях с метками с увеличенной дальностью. Для ISO 18000 также можно выделить несколько стандартов, различающихся по частоте:

  • ISO 18000-1 (определение тех параметров, которые необходимо стандартизировать);
  • ISO 18000-2 (для параметров с бесконтактным интерфейсом связи менее 135 кГц);
  • ISO 18000-3 (для бесконтактного интерфейса на частоте 13,56 МГц);
  • ISO 18000-4 (для частоты 2, 45 ГГц);
  • ISO 18000-6 (для частоты 860-930МГц);
  • ISO 18000-7 (для частоты 433 МГц).

Преимущества RFID

  • Не требуется прямая видимость;
  • Практически 100% идентификация сигнала;
  • Возможность применения в агрессивной среде;
  • Долгий срок службы;
  • RFID-метку трудно подделать;
  • Возможность хранения и передачи большого объема информации.

Области применения RFID идентификации

RFID-технология часто используется в розничной торговле, библиотеках и архивах, логистике, системах контроля и управления доступом (СКУД), инициализации людей, удостоверении подлинности товаров.

Для идентификации персонала самым популярным форматом являются пластиковые бесконтактные карты и бесконтактные брелки. С их помощью можно регистрировать вход/выход объектов на территории через точки прохода – ворота, КПП. Основной задачей СКУД является управление доступом – например, ограничение в доступе на какую-либо территорию, идентификация лиц, которые могут попадать на территорию. Также могут решаться и дополнительные задачи – контроль рабочего времени для персонала, ведение базы посетителей, работа с системами безопасности, расчет заработной платы.

RFID-брелки используются и для подъездных домофонов. Для открытия дверей чаще всего используются брелки Proximity, то есть брелки ближнего действия, работающие на расстоянии 10-15 см. Proximity также делятся на несколько форматов – наиболее популярные на сегодняшний день EM-Marin, HID для бесконтактных ключей и MIFARE, к которым относятся бесконтактные смарт карты.

Краткое описание Arduino модулей

Модуль Arduino RFID RC522

Модуль RFID RC522 выполнен на основе схемы MFRC522, которая обеспечивает беспроводную коммуникацию на частоте 13,56 МГц. Подключать микросхему можно по интерфейсу SPI, I2c и UART. Стандарт протокола NFC Reader ISO 14443.

Технические характеристики модуля RFID RC522:

  • Напряжение питания 3,3 В;
  • Максимальный потребляемый ток 30 мА;
  • Частотная полоса 13,55-13,57 МГц;
  • Расстояние считывания до 25 мм;
  • Рабочая температура от -20С до 80 С.

Распиновка модуля изображена на рисунке. Контакт SDA (SS, CS, NSS) отвечает за выбор ведомого устройства. Выход SCK является тактовым сигналом SPI. MOSI – отвечает за передачу данных от мастера к ведомому, MISO – от ведомого к мастеру. IRQ – выполняет прерывание. RST – выполняет прерывание.

RDM6300 – бесконтактный считыватель, который используется для дистанционного считывания номера RFID брелка и передачи номера через UART на микроконтроллер, управляющий замком в системах доступа. Устройство обладает несколькими преимуществами – невысокая цена и простота в установке. Чаще всего используется в системах контроля доступа в дома, гаражи, офисы, квартиры и другие здания с электромеханическим замком. Считыватель используется для чтения карт EM4100/TK4100. RDM6300 может монтироваться в стену или в корпус. В качестве микроконтроллера обычно применяется Ардуино.

Технические характеристики RDM6300:

  • Максимальный потребляемый ток 50 мА;
  • Напряжение питания 5 В;
  • Рабочая частота 125 кГц;
  • Рабочие температуры от -10С до 70 С.

Распиновка изображена на рисунке.

Пин TX отвечает за передачу данных, RX – за прием. 3 выход не используется.

Для P2 выходы ANT1 и ANT2 используются для подключения антенны.

Подключение RC522 к Ардуино

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

Подключается модуль RC522 к ардуино по следующей схеме:

Напряжение питания обеспечивается от 2,5 до 3,3 В. Выход RST подключается к D9 пину на ардуино, SDA – к D10, MOSI – D11, MISO – D12, SCK – D13. В данном случае рассмотрены платы Arduino Nano v3 и Arduino Uno. После того как все будет подключено, на RC522 загорится индикатор.

1 Описание считывателя RFID RC522

Модуль RFID-RC522 выполнен на микросхеме MFRC522 фирмы NXP . Эта микросхема обеспечивает двухстороннюю беспроводную (до 6 см) коммуникацию на частоте 13,56 МГц.

Микросхема MFRC522 поддерживает следующие варианты подключения:

С помощью данного модуля можно записывать и считывать данные с различных RFID-меток: брелоков от домофонов, пластиковых карточек-пропусков и билетов на метро и наземный транспорт, а также набирающих популярность NFC -меток.

RFID - это сокращение от "Radio Frequency IDentification" и переводится как «радиочастотная идентификация».
NFC - это "Near field communication", «коммуникация ближнего поля» или «ближняя бесконтактная связь».

2 Схема подключения RFID-RC522 к Arduino

Подключим модуль RFID-RC522 к Arduino по интерфейсу SPI по приведённой схеме.


Питание модуля обеспечивается напряжением от 2,5 до 3,3 В. Остальные выводы подключаем к Arduino так:

Пин RC522 Пин Arduino
RST D9
SDA (SS) D10
MOSI D11
MISO D12
SCK D13

Не забывайте также, что Arduino имеет специальный разъём ICSP для работы по интерфейсу SPI. Его распиновка также приведена на иллюстрации. Можно подключить выводы RST, SCK, MISO, MOSI и GND модуля RC522 к разъёму ICSP на Ардуино.

3 Библиотека для работы Arduino с RFID

Микросхема MFRC522 имеет достаточно обширную функциональность. Познакомиться со всеми возможностями можно изучив её паспорт (datasheet) . Мы же для знакомства с возможностями данного устройства воспользуемся одной из готовых библиотек , написанных для работы Arduino с RC522. Скачайте её и распакуйте в директорию Arduino IDE\libraries\


Установка библиотеки "rfid-master" для работы Arduino с RFID-метками

После этого запустите среду разработки Arduino IDE.

4 Скетч для считывания информации, записанной на RFID-метке

Теперь давайте откроем скетч из примеров: Файл Образцы MFRC522 DumpInfo и загрузим его в память Arduino.


Данный скетч определяет тип приложенного к считывателю устройства и считывает данные, записанные на RFID-метке или карте, а затем выводит их в последовательный порт.

#include #include const int RST_PIN = 9; // пин RST const int SS_PIN = 10; // пин SDA (SS) MFRC522 mfrc522(SS_PIN, RST_PIN); // создаём объект MFRC522 void setup() { Serial.begin(9600); // инициализация послед. порта SPI.begin(); // инициализация шины SPI mfrc522.PCD_Init(); // инициализация считывателя RC522 } void loop() { // Ожидание прикладывания новой RFID-метки: if (! mfrc522.PICC_IsNewCardPresent()) { return; // выход, если не приложена новая карта } // Считываем серийный номер: if (! mfrc522.PICC_ReadCardSerial()) { return; // выход, если невозможно считать сер. номер } // Вывод дампа в послед. порт: mfrc522.PICC_DumpToSerial(&(mfrc522.uid)); }

Текст скетча достаточно хорошо прокомментирован.

Для более полного знакомства с библиотекой изучите файлы MFRC522.h и MFRC522.cpp из директории rfid-master .

5 Дамп данных с RFID-метки

Запустим монитор последовательного порта сочетанием клавиш Ctrl+Shift+M , через меню Инструменты или кнопкой с изображением лупы. Теперь приложим к считывателю билет метро или любую другую RFID-метку. Монитор последовательного порта покажет данные, записанные на RFID-метку или билет.


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

Примечание

Да, с помощью модуля RFID-RC522 можно записать данные на билет метро. Но не обольщайтесь, каждая карта имеет неперезаписываемый счётчик циклов записи, так что «добавить» поездок себе на метро не получится - это сразу будет обнаружено и карта будет забракована турникетом:) А вот использовать билеты метро для записи на них небольших объёмов данных - от 1 до 4 кб - можно. И способы применения этому ограничены только вашей фантазией.

Здравствуйте. Сегодня на очереди RFID-модуль.

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

Я располагаю модулем RFID-RC522. Он поставляется в комплекте с двумя ключами разного исполнения – картой и брелоком. Разницы, непосредственно, в работе нет никакой. Для работы модуля есть библиотека, её можно скачать по ссылке в в конце статьи.

Когда я готовил этот проект, я изучил несколько статей об RFID модуле, на основе представленных там данных (главным образом http://robocraft.ru/blog/3004.html) написал скетч.

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

Если скрытно смонтировать считыватель (например под столешницей), легко можно заблокировать включение компьютера или освещения.

Процесс сборки состоит из следующих этапов:

  1. Собрать прибор по предложенной схеме.
  2. Записать в процессорную плату скетч (ссылка в конце статьи).
  3. Подключить сборку к компьютеру и включить монитор последовательного порта.
  4. Поднести к считывателю ключ.
  5. Отредактировать 20 строку скетча с учетом кода ключа, который пришел в монитор последовательного порта.
  6. Записать отредактированный скетч в плату.
  7. Всё – у нас есть готовая одноранговая система контроля доступа.