Rs522 подключение к компьютеру
Как известно, компьютеры были изобретены в 1871 году, но только в 1961 году контроль доступа к ним (ПК) начали осуществлять с помощью пароля. В настоящее время кроме буквенно-цифровых паролей доступно и множество новых, появившихся сравнительно недавно, способов идентификации: с помощью жестов, отпечатка пальца, распознавания лица и многое другое.
В этой статье мы рассмотрим как разблокировать компьютер, работающий на операционной системе Windows, с помощью платы Arduino и меток RFID (Radio Frequency Identification - радиочастотная идентификация). К компьютеру будут подключены плата Arduino и считыватель RFID меток и чтобы разблокировать компьютер нужно будет всего лишь поднести "правильную" радиочастотную метку к считывателю RFID меток.
Необходимые компоненты
- Плата Arduino Uno (купить на AliExpress).
- RC522 RFID reader (считыватель радиочастотных меток) (купить на AliExpress).
- RFID метки.
- USB кабель.
- Соединительные провода.
Считыватель RFID меток RC522
Сейчас на рынке доступно достаточно много моделей считывателей RFID меток, однако для нашего проекта мы выбрали модуль RC522, работающий по интерфейсу SPI. Это достаточно дешевое устройство, доступное для покупки практически во всех магазинах радиоэлектроники. Модуль RC522 имеет интерфейсы SPI, UART и I2C, однако по умолчанию он использует интерфейс SPI. Внешний вид данного модуля показан на следующем рисунке.
В этом проекте модуль RC522 подключен к плате Arduino, а плата Arduino подключена к компьютеру. Когда RFID метку подносят к модулю RC522, плата Arduino с его помощью считывает идентификатор RFID метки (ID number) и передает его в компьютер.
Схема проекта
Схема подключения считывателя RFID меток RC522 к плате Arduino представлена на следующем рисунке.
Поскольку RFID модуль RC522 работает по интерфейсу SPI, то подключить его к плате Arduino достаточно просто – мы соединили его контакты MISO, MOSI, SCK и NSS к контактам SPI платы Arduino Uno. Модуль RC522 запитывается от контакта 5V платы Arduino. Сама же плата Arduino получает питание по USB кабелю от компьютера. Полный список соединений в схеме представлен в следующей таблице.
Модуль RC522 | Плата Arduino Uno |
VCC | 3.3V |
GND | GND |
RST | D9 |
MISO | D12 |
MOSI | D11 |
SCK | D13 |
SDA/NSS | D10 |
Внешний вид собранной конструкции проекта показан на следующем рисунке.
Установка блокировки/разблокировки компьютера с помощью RFID
После сборки схемы проекта подключите плату Arduino к компьютеру. Определите COM порт компьютера, к которому подключилась плата Arduino – это можно сделать либо с помощью диспетчера устройств Windows, либо с помощью Arduino IDE как показано на следующем рисунке. В нашем случае плата Arduino оказалась подключенной к COM порту под номером 1.
После этого в плату Arduino необходимо загрузить код программы для работы с модулем RC522 – он приведен в конце статьи. После загрузки кода программы в плату откройте окно монитора последовательной связи (serial monitor). Затем прислоните RFID метку к модулю RC522, после чего вы увидите в окне монитора последовательной связи 5 значений. Эти значения необходимо скопировать себе в "укромное место" и закрыть окно монитора последовательной связи. Полученные нами значения показаны на следующем рисунке.
После этого скачайте каталог с настройками RFID (rfid_configuration folder) по следующей ссылке - rfid_configuration ZIP file. По этой ссылке вы скачаете ZIP архив, в котором будет 4 файла.
После распаковки ZIP архива зайдите в нем в каталог с именем 32 bit или 64-bit в зависимости от того 32 или 64-разрядная у вас операционная система. В этом каталоге откройте текстовый файл RFIDcredentials.txt. Вставьте в него свои значения из окна монитора последовательной связи (которые вы получили ранее) и обновите (укажите свои) имя пользователя (user name) и пароль (password). Если вы хотите добавить две карты для входа в операционную систему, то заполните и вторую строчку в файле RFIDcredentials.txt как показано на следующем рисунке.
После этого сохраните и закройте этот файл. Затем откройте из этой же папки файл RFIDCredSettings, измените в нем номер COM порта, к которому подключена плата Arduino, на свой, сохраните и закройте этот файл. Остальные значения в файле не меняйте.
Теперь скопируйте все 4 элемента нашего каталога, которые вы извлекли из скачанного ZIP архива и изменили в них часть значений на свои, в каталог C:\Windows\System32. Если система потребует подтверждения этой операции – подтвердите ее.
Теперь запустите файл реестра (register file) чтобы внести изменения в реестр. При этом, скорее всего, вы на своем экране увидите примерно следующее диалоговое окно:
Нажмите "yes", затем "ok". После этого осуществите выход из системы и вы увидите что в систему был добавлен еще один пользователь – с именем RFID.
Объяснение программы для Arduino
Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.
Первым делом в программе нам необходимо подключить заголовочные файлы всех используемых библиотек и определить контакты для RFID RST_PIN и SS_PIN. Если в вашей Arduino IDE еще нет библиотеки для работы с модулем RC522 (mfrc522 library), то вы можете скачать ее по следующей ссылке - MFRC522 Arduino Library. После скачивания библиотеку необходимо добавить в вашу Arduino IDE.
Радиочастотная идентификация (RFID - Radio Frequency Identification) в настоящее время является недорогой технологией, удобной для применения во многих приложениях: контроля доступа, безопасности, определения местоположения людей и транспортных средств и т.д. Вы могли видеть дверные замки с системой радиочастотной идентификации (RFID) во многих отелях, офисах и других учреждениях. Для того чтобы открыть дверь, оборудованную подобной системой, достаточно прислонить карту с RFID меткой к считывателю подобных карт, и после этого дверь откроется. На нашем сайте вы также можете посмотреть и другие проекты, в которых была использована радиочастотная идентификация.
В этой статье мы рассмотрим дверной замок (Solenoid Door Lock), который будет открываться с помощью соленоида (электромагнитной катушки), а управляться с помощью платы Arduino и радиочастотной идентификации (RFID). Для обнаружения движений двери в нашем проекте будет использоваться датчик Холла и магнит. Датчик Холла будет размещен на раме двери, а магнит будет размещен на самой двери. Когда магнит и датчик Холла будут близко друг к другу, на выходе датчика Холла будет напряжение низкого уровня (low state) и дверь будет оставаться закрытой, а когда дверь будет открытой, то датчик Холла и магнит будут далеко друг от друга, и на выходе датчика Холла будет напряжение высокого уровня (high state). Мы будем использовать эффект Холла для открытия и закрытия двери автоматически. Более подробно о подключении датчика Холла к плате Arduino можно прочитать в этой статье.
Необходимые компоненты
- Плата Arduino Uno (купить на AliExpress).
- RFID-RC522 Module (модуль радиочастотной идентификации) (купить на AliExpress).
- Замок с электромагнитным управлением, работающий от 12 В (12v Solenoid Lock) (купить на AliExpress).
- Модуль реле (купить на AliExpress).
- Датчик Холла (Hall Effect Sensor) (купить на AliExpress).
- Резистор 10 кОм (купить на AliExpress).
- Зуммер (Buzzer) (купить на AliExpress).
Замок с электромагнитным управлением
Замок с электромагнитным управлением (solenoid lock) использует электромеханический блокирующий механизм. Он содержит в своем составе личинку со скошенным концом и монтажный кронштейн. Когда на данный замок подается питание, электрический ток создает магнитное поле, под действием которого личинка втягивается внутрь замка и, таким образом, дверь открывается. Личинка будет оставаться внутри замка до тех пор, пока на замок будет подаваться питание. Когда питание на замок перестает подаваться, личинка выдвигается наружу замка и закрывает дверь. В закрытом состоянии замок не потребляет питания. Внешний вид замка с электромагнитным управлением показан на рисунке ниже. Для управления подобным замком необходим источник питания, который будет выдавать 12V @ 500mA.
Схема проекта
Схема замка с электромагнитным управлением на основе Arduino и радиочастотной идентификации представлена на следующем рисунке.
Соединения между платой Arduino и модулем RFID приведены в таблице ниже. Положительный контакт зуммера подключен к цифровому контакту 4 платы Arduino, а его контакт GND подключен к контакту земли (ground pin) платы Arduino. Резистор 10 кОм подключен между контактами VCC и OUT датчика Холла. Замок с электромагнитным управлением подключен к плате Arduino с помощью модуля реле.
Модуль RFID | Плата Arduino |
SDA | Digital 10 |
SCK | Digital 13 |
MOSI | Digital 11 |
MISO | Digital 12 |
IRQ | не соединен |
GND | GND |
RST | Digital 9 |
3.3V | 3.3V |
Датчик Холла | Плата Arduino |
5V | 5V |
GND | GND |
OUT | 3 |
После пайки компонентов проекта на перфорированной плате у нас получилась конструкция следующего вида:
Объяснение программы для Arduino
Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.
В начале программы нам будет необходимо подключить все используемые библиотеки, в нашем случае их всего две – одна для связи по интерфейсу SPI между платой Arduino и модулем RFID, и вторая – непосредственно для работы с модулем RFID. Обе эти библиотеки можно скачать по следующим ссылкам:
Также в начальной части программы необходимо определить контакты, к которым подключаются зуммер, замок с электромагнитным управлением (Solenoid Lock) и модуль RFID.
В данном уроке мы научимся делать простую систему, которая будет отпирать замок по электронному ключу (Метке).
В дальнейшем Вы можете доработать и расширить функционал. Например, добавить функцию "добавление новых ключей и удаления их из памяти". В базовом случае рассмотрим простой пример, когда уникальный идентификатор ключа предварительно задается в коде программы.
В этом уроке нам понадобится:
Для реализации проекта нам необходимо установить библиотеки:
Сборка:
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.
Более наглядно Вы можете посмотреть, как мы подключили все модули на картинке ниже:
Теперь, если все подключено, то можно переходить к программированию.
Скетч:
Разберем скетч более детально:
Для того, что бы узнать UID карточки(Метки), необходимо записать данный скетч в arduino, собрать схему, изложенную выше, и открыть Консоль (Мониторинг последовательного порта). Когда вы поднесете метку к RFID, в консоли выведется номер
Полученный UID необходимо ввести в следующую строчку:
У каждой карточки данный идентификатор уникальный и не повторяется. Таком образом, когда вы поднесете карточку, идентификатор которой вы задали в программе, система откроет доступ с помощью сервопривода.
В этой статье мы рассмотрим подключение к Arduino считывателя карт и брелоков RFID RC522, работающего на частоте 13,56 МГц.
- Arduino (или совместимая плата); ;
- беспроводная RFID метка (идёт в комплекте по ссылке выше) или бесконтактный билет на метро/наземный транспорт; ;
- соединительные провода (вот такие);
- компьютер с Arduino IDE.
1 Описание считывателяRFID RC522
Модуль RFID-RC522 выполнен на микросхеме MFRC522 фирмы NXP. Эта микросхема обеспечивает двухстороннюю беспроводную (до 6 см) коммуникацию на частоте 13,56 МГц.
Беспроводной модуль RFID-RC522
Микросхема MFRC522 поддерживает следующие варианты подключения:
Интерфейс | Скорость передачи |
---|---|
SPI (Serial Peripheral Interface, последовательный интерфейс для связи периферийных устройств) | до 10 Мбит/сек; |
двухпроводной интерфейс I 2 C | до 3400 кбод в режиме High-speed, до 400 кбод в режиме Fast; |
последовательный UART (аналог RS232) | до 1228,8 кбод. |
С помощью данного модуля можно записывать и считывать данные с различных RFID-меток: брелоков от домофонов, пластиковых карточек-пропусков и билетов на метро и наземный транспорт, а также набирающих популярность NFC -меток.
2 Схема подключения RFID-RC522 к Arduino
Подключим модуль RFID-RC522 к Arduino по интерфейсу SPI по приведённой схеме.
Схема подключения 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 имеет достаточно обширную функциональность. Познакомиться со всеми возможностями можно изучив её техническое описание (приложено внизу статьи). Мы же для знакомства с возможностями данного устройства воспользуемся одной из готовых библиотек, написанных для работы Arduino с RC522. Скачайте её и распакуйте в директорию Arduino IDE\libraries\
Установка библиотеки "rfid-master" для работы Arduino с RFID-метками
После этого запустите среду разработки Arduino IDE.
4 Скетч для считывания информации, записанной на RFID-метке
Теперь давайте откроем скетч из примеров: Файл Образцы MFRC522 DumpInfo и загрузим его в память Arduino.
Открываем скетч DumpInfo
Данный скетч определяет тип приложенного к считывателю устройства и считывает данные, записанные на RFID-метке или карте, а затем выводит их в последовательный порт.
Текст скетча достаточно хорошо прокомментирован.
Для более полного знакомства с библиотекой изучите файлы MFRC522.h и MFRC522.cpp из директории rfid-master.
5 Дамп данных с RFID-метки
Запустим монитор последовательного порта сочетанием клавиш Ctrl+Shift+M , через меню Инструменты или кнопкой с изображением лупы. Теперь приложим к считывателю билет метро или любую другую RFID-метку. Монитор последовательного порта покажет данные, записанные на RFID-метку или билет.
Считываем данные с билета на наземный транспорт и метро с помощью RFID
Например, в моём случае здесь зашифрованы уникальный номер билета, дата покупки, срок действия, количество оставшихся поездок, а также служебная информация. Мы разберём в одной из будущих статей, что же записано на карты метро и наземного транспорта.
Примечание
Да, с помощью модуля RFID-RC522 можно записать данные на билет метро. Но не обольщайтесь, каждая карта имеет неперезаписываемый счётчик циклов записи, так что «добавить» поездок себе на метро не получится – это сразу будет обнаружено и карта будет забракована турникетом :) А вот использовать билеты метро для записи на них небольших объёмов данных – от 1 до 4 кб – можно. И способы применения этому ограничены только вашей фантазией.
Читайте также: