RFID замок на Arduino.
Это второе видео из серии про «ВСЁ ПРО RFID«. Надеюсь, что вы посмотрели моё видео про «Технологии RFID» RFID RC522 Подключение к Ардуино. И теперь мы можем переходить от теории к практике. Сегодня мы соберём систему доступа и сигнализации.
Она работает так.
Если для номера карты прописано разрешение, то загорится зелёный светодиод и откроется электронный замок.
Если это чужая карта, то загорится красный светодиод и замок не сработает.
Для начала нам надо скачать библиотеку для работы с модулем RC522. Она называется MFRC522.h
Установить библиотеку можно 2-мя способами.
Самый простой – это из самой программы ARDUINO IDE
2 способ

Думаю, что с этим проблем нет. Если что не понятно, то можете посмотреть моё видео.
После установки заходим в Примеры.
С библиотекой нам прилетело много примеров.
Начнём с Firmware_check.
Этот пример проверяет сам модуль RC522. Он показывает версию и ошибки если они есть.
Другой пример DumpInfo.
Этот пример показывает полную информацию про карту RFID.
Здесь можно посмотреть данные записанные в сектора и блоки карты. Ну это всё мы знаем из предыдущего урока.
Давайте рассмотрим первые 5 строчек.
- В первой строчке мы видим версию прошивки. В моём случае – это версия 2.0
- В третьей строчке выводится номе карты, UID в шестнадцатеричной системе счисления .
- В четвёртой строчке цифра 08 говорит нам о том, что карта принадлежит семейству MIFARE Classic 1 k.
- В пятой строчке тип карты.
Дальше идёт таблица секторов и блоков со всеми данными и в самом конце, в нулевом секторе мы снова видим UID карты и данные о производителе чипа.
Всё это мы изучили в первой части. Если не смотрели видео этого урока, то советую посмотреть.
Номер карты в этом примере как я сказал хранится в шестнадцатеричной системе счисления, но для простоты понимания для нас привычнее десятеричная система, вот её я и буду использовать в своём примере.
Рассмотрим подключение модуля RFID RC522 к Ардуино.
Как подключать модуль я уже показывал в предыдущем видеоуроке, поэтому просто покажу схему подключения модуля RFID без объяснений, чтобы не тратить время.
Расскажу только про дополнительный обвес.
- Пищалку-Buzzer я подключил в пину 2 Ардуино
- Светодиод RGB я подключил к пинам 3,4 и 5.
- Электро-замок к пину 6.
Так как замок питается от напряжения 12 Вольт я использую дополнительный источник напряжения.
Сам замок подключен через транзистор MOSFET как показано на схеме.
Что будет не понято спрашивайте в комментариях.
Я создал массив куда буду вставлять номера ключей, а в цикле буду просто перебирать их.
Здесь я вывожу ключи в десятеричной системе. Если вместо DEC написать HEX, то будут выводиться в шестнадцатеричной.
Подносим брелок к считывателю, скетч проверяет номер ключа с условиями доступа. Если ключ совпадает, доступ разрешён.
Если карты нет в условии то прозвучит сигнал, загорится красный светодиод, а замок не открывается.
Ключи должны быть в кавычках и через запятую.
Количество ключей неограниченно, в пределах разумного конечно.
Рассмотрим скетч примера.
Для работы нам нужно знать UID карты. Его можно узнать можно узнать, поднеся карту к считывателю. Я для этого специально оставил вывод информации в монитор порта.
Теперь зная номер карты можно приступать.
В примере я использую RGB светодиод и электро-замок.
Если номер карты совпадает с прописанным в скетче, то доступ разрешён и загорается Зелёный свет, и на замок подаётся напряжение и он срабатывает.
Потом через 5 секунд, светодиод гаснет и напряжение с замка снимается. Теперь можно снова подносить карту для следующего считывания.
Если номер не соответствует скетчу, то загорается Красный свет и звучит сигнал из пищалки длительностью 1 секунда, и замок не сработает. После модуль готов к приёму новой карты.
Я специально написал такой скетч, где номера надо вводить всего в 1 месте и больше ничего менять не надо. Это очень удобно.
Там я поочерёдно добавляю UID карты, и можно посмотреть как меняется принцип работы.
Сначала доступ разрешён всего одному ключу, а именно брелоку.
Все остальные не пройдут аутентификацию и раздастся сигнал.
Теперь добавим второй ключ-карту.
И так далее.
Как видите нет ничего сложного в добавлении новой карты.
А это всего 2 урок. Самое интересное будет в следующих уроках. Так что если заинтересовались, то не забывайте ставить лайк, а кто ещё не подписался, то сейчас самое время.
До встречи в новых уроках. В следующем уроке я расскажу как записывать на карту Фамилию и Имя, а также любую информацию. Будем делать именные карты.
Умный Wi-Fi замок своими руками.
После того как я сделал электронный замок с дисплеем, мне написали, что лучше сделать беспроводной замок. Дешевле и менее заметный. Поэтому я решил сделать Умный Wi-Fi замок своими руками на базе ESP8266. Управлять данным замком можно с помощью мобильного приложения. Что понадобится для того чтобы сделать такой замок сейчас расскажу.
В предыдущем примере использовал следующую электронику для управления замком:
- Электромагнитная защелка
- MOSFET транзистора IRF520N
- Конечный выключатель
- Arduino UNO
- Дисплей Nextion
В данном проекте электроника будет совсем другая это связано со спецификой управления. Также решил поменять MOSFET транзистора IRF520N на драйвер L298n. Это связанно с тем, что на борту драйвер имеется стабилизатор на 5 В. Поэтому не нужно использовать дополнительные понижающие DC-DC преобразователи. Достаточно подвести линию 12 В. Или подключить аккумуляторный блок питания данного номинала по напряжению.
Мозгом данного проекта будет плата NodeMCU на базе микроконтроллера ESP8266. В итоге понадобятся следующие комплектующие:
- Электромагнитная защелка
- Драйвер L298n
- Конечный выключатель
- NodeMCU
Схема подключения Wi-Fi замка.
Электронику Wi-Fi замка собираем вот по такой схеме.
Собираем электронный замок.
Для тестов собрал всю электронику будущего замка на макетной плате.
Протестировал на работоспособность. Сейчас можно приступить к установке на макет двери.
Установил драйвер L298n
Затем подключил все провода к NodeMCU.
С помощью длинных саморезов прикрепил NodeMCU на боковую стенку дверей.
Протестировал. Все подключено правильно. Можно приступать к съёмкам видео.
Прошивка Wi-Fi замка.
Для того чтобы загрузить прошивку нужно настроить среду Arduino IDE для работы с платой NodeMCU. Как это сделать, подробно расписано вот в этой статье.
Затем нужно указать название вашей wi-fi сети и пароль от нее. Если вас интересует более подробная информация по данной теме смотрите мои уроки по ESP866.
Затем настраиваем следующие параметры:
- Пароль – нужно будет указывать в приложении.
- Число неверных попыток – Число попыток ввести пароль до блокировки.
- Время блокировки – На сколько секунд будет заблокировано устройства, в течение этого времени нельзя будет вводить пароль.
Также можно изменить pin подключения реле управления электромагнитной защелкой. В моем случае это драйвер L298n. При необходимости можно изменить пин подключения конечного выключателя.
Внимание! Пины с прификсом «D» работают только для платы NodeMCU, если вы используете другую отладочную плату на ESP8266, смотрите распиловку платы.
Описание приложения управления замком для телефона.
Приложение для телефона написал на xamarin c#. Это мое первое приложение для телефона написанное на данном языке. Правда, я уже делал приложение для ПК на c#. Но, не смотря на небольшой навык, приложение сделано не совсем красиво. С достаточным набором функций для того, чтобы можно было комфортно управлять wi-fi замком.
В приложении можно указать IP адрес устройства, который можно узнать, если после загрузки прошивки в плату открыть монитор порта. Вы увидите следующую информацию.
Вот ваш IP. Его нужно указать в приложении. Если нажать на кнопку сохранить, то данное значение сохранится в памяти телефона и его не нужно будет больше заполнять. Если же не сохранять, то данное поле нужно будет заполнять каждый раз при запуске приложения.
Ниже поле ввода пароль, который указали в прошивке для ESP8266.
Кнопка «Открыть» отправляет данными на устройстве. Под кнопкой надпись сигнализирует «Зарыта» дверь или «Открыта».
Если пароль введён неверно, внизу появится надпись «Неверный пароль 1». Цифра в конце указывает, сколько неверных попыток ввести пароль, было совершено. После указанного числа попыток в прошивке, устройство блокируется на время, которое также указывается в прошивке. В приложении появится надпись «Заблокировано». По истечению времени надпись сигнализирующая о блокировке устройства исчезнет. После чего можно снова водить пароль.
Если вы не подключились к Wi-Fi сети или устройство не доступно, в приложении вы увидите надпись «Нет соединения».
Подписаться на закрытый канал можно тут.
Подведём итоги.
Данная реализация электронного замка получилась достаточно недорогой и при этом по функционалу не хуже чем замок с дисплеем, который я делал в предыдущем проекте.
При этом данную реализацию Wi-Fi замка можно спрятать от любопытных глаз.
Понравился проект Умный Wi-Fi замок своими руками? Не забудь поделиться с друзьями в соц. сетях.
А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.
Спасибо за внимание!
Технологии начинаются с простого!
Фотографии к статье
Файлы для скачивания
Скачивая материал, я соглашаюсь с Правилами скачивания и использования материалов.
Прошивка Wi-Fi замка.zip | 4 Kb | 472 | Скачать | |
приложения управления замком для android.apk | 33184 Kb | 523 | Скачать |
Дверной RFID-замок на основе Arduino
Электронные дверные замки более безопасны, чем обычные дверные замки. В таких дверных замках нет возможности взлома, так как весь механизм электронный. Такие дверные замки имеют базовую встроенную систему контроля доступа, которая, как правило, непроницаема. В электронных дверных замках используется несколько систем контроля доступа. Наиболее распространенными системами контроля доступа, используемыми в электронных замках, являются PIN-код (персональный идентификационный номер), отпечаток пальца и RFID.
Системы контроля доступа по отпечаткам пальцев предпочтительны только для решений с высокой степенью безопасности или личной безопасности, они очень персонализированы и являются дорогостоящими. PIN и RFID являются экономически эффективными решениями, применимыми к системам общего доступа, таким как гостиничные номера, классы и офисы. Из этих двух систем контроля доступа RFID обеспечивают более высокий уровень безопасности и предлагают более широкое применение. Например, решения RFID можно использовать одновременно для контроля доступа и контроля посещаемости в школах/колледжах.
В этом проекте мы разрабатываем систему дверных замков с радиочастотной идентификацией и изучаем различные способы создания запорного механизма.
Необходимые компоненты
- Arduino UNO/Arduino Mega x1
- RC522 RFID-считыватель x1
- MFRC522 RFID-карты/метки, 2 шт.
- SSD1306 OLED-дисплей x1
- Релейный модуль и электромагнитный замок или серводвигатель x1
- Соединительные провода/перемычки
Соединения цепей
Система дверных замков состоит из двух важных цепей – системы контроля доступа и запорного механизма. Для системы контроля доступа здесь используется RFID. В этом дверном замке используется считыватель RFID RC522 для чтения карт RFID, совместимых с MIFARE и NTAG. Каждый замок пропускает доступ только к одной RFID-карте, поэтому всем остальным картам доступ запрещен. Систему также можно запрограммировать на предоставление дополнительного доступа к мастер-карте, которую можно использовать вместо утерянной карты. Пользовательский интерфейс разработан с использованием OLED-дисплея SSD1306. Таким образом, полная система контроля доступа разработана путем сопряжения считывателя RFID RC522 и OLED-дисплея SSD1306 с Arduino UNO.
Считыватель RFID RC522 взаимодействует с Arduino по протоколу SPI. Следующие соединения схемы выполнены для взаимодействия считывателя RFID с Arduino UNO. Чтобы узнать больше о считывании RFID-карт с помощью RC522, перейдите по этой ссылке.
OLED-дисплей SSD1306 взаимодействует с Arduino по протоколу I2C. Чтобы узнать больше о взаимодействии OLED-дисплея SSD1306 с Arduino с использованием последовательного интерфейса I2C, перейдите по этой ссылке. Для сопряжения SSD1306 с Arduino выполняются следующие соединения схемы.
Принципиальная схема системы доступа RFID на основе Arduino
Механизм блокировки может быть построен двумя различными способами. Замок своими руками можно сконструировать с помощью серводвигателя одним методом. Если запирающий механизм построен с использованием серводвигателя, для управления ему требуется вывод ШИМ на Arduino.
Рекомендуется, чтобы сервопривод был снабжен отдельным источником питания с использованием батарей, поскольку колебания мощности серводвигателя могут повредить плату Arduino.
Во втором способе замок может быть выполнен с помощью электромагнитного замка. В этом случае управлять замком можно с помощью любого GPIO на Arduino через релейный модуль.
Принципиальная схема дверного замка RFID на базе Arduino с сервоприводом.
Само реле разделяет источники питания Arduino и соленоида.
Эскиз Arduino (контроль доступа RFID)
Как работает система доступа RFID
Считыватель RFID, использованный для разработки этого дверного замка, — RC522. Этот считыватель RFID может считывать RFID-карты, совместимые с MIFARE и NTAG. Карты RFID имеют либо 7-байтовый уникальный идентификационный номер (UID), либо 4-байтовый неуникальный идентификационный номер (NUID). Даже если используются карты NUID, почти нет возможности получить две карты с одинаковым NUID. Системы запирания сконструированы таким образом, что идентификационный номер отсканированной карты не разглашается в процессе контроля доступа. Даже если доступ к идентификатору карты осуществляется с другого устройства, получить RFID-карту с тем же идентификационным номером невозможно.
Когда карта RFID сканируется с помощью RC522, он считывает NUID/UID конкретной карты. Отсканированный NUID сравнивается с предварительно сохраненным идентификационным номером системы дверного замка. Если идентификатор отсканированной карты совпадает с запрограммированным идентификатором, на OLED-дисплее отображается приветственное сообщение. Если идентификатор отсканированной карты не совпадает с запрограммированным идентификатором, дверь остается незапертой, а на OLED-дисплее отображается сообщение об отказе в доступе. В то же время дверь отпирается либо вращением сервопривода в случае самодельного сервозамка, либо активацией реле в случае соленоидного замка. Замок запрограммирован на пропуск доступа только к одной RFID-карте.
Код
Скетч начинается с импорта библиотеки SPI и MFRC522 для работы со считывателем RC522. В этом проекте используется библиотека Arduino MFRC522 от miguelbalboa, доступная на Github. Загрузите библиотеку в виде ZIP-файла. Перейдите к Sketch->Include Library->Add .ZIP Library в Arduino IDE. Выберите файл rfid-master.ZIP, и библиотека для RC522 будет добавлена в среду Arduino.
Затем следует импорт библиотек Wire, Adafruit_GFX и Adafruit_SSD1306 для работы с SSD1306 OLED. Эти библиотеки можно легко найти в менеджере библиотек.
Затем определяются константы для соединений схемы с OLED-дисплеем и создается экземпляр класса Adafruit_SSD1306. Определены константы для соединений цепи с RC522, и создан объект класса MFRC522. Определена переменная для хранения ключа MIFARE. Массив байтов ‘nuidPICC[]’ определен для хранения 4 байтов RFID NUID. Переменные объявлены для хранения строковых представлений NUID в десятичном и шестнадцатеричном форматах. Точно так же определяется переменная для хранения строкового представления ключа MIFARE. Растровое изображение хранится в PROGMEM для лога сайта, и для него определяется массив.
В функции setup() скорость передачи данных для последовательной связи установлена на 9600 бит/с. OLED-дисплей инициализируется вызовом метода display.begin(SSD1306_SWITCHCAPVCC), а дисплей мигает вызовом метода display.display(). Протокол SPI инициализируется вызовом метода SPI.begin(). Модуль RFID инициализирует метод PCD_Init() для объекта RFID. Байты ключа MIFARE устанавливаются в FF и сохраняются в строковом представлении в верхнем регистре. Ключ MIFARE публикуется в Serial Monitor. OLED-дисплей очищается, а логотип сайта мигает.
В функции loop() некоторые начальные сообщения сначала выводятся на экран. Карта/ключ/метка RFID обнаруживается путем вызова метода PICC_IsNewCardPresent() для объекта RFID. Затем NUID/UID карты считывается путем вызова метода PICC_ReadCardSerial() для объекта RFID. Тип карты MIFARE определяется с помощью метода PICC_GetType(rfid.uid.sak) и отображается на последовательном мониторе. Затем осуществляется доступ к отдельным байтам NUID с использованием свойства rfid.uid.uidByte[]. Сначала байты сериализуются в десятичном формате и преобразуются в строковый объект. Строка, содержащая десятичное представление NUID, публикуется в Serial Monitor. Затем байты сериализуются в шестнадцатеричном формате и преобразуются в строковый объект. Строка, содержащая шестнадцатеричное представление NUID, публикуется на последовательном мониторе.
Прочитанные байты NUID сохраняются в массиве символов. Этот массив символов сравнивается с предопределенным NUID с помощью определяемой пользователем функции compareNUID(). Функция возвращает логическое значение, используемое для определения контроля доступа. Если отсканированный NUID совпадает с запрограммированным ID, на OLED-экране отображается сообщение о предоставлении доступа. Если отсканированный NUID не соответствует запрограммированному ID, на OLED-экране отображается сообщение об отказе в доступе.
Читатель останавливается от чтения карты, вызывая метод PICC_HaltA() для объекта RFID. Наконец, шифрование останавливается вызовом метода PCD_StopCrypto1() для объекта RFID.
Функция loop() использует две определяемые пользователем функции — printtext() и compareNUID(). Функция printtext() предназначена для отображения сообщений на OLED-экране. Функция compareNUID() предназначена для сравнения отсканированных карт с запрограммированным идентификатором.
Построение и управление запорным механизмом
Электронный запирающий механизм может быть выполнен несколькими способами. Здесь мы обсудим два способа. В первом способе мы можем создать замок с сервоприводом своими руками. Сервопривод остается на 0 градусов в разблокированном положении и поворачивается на 90 градусов в закрытом положении. Его вывод данных должен быть подключен к выводу PWM Arduino для управления сервоприводом. Сервопривод управляется через контакт D3 Arduino UNO на принципиальной схеме выше.
Второй метод выполняется путем подключения электромагнитного замка к Arduino через модуль реле. Реле 5 В можно управлять с любого GPIO Arduino UNO. Контакт D3 Arduino также является цифровым входом/выходом, поэтому его также можно использовать для управления реле.
Эскиз Arduino для самодельного сервозамка
Набор Arduino для электромагнитного замка
Рубрики: Arduino, Electronic Projects, Featured
С тегами: Arduino, Arduino MFRC522 RC522 RFID-считыватель, Arduino MFRC522 RFID-считыватель, Arduino RFID-метки MIFARE , проекты Arduino, считыватель RFID Arduino RC522, система контроля доступа RFID Arduino, дверной замок RFID Arduino, сервопривод дверного замка RFID Arduino, соленоид дверного замка Arduino RFID с низким энергопотреблением
Я полный новичок во всем, что связано с электроникой, программным обеспечением или оборудованием; тем не менее, с парой друзей мы продолжаем интересный проект, связанный с автоматизацией с помощью беспроводных устройств: более или менее IoT, но с электрическими замками.
Случайный сценарий: есть комната без розеток. Там обычная дверь. Мы хотим иметь возможность открывать эту дверь через Интернет с замком, который находится внутри комнаты, по другую сторону двери ; все это, учитывая мы:
Нельзя вносить изменения в конструкцию двери.
Невозможно просверлить или проделать отверстия или сделать что-то еще, чтобы провести силовой кабель к внутри комнаты.
Но мы можем приклеить некоторые детали за дверью, это внутри комната, в которой нет розеток.
До сих пор мы планировали использовать Arduino Uno; усовершенствовать его с помощью функций Wi-Fi (например, модуля или экрана), чтобы обойти ограничение, связанное с невозможностью подключения кабеля Ethernet; и приклейте соленоид или замок к внутренней части дверей, чтобы он действовал как второй замок, который можно разблокировать только через Интернет, доступ к которому осуществляется через Arduino.
Идеальным сценарием было бы дистанционное открытие этой двери из нашего дома, даже если эта дверь находится в сотне кварталов от нас. Если кто-то хочет войти, он должен спросить нашего разрешения, так как мы не контролируем встроенную ручку, но мы контролируем защелку, закрепленную внутри.
Вся эта установка должна питаться от долговечной батареи: мы не можем ничего подключить, и мы не можем рисковать быстрой разрядкой батарей, потому что мы больше никогда не сможем открыть дверь. Нам нужно, чтобы эти батареи работали достаточно долго, чтобы иметь возможность заменить их в разумное время; система резервных батарей также должна работать хорошо.
Стандартные электромагнитные замки на 12 В. Насколько я понимаю, Arduino питает устройства на 5 В, а не на 12 В.
Мы должны открывать эту дверь только 5 раз в день. Вот и все; в оставшееся время между ними вся настройка устройства вполне может оставаться «бездействующей», в режиме низкого энергопотребления, только для того, чтобы «проснуться», когда мы отдаем команду: «Arduino, пожалуйста, скажите соленоиду, чтобы он открылся».
Мы не указали, какую батарею будем использовать; в идеале самый экономичный вариант. Если он продлится 3 месяца и будет стоить, скажем, 20 долларов — что ж, нам бы это понравилось.
Я сделал этот очень неточный схематический рисунок, чтобы проиллюстрировать нашу идею и исследование. Я знаю, что не хватает многих деталей, но я хотел доказать нашу точку зрения:
(Arduino должен располагаться на стене, а не на двери! Плохо.)
Надеюсь, я достаточно ясно выразился.
Тогда вопросы таковы:
Я провел небольшое исследование и увидел, что Arduino можно улучшить так, чтобы он потреблял минимально возможную энергию, чтобы оставаться «осведомленным», но не на полной мощности. режим, который в нашем случае был бы излишним.
Итак, можем ли мы сделать Arduino сверхэффективной с точки зрения энергопотребления, даже если мы прикрепим функции WiFi, которые, насколько я понимаю, действительно отнимают время автономной работы? Чтобы мы могли заставить Arduino работать месяцами, прежде чем заменить батарею?
Arduino может посылать только 5В; но соленоид питается от 12В; тогда получение второй батареи для питания нашего соленоида звучит просто, за исключением того, что, насколько мне известно, эта батарея должна работать почти ничего (может быть, я ошибаюсь здесь).
И мы хотим, чтобы это продолжалось месяцами, иначе наша дверь останется запечатанной навсегда! Могу ли я сделать соленоид зависимым от Arduino, чтобы он был частью схемы «почти без расхода батареи», и батарея работала, как мне бы хотелось, несколько месяцев? Мы будем говорить только об одной батарее для питания всей установки вместо двух, которые, я думаю, нам понадобятся.
Я новичок, но нельзя ли Arduino подать 12В через реле или транзистор? Не могу публиковать ссылки.
Для уточнения: получить две батареи для нашей полной установки (одну для Arduino, одну для соленоида), если обе эти батареи хватит, не проблема; но было бы катастрофой, если бы одна батарея работала достаточно долго, в то время как другая разряжается за 48 часов. Соленоид должен получать электричество скромно 5 раз в день; Вот почему я считаю, что мы можем сделать его суперэффективным.
Вместе с друзьями мы запрограммировали Arduino на открытие соленоида из Интернета. Мы использовали соленоид на 220 В, потому что он был у нас на складе; это не то, что нам нужно для нашего проекта.