Замок на ардуино: Электронный замок своими руками | AlexGyver

RFID замок на Arduino.

Это второе видео из серии про «ВСЁ ПРО RFID«. Надеюсь, что вы посмотрели моё  видео про «Технологии RFID» RFID RC522 Подключение к Ардуино. И теперь мы можем переходить от теории к практике. Сегодня мы соберём систему доступа и сигнализации.

Она работает так.
Если для номера карты прописано разрешение, то загорится зелёный светодиод и откроется электронный замок.
Если это чужая карта, то загорится красный светодиод и замок не сработает.

Для начала нам надо скачать библиотеку для работы с модулем RC522. Она называется MFRC522.h
Установить библиотеку  можно 2-мя способами.
Самый простой – это из самой программы ARDUINO IDE

2 способ

– это скачать архив и разархивировать его в папку libraries.
Думаю, что с этим проблем нет. Если что не понятно, то можете посмотреть моё видео.
После установки заходим в Примеры.

С библиотекой нам прилетело много примеров.
Начнём с 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 замка.zip4 Kb 472 Скачать
приложения управления замком для android.apk33184 Kb 523 Скачать

Дверной RFID-замок на основе Arduino

Электронные дверные замки более безопасны, чем обычные дверные замки. В таких дверных замках нет возможности взлома, так как весь механизм электронный. Такие дверные замки имеют базовую встроенную систему контроля доступа, которая, как правило, непроницаема. В электронных дверных замках используется несколько систем контроля доступа. Наиболее распространенными системами контроля доступа, используемыми в электронных замках, являются PIN-код (персональный идентификационный номер), отпечаток пальца и RFID.

Системы контроля доступа по отпечаткам пальцев предпочтительны только для решений с высокой степенью безопасности или личной безопасности, они очень персонализированы и являются дорогостоящими. PIN и RFID являются экономически эффективными решениями, применимыми к системам общего доступа, таким как гостиничные номера, классы и офисы. Из этих двух систем контроля доступа RFID обеспечивают более высокий уровень безопасности и предлагают более широкое применение. Например, решения RFID можно использовать одновременно для контроля доступа и контроля посещаемости в школах/колледжах.

В этом проекте мы разрабатываем систему дверных замков с радиочастотной идентификацией и изучаем различные способы создания запорного механизма.

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

  1. Arduino UNO/Arduino Mega x1
  2. RC522 RFID-считыватель x1
  3. MFRC522 RFID-карты/метки, 2 шт.
  4. SSD1306 OLED-дисплей x1
  5. Релейный модуль и электромагнитный замок или серводвигатель x1
  6. Соединительные провода/перемычки

  Соединения цепей
Система дверных замков состоит из двух важных цепей – системы контроля доступа и запорного механизма. Для системы контроля доступа здесь используется 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 можно улучшить так, чтобы он потреблял минимально возможную энергию, чтобы оставаться «осведомленным», но не на полной мощности. режим, который в нашем случае был бы излишним.

  1. Итак, можем ли мы сделать Arduino сверхэффективной с точки зрения энергопотребления, даже если мы прикрепим функции WiFi, которые, насколько я понимаю, действительно отнимают время автономной работы? Чтобы мы могли заставить Arduino работать месяцами, прежде чем заменить батарею?

  2. Arduino может посылать только 5В; но соленоид питается от 12В; тогда получение второй батареи для питания нашего соленоида звучит просто, за исключением того, что, насколько мне известно, эта батарея должна работать почти ничего (может быть, я ошибаюсь здесь). И мы хотим, чтобы это продолжалось месяцами, иначе наша дверь останется запечатанной навсегда! Могу ли я сделать соленоид зависимым от Arduino, чтобы он был частью схемы «почти без расхода батареи», и батарея работала, как мне бы хотелось, несколько месяцев? Мы будем говорить только об одной батарее для питания всей установки вместо двух, которые, я думаю, нам понадобятся.

Я новичок, но нельзя ли Arduino подать 12В через реле или транзистор? Не могу публиковать ссылки.

Для уточнения: получить две батареи для нашей полной установки (одну для Arduino, одну для соленоида), если обе эти батареи хватит, не проблема; но было бы катастрофой, если бы одна батарея работала достаточно долго, в то время как другая разряжается за 48 часов. Соленоид должен получать электричество скромно 5 раз в день; Вот почему я считаю, что мы можем сделать его суперэффективным.

Вместе с друзьями мы запрограммировали Arduino на открытие соленоида из Интернета. Мы использовали соленоид на 220 В, потому что он был у нас на складе; это не то, что нам нужно для нашего проекта.

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

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