Электронный замок своими руками без ардуино

Добавил пользователь Alex
Обновлено: 18.09.2024

Умный замок DIY с Arduino и RFID

Вы подходите к невидимому замку, ключ к которому есть только у вас, и открываете его, даже не касаясь его. Звучит круто? Сегодня мы собираемся создать простую интеллектуальную блокировку на основе RFID с использованием Arduino в качестве основы и нескольких дешевых компонентов.

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

Мы создадим тестовую схему для контроля доступа с использованием модуля считывателя Mifare MFRC522, чтобы открывать и закрывать замок. Мы будем использовать основную карточку-ключ для добавления или удаления доступа к различным тегам, а также создадим простое светодиодное отображение, чтобы сообщить нам, что происходит в системе.

Наконец, мы добавим соленоид, который будет действовать как замок, и полевой МОП-транзистор, чтобы безопасно включать и выключать его с помощью нашего Arduino.


Тебе понадобится

  • Arduino. Мы использовали Uno, хотя любая плата или клона хватит.
  • 3 х 220 Ом резисторы
  • 1 х 10 кОм резистор
  • Логика уровня N канала Мосфет
  • Модуль MFRC522 как минимум с двумя картами / фобами для чтения. Большинство из них поставляются с одним из них и могут быть куплены менее чем за 2 доллара , но, вероятно, у вас уже есть один в вашем кошельке в виде общественной проездной.
  • Красный, синий и зеленый светодиоды
  • 12v соленоид ( $ 2 )
  • 12 В блок питания
  • Макет и подключение проводов

Модуль MFRC522

Звездой этой установки является дешевый модуль MFRC522, который поставляется с картой и брелком, содержащим чип s50 , каждый из которых хранит свой уникальный постоянный идентификационный номер (UID). Они оба функционально идентичны, просто в разной форме.

модуль и карта

Начните с поиска библиотеки MFRC522 в менеджере библиотек вашей Arduino IDE и установите ее. Кроме того, вы можете скачать библиотеку и установить ее вручную в папку библиотеки. Если вы новичок в Arduino, вы можете найти этот учебник для начинающих. полезно!

Библиотека также содержит диаграмму Fritzing, которую я аннотировал, показывая, как прикрепить модуль к вашему Arduino.

Arduino RFID Распиновка проводки

Изображение предоставлено: Мигель Бальбоа через Github

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

серийный вывод информации о дампе

Если при считывании MIFARE_Read() failed: Timeout in communication ошибки, говорящие о MIFARE_Read() failed: Timeout in communication или PCD_Authenticate() failed: Timeout in communication , не беспокойтесь. Скорее всего, это означает, что вы не держали метку в считывателе достаточно долго, чтобы прочитать все данные. Пока вы получаете UID карты (который читается, как только тег находится в пределах досягаемости считывателя), он будет работать с этим проектом. Если вы вообще не читаете, проверьте проводку и попробуйте снова.

Остальная часть трассы

Теперь, когда мы убедились, что наш модуль работает, давайте добавим остальные компоненты. Подключите ваши компоненты так:

фризирование схемы полной настройки

  • Наш источник питания 12 В (пока что не подключен) подключается к направляющим нашего макета. Подсоедините вывод Arduino GND и вывод MFRC522 GND к шине заземления.
  • Светодиоды подключены к контактам 2, 3 и 4 и к шине заземления через резисторы 220 Ом.
  • Стержень затвора нашего MOSFET (слева на изображении) подключается к контакту 5 и заземляется через резистор 10 кОм. Сливная ветвь (в середине) соединяется с отрицательной клеммой нашего 12-вольтового соленоида, а истоковая ветвь (справа) соединяется с шиной заземления.
  • Подсоедините положительный вывод соленоида 12 В и VIN Arduino к шине 12 В на макете.

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

После того, как все это собрано, оно должно выглядеть примерно так:

схема расположения

Хотя в этом нет необходимости, я создал небольшую оснастку для имитации дверного замка из древесного мусора.

Модификация эскиза

Существует много информации, представленной как в примере эскиза, так и на странице GitHub для библиотеки. Нам нужно всего лишь изменить несколько строк. Кроме того, вы можете скачать наш модифицированный код из этого GitHub Gist .

Во-первых, эскиз был разработан для схемы с одним светодиодом RGB, использующим общий анод. Мы не будем использовать это, поэтому просто закомментируйте этот раздел.

Теперь совместите наши светодиодные контакты с теми, которые указаны в эскизе.

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

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

Нам нужно только сделать еще одно изменение. Прямо в нижней части метода цикла , в операторе if находится вызов метода (300) . Нам нужно изменить это так, чтобы он использовал нашу переменную lockDelay .

Это оно! Ваш главный ключ все настроен. Отключите плату Arduino от компьютера. Детали вашего мастер-ключа будут сохранены в EEPROM Arduino даже после выключения питания.

Тестирование полной настройки

Еще раз быстро осмотрите проводку, чтобы убедиться, что все на месте, и подключите источник питания 12 В. На этом этапе стоит упомянуть, что вам следует остерегаться рабочего цикла вашего соленоида. Дешевый соленоид, который я использую для этого теста, не имеет 100-процентного рабочего цикла, поэтому его не следует оставлять в заблокированном положении в течение длительного времени. Чтобы сделать это в постоянной настройке, используйте соленоид 100-процентного рабочего цикла. Еще лучше было бы нормально закрытый (NC) соленоид, который остается заблокированным, когда он не запитан. Это также означает, что любой, кто хочет обойти систему, не может просто отключить ее!

Когда цепь включена, синий светодиод должен загореться, чтобы показать, что устройство работает. При удерживании основной карты над устройством считывания переводится в режим администратора, все три светодиода должны мигать. Пока они мигают, вы можете удерживать другие карты или слоты над ридером, чтобы добавить или убрать права доступа. Он будет мигать зеленым цветом для предоставления доступа и синим для удаления. Используйте мастер-карту снова, чтобы выйти из режима администратора.

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

Все сделано!

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

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

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

Вы использовали RFID в домашних условиях? Дайте нам знать о ваших проектах в разделе комментариев ниже!

Кодовый замок на Arduino можно приспособить для различных целей. Это могут быть двери, шкатулки, сейфы или запуск какого-либо действия, например, запуск ракеты).

Техническое задание

Разработать кодовый замок на Arduino, который управляет электромагнитным реле. При правильном вводе 5-значного кода, срабатывает реле и загорается зеленый светодиод. Через 5 секунд реле приходит в изначальное состояние и зеленый светодиод гаснет. Если код введен неверно, то загорается красный светодиод в течение 5 секунд. Код можно вводить бесконечное количество раз.

Разработка

Давайте для начала смоделируем схему в Proteus

Кодовый замок на Arduino

На схеме мы видим матрицу из кнопок, два светодиода и вместо катушки реле для удобства взят спикер, который при эмуляции начинает трещать. При правильном наборе кода загорается светодиод L_1 и трещит спикер LS1 в течение 5 секунд.

Keypad keypad = Keypad ( makeKeymap ( keys ) , rowPins , colPins , ROWS , COLS ) ; // создаем объект клавиатуры для работы с ней

Описание кода

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

В данном проекте, нам потребуется использовать три значения, которые мы будем использовать при написании нашего кода. Мы могли бы пойти стандартным путем и создать три переменные, присвоить им имена и значения, и затем просто использовать их. Но мы решили пойти немножко дальше, и показать, как можно еще более удобным способом решить данную задачу. Мы создаем 4 директивы, LED1, LED2 и RELAY, NUM_KEYS и присваиваем им постоянное значение, которое идет после названия директивы. После значения, точку с запятой, как мы привыкли, закрывать нашу строку, ставить не требуется.

Здесь мы знакомимся с новым типом массивов и переменных char, в котором помимо цифровых значений, могут храниться символьные, например буквы, и различные знаки. Итак, мы создаем массив myarraw, который содержит 5 знаков, (не забываем про создание директивы). В данный массив мы записываем 5 значений, которые содержатся в фигурных скобках. Они будут являться кодом, по которому будет открываться наш замок, их вы впоследствии сможете поменять на любые другие. Затем нам нужно создать еще один массив, также 5 знаков, в котором будут храниться значения, наших нажатых кнопок.

Здесь мы объявляем две переменные, к и s, и присваиваем им значение 0. В первой из них у нас будет храниться количество нажатий, а во второй количество совпадений, кода для открытия замка, который мы задали ранее в массиве, с кодом набранным на клавиатуре.

Здесь же, мы задаем 2 константы формата byte, в целях экономии памяти, нашего контроллера мы пользуемся форматом для хранения переменных byte, а не привычный многим формат int. В данном случае он будет избыточен, для наших задач.

Теперь же, нам нужно будет создать, таблицу соответствия, кнопок клавиатуры символам, которые будут сохраняться в наших массивах. Как мы видим, их расположение, совпадает с нанесенными значками на клавиатуре.

Ну а здесь, нам требуется создать два массива, по 4 знака каждый, соответственно по количеству строк и столбцов, и задать, к каким пинам ардуино они у нас будут подключены. Формат переменной, как и в прошлом случае, у нас выбран byte.

Keypad keypad = Keypad ( makeKeymap ( keys ) , rowPins , colPins , ROWS , COLS ) ; // создаем объект клавиатуры для работы с ней

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

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

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

менеджер библиотек-1

менеджер библиотек-2

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

примеры

С библиотекой нам прилетело много примеров.
Начнём с Firmware_check.
Этот пример проверяет сам модуль RC522. Он показывает версию и ошибки если они есть.

Другой пример DumpInfo.
Этот пример показывает полную информацию про карту RFID.
Здесь можно посмотреть данные записанные в сектора и блоки карты. Ну это всё мы знаем из предыдущего урока.

Давайте рассмотрим первые 5 строчек.

первые 5 строчек

  • В первой строчке мы видим версию прошивки. В моём случае – это версия 2.0
  • В третьей строчке выводится номе карты, UID в шестнадцатеричной системе счисления .
  • В четвёртой строчке цифра 08 говорит нам о том, что карта принадлежит семейству MIFARE Classic 1 k.
  • В пятой строчке тип карты.

0 сектор

Дальше идёт таблица секторов и блоков со всеми данными и в самом конце, в нулевом секторе мы снова видим UID карты и данные о производителе чипа.

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

Рассмотрим подключение модуля RFID RC522 к Ардуино.

подключение

Как подключать модуль я уже показывал в предыдущем видеоуроке, поэтому просто покажу схему подключения модуля RFID без объяснений, чтобы не тратить время.
Расскажу только про дополнительный обвес.

  • Пищалку-Buzzer я подключил в пину 2 Ардуино
  • Светодиод RGB я подключил к пинам 3,4 и 5.
  • Электро-замок к пину 6.

Так как замок питается от напряжения 12 Вольт я использую дополнительный источник напряжения.
Сам замок подключен через транзистор MOSFET как показано на схеме.
Что будет не понято спрашивайте в комментариях.

массив

Я создал массив куда буду вставлять номера ключей, а в цикле буду просто перебирать их.
Здесь я вывожу ключи в десятеричной системе. Если вместо DEC написать HEX, то будут выводиться в шестнадцатеричной.

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

Количество ключей неограниченно, в пределах разумного конечно.

Рассмотрим скетч примера.
Для работы нам нужно знать UID карты. Его можно узнать можно узнать, поднеся карту к считывателю. Я для этого специально оставил вывод информации в монитор порта.
Теперь зная номер карты можно приступать.
В примере я использую RGB светодиод и электро-замок.
Если номер карты совпадает с прописанным в скетче, то доступ разрешён и загорается Зелёный свет, и на замок подаётся напряжение и он срабатывает.
Потом через 5 секунд, светодиод гаснет и напряжение с замка снимается. Теперь можно снова подносить карту для следующего считывания.
Если номер не соответствует скетчу, то загорается Красный свет и звучит сигнал из пищалки длительностью 1 секунда, и замок не сработает. После модуль готов к приёму новой карты.
Я специально написал такой скетч, где номера надо вводить всего в 1 месте и больше ничего менять не надо. Это очень удобно.
Посмотрев видео вы увидите как это всё работает.
Там я поочерёдно добавляю UID карты, и можно посмотреть как меняется принцип работы.
Сначала доступ разрешён всего одному ключу, а именно брелоку.
Все остальные не пройдут аутентификацию и раздастся сигнал.
Теперь добавим второй ключ-карту.
И так далее.

Как видите нет ничего сложного в добавлении новой карты.
А это всего 2 урок. Самое интересное будет в следующих уроках. Так что если заинтересовались, то не забывайте ставить лайк, а кто ещё не подписался, то сейчас самое время.
До встречи в новых уроках. В следующем уроке я расскажу как записывать на карту Фамилию и Имя, а также любую информацию. Будем делать именные карты.



Немного повозившись, я собрал действующую модель умного замка. В этой статье я расскажу вам, как я ее собрал.

Шаг 1: Список материалов






Для сборки электронного замка на Ардуино вам понадобятся следующие материалы:

  • паяльник
  • клеевой пистолет
  • дрель
  • сверло
  • сверло для направляющего отверстия
  • канцелярский нож
  • компьютер с программой Arduino IDE

Шаг 2: Как действует замок

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

Рычаг сервопривода, соединенный со шпингалетом, будет закрывать его (на 0°) и открывать (на 60°), с помощью команд, получаемых через модуль Bluetooth.

Шаг 3: Схема монтажа проводов



Давайте сначала подключим сервопривод к плате Arduino (хочу заметить, что, хотя у меня использована плата Arduino Nano, в плате Uno расположение выводов точно такое же).

  • коричневый провод сервопривода – заземляющий, его подключаем к земле на Arduino
  • красный провод – плюс, его подключаем к разъему 5В на Arduino
  • оранжевый провод – вывод истока сервопривода, его подключаем к 9-му выводу на Arduino

Я советую вам проверить работу сервопривода, прежде чем продолжить сборку. Для этого в программе Arduino IDE в примерах выбираете Sweep. Убедившись в том, что серво работает, можем подключать Bluetooth-модуль. Нужно соединить вывод rx модуля Bluetooth с tx выводом Arduino, и tx вывод модуля с rx выводом Arduino. Но пока не делайте этого! Когда эти соединения будут спаяны, вы уже не сможете загрузить никакие коды на Arduino, поэтому сначала загрузите все ваши коды и только после этого паяйте соединения.

Вот схема соединений модуля и микроконтроллера:

  • Rx модуля – Tx платы Arduino
  • Tx модуля – Rx платы
  • Vcc (положительный вывод) модуля – 3,3v платы Arduino
  • Ground соединяем с Ground (заземление с заземлением)

Если объяснение кажется вам непонятным, следуйте представленной схеме соединений проводов.

Шаг 4: Испытание


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

Шаг 5: Корпус для электрокомпонентов




Я решил поместить в корпус только контроллер и модуль Bluetooth, а сервопривод оставить снаружи. Для этого на куске картона обводим контур платы Arduino Nano и добавляем по 1 см пространства по периметру и вырезаем. После этого также вырезаем еще пять сторон корпуса. В передней стенке нужно будет прорезать отверстие под шнур питания контроллера.

  • Дно – 7,5х4 см
  • Крышка – 7,5х4 см
  • Левая боковая стенка – 7,5х4 см
  • Правая боковая стенка – 7,5х4 см
  • Передняя стенка – 4х4 см (с прорезью под шнур питания)
  • Задняя стенка – 4х4 см

Шаг 6: Приложение


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

Шаг 7: Монтируем шпингалет



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

Теперь нужно просверлить в двери направляющие отверстия для винтов. Для этого приложите шпингалет к двери и карандашом отметьте на полотне двери отверстия под винты. Просверлите в отмеченных местах отверстия под винты глубиной примерно 2,5 см. Приложите шпингалет и закрепите его винтами. Снова проверьте работу сервопривода.

Шаг 8: Питание



Чтобы завершить устройство, вам понадобятся источник питания, шнур и штекер мини-usb для соединения с Arduino.
Соедините вывод земли источника питания с выводом земли мини-порта usb, соедините красный провод с красным проводом мини-порта usb, потом протяните провод от замка до дверной петли, а от нее протяните до розетки.

Шаг 9: Код


Шаг 10: Законченный замок на базе Arduino


Рассказываю как сделать какую-либо вещь с пошаговыми фото и видео инструкциями.

Читайте также: