Кодовый замок на ардуино с дисплеем

Кодовый замок на Arduino за 20 минут

Предыстория

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

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

На двери с внешней стороны двери должна располагаться клавиатура, на которой вводится пароль, с внутренней стороны закреплена остальная конструкция. Для контроля полного закрытия двери используется геркон. Выходя из кабинета человек нажимает на клавиатуре «*» и не дожидаясь пока дверь закроется доводчиком идет по своим делам, когда дверь будет полностью закрыта, геркон замкнется и замок будет закрыт. Открывается дверь с помощью ввода 4х значного пароля и нажатием на «#».

Комплектующие

Arduino UNO = $18
Arduino protoshield + breadboard = $6
L293D = $1
Пучок проводов 30шт для бредборда = $4
2 розетки RJ45 = $4
2 вилки RJ45 = $0.5
актуатор центрального замка = 250 руб.
Геркон = бесплатно оторван от старого окна.
Шпингалет металлический гигантских размеров = бесплатно
Корпус от старого хаба D-LINK из полуторамиллиметрового железа = бесплатно
Блок питания от того же хаба D-LINK на 12 и 5в = тоже бесплатно
Куча винтов и гаечек для крепления всего этого добра к корпусу = 100руб.
Пульт управления от охранной сигнализации = бесплатно.

Итого: $33,5 и 350руб.

Не так уж и мало, скажете вы, и будете, определенно правы, но ведь за удовольствие надо платить! А собрать, что-то своими руками всегда приятно. К тому-же конструкцию можно сильно удешевить, если использовать голый МК без Arduino.

Подготовка к сборке

Хочется несколько слов сказать о покупке ключевого элемента конструкции актуатора. В местном авто-магазине мне предложили актуаторы двух видов: «с двумя проводами и с пятью». Со слов продавщицы они были абсолютно одинаковыми и различие в количестве проводов не значило абсолютно ничего. Однако, как оказалось позже, это не так! Я выбрал девайс с двумя проводами, он питался от 12в. В конструкции с пятью проводами установлены концевые выключатели, что позволяет контролировать движение рычага. Понял, что купил не тот я только когда разобрал его и менять его было поздно. Ход рычага оказался слишком коротким, чтобы нормально задвинуть щеколду, поэтому, необходимо было немного его доработать, а именно удалить две резиновые шайбы укорачивающие ход рычага актуатора. Для этого корпус пришлось распилить вдоль обычной ножовкой, потому, что вторая шайба находилась внутри. Синяя изолента нам, как всегда помогла нам в дальнейшем при сборке его назад.
Для управления мотором актуатора был использован драйвер моторов L293D, который выдерживает пиковую нагрузку до 1200 мА, у нас при остановке двигателя актуатора пиковая нагрузка вырастала всего до 600 мА.
Из пульта управления от охранной сигнализации были выведены контакты с клавиатуры, динамика и двух светодиодов. Пульт и основное устройство предполагалось соединить с помощью витой пары и RJ45 разъемов

Программирование.

Так, как опыта программирования Arduino у меня не было до сих пор. Я воспользовался чужими наработками и статьями с сайта arduino.cc. Кому интересно, может поглядеть этот безобразный код :)

Фото и видео


Ардуино и актуатор


Блок питания


Клавиатурка


Шпингалет (соединен с актуатором металлической спицей и на которую надета термоусадка для красоты)

Источник

Цифровой кодовый замок на Arduino

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

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

  1. Плата Arduino Uno (купить на AliExpress).
  2. Модуль клавиатуры (матричная клавишная панель).
  3. Зуммер (звонок) (купить на AliExpress).
  4. ЖК дисплей 16х2 (купить на AliExpress).
  5. Транзистор BC547 (купить на AliExpress).
  6. Резистор 1 кОм (купить на AliExpress).
  7. Макетная плата.
  8. Источник питания.
  9. Соединительные провода.

В представленном проекте мы будем использовать технологию мультиплексирования для подключения клавиатуры (с помощью которой и будет вводиться пароль) к плате Arduino Uno. Мы будем использовать клавиатуру 4х4 которая содержит 16 кнопок (клавиш). В обычном режиме для подключения 16 кнопок к плате Arduino нам бы понадобилось 16 контактов, но с использованием технологии мультиплексирования нам будет достаточно 8 контактов для подключения 16 кнопок. Более подробно об этом можно прочитать в статье про подключение клавишной панели к Arduino.

Технология мультиплексирования является простым и эффективным способом уменьшения числа используемых контактов микроконтроллера при взаимодействии с большим числом кнопок (клавиш). В основном в этой технологии используется два простых приема: сначала сканируются строки, а потом сканируются столбцы. Но поскольку в Arduino мы используем специальную библиотеку для работы с клавиатурой, используя технологию мультиплексирования, нам нет необходимости писать специальный код для реализации этой технологии, по сравнению, например, с подключением клавишной панели к микроконтроллеру AVR.

Схема устройства

Схема устройства представлена на следующем рисунке и содержит в своем составе Arduino, модуль клавиатуры, буззер (звонок) и ЖК дисплей. Плата Arduino управляет всеми процессами работы схемы: считывание пароля с модуля клавиатуры, сравнение паролей, включение/выключение буззера и передача статуса на ЖК дсиплей. Клавиатура используется для ввода пароля. Буззер используется для индикации, а ЖК дисплей используется для отображения статуса операции и различных сообщений. Буззер управляется с помощью NPN транзистора.

Столбцы модуля клавиатуры непосредственно подключены к контактам 4, 5, 6, 7, а строки – к контактам 3, 2, 1, 0 платы arduino uno. ЖК дисплей подключен к плате Arduino в 4-битном режиме. Управляющие контакты RS, RW и En подключены к контактам Arduino 13, GND и 12. Контакты данных ЖК дисплея D4-D7 подключены к контактам 11, 10, 9 и 8 arduino. Буззер подключен к контакту 14(A1) arduino с помощью NPN транзистора BC547.

Работа схемы

В нашем проекте мы будем использовать встроенную в плату Arduino память EEPROM для хранения пароля. Поэтому когда мы будем подавать питание на нашу схему первым делом программа будет считывать остаточные данные из памяти EEPROM, сравнивать их с введенным паролем и выдавать сообщение на ЖК дисплей что доступ запрещен (Access Denied) потому что пароли не совпадают. Для устранения этой проблемы нам необходимо установить пароль по умолчанию (default password) на первый раз (начальное включение) с помощью следующего кода:

Источник

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

КОНЦЕПТ

Данный проект является модульным, т.е. можно подключать/отключать разные элементы и получить разную функциональность. На картинках выше показан вариант с полной функциональность, а именно:

  • Запирающий механизм. Служит для ОТКРЫТИЯ и ЗАКРЫТИЯ двери. В этом проекте рассмотрено использование трёх разных механизмов:
    • Сервопривод. Бывают большие, бывают маленькие. Очень компактный, и вкупе с тяжёлым засовом – отличный вариант
    • Электропривод замка дверей автомобиля. Большая и мощная штука, но жрёт просто безумные токи
    • Соленоидная щеколда. Хороший вариант, так как сама захлопывается

    В настройках прошивки можно выбрать любой из трёх типов (настройка lock_type)

  • Кнопка внутри. Служит для ОТКРЫТИЯ и ЗАКРЫТИЯ двери изнутри. Может быть размещена на ручке двери (со стороны ладони или со стороны пальцев), на самой двери, либо на косяке
  • Кнопка снаружи. Служит для ЗАКРЫТИЯ двери, а также для ПРОБУЖДЕНИЯ из энергосбережения. Может быть размещена на ручке двери (со стороны ладони или со стороны пальцев), на самой двери, либо на косяке
  • Концевик на закрытие двери. Служит для автоматического закрытия замка при закрывании двери. Им может быть:
    • Тактовая кнопка
    • Датчик холла + магнит на самой двери
    • Геркон + магнит на самой двери
  • Секретная кнопка сброса доступа. Служит для сброса пароля/ввода нового пароля/запоминания нового ключа/комбинации и т.д. Может быть спрятана где-то в корпусе
  • Светодиод для индикации работы. Светодиод RGB, используются красный и зелёный цвета (при смешении дают жёлтый):
    • Горит зелёный — замок ОТКРЫТ. Горит чтобы не забыть закрыть дверь
    • Горит жёлтый — система проснулась и ожидает ввод пароля
    • Мигает красный — сел аккумулятор

Любой из этих элементов можно исключить из системы:

  • Убираем концевик. В прошивке в настройках тоже его отключаем (настройка tail_button). Теперь чтобы закрыть замок, нужно нажимать кнопку
  • Убираем наружную кнопку. В прошивке в настройках тоже её отключаем (настройка wake_button). Теперь систему не нужно будить, она просыпается сама (потребление энергии чуть больше). А также у нас теперь нет кнопки закрыть на передней части двери, и нужен концевик. Либо замок – щеколда
  • Убираем внутреннюю кнопку. Этот вариант годится для шкафов и сейфов. В настройках ничего менять не нужно
  • Убираем светодиод. В настройках ничего менять не нужно
  • Кнопку сброса доступа можно отпаять после первого использования, либо переписать код под себя

Версия с кнопкой

  • Дверь закрыта, нажато СНАРУЖИ — проснуться, ждать ввод пароля/RFID метку/электронный ключ/отпечаток пальца
  • Дверь закрыта, система проснулась, ждёт ввод пароля. Время можно настроить (настройка sleep_time)
  • Дверь закрыта, введён пароль/метка/ключ и т.д. — открыть
  • Дверь закрыта, нажато ВНУТРИ — открыть
  • Дверь открыта, нажато СНАРУЖИ — закрыть
  • Дверь открыта, нажато ВНУТРИ — закрыть
  • Дверь открыта, нажат КОНЦЕВИК — закрыть

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

  • Просыпаться каждые несколько секунд, следить за СОБЫТИЕМ (опциональный вариант, если снаружи нет кнопки. Включить можно в настройке wake_button)
  • Каждые несколько минут следить за напряжением акума (вкл/выкл настройка battery_monitor)
  • Если акум разряжен (напряжение устанавливается в настройке bat_low):
    • открыть дверь (опционально, можно настроить в прошивке open_bat_low)
    • запретить дальнейшее открытие и закрытие
    • при нажатии на кнопки мигать красным светодиодом
    • перестать следить за СОБЫТИЕМ (т.е. ввод пароля/метка и т.д.)

Версия с клавиатурой

Когда система не спит, нажать кнопку смены пароля (скрытая кнопка). Попадаем в режим смены пароля:
Вводим пароль из цифр (МАКСИМУМ 10 ЦИФР. )

  • При нажатии * пароль записывается в память и система выходит из смены пароля
  • При нажатии # пароль сбрасывается (можно вводить заново)
  • Если ничего не нажимать 10 секунд, автоматически выйдем из режима смены пароля, пароль останется старый

Когда система не спит (проснулись по кнопки или сон отключен), нажать * для входа в режим ввода пароля
Если система спит и периодически просыпается проверять СОБЫТИЕ, то нажимаем * и удерживаем, пока не загорится красный светодиод
Режим ввода пароля:

  • Обработка пароля сделана таким образом, что правильный пароль засчитывается только при наборе правильной последовательности цифр, то есть если пароль 345, то вводить можно любые числа до тех пор, пока не появится последовательность 345, т.е. 30984570345 откроет замок, так как оканчивается на 345.
  • Если пароль введён верно, дверь откроется
  • Если ничего не нажимать, через 10 секунд система вернётся в обычный (дежурный) режим
  • Если нажать #, сразу выйдем из режима ввода пароля
  • Если нажать секретную кнопку смены пароля в режиме ввода пароля, то тоже из него выйдем

Источник

Цифровой кодовый замок на Arduino управляемый со смартфона

В настоящее время различные виды охранных систем широко распространены по всему миру и цифровые кодовые замки являются важной частью этих систем. Ранее на нашем сайте мы уже рассматривали простой кодовый замок на Arduino, в этой же статье мы рассмотрим аналогичный замок, но с TFT ЖК дисплеем (TFT LCD) и управляемый со смартфона. Управление этим замком будет осуществляться с помощью технологии Bluetooth и мобильного телефона с операционной системой Android. Дальность действия технологии Bluetooth составляет около 10 метров. Для управления замком пользователь должен будет ввести заранее определенный пароль на своем мобильном телефоне (смартфоне), если пароль вверен, то на TFT ЖК дисплее высветится надпись “CORRECT PASSWORD”, а если пароль неправильный – то высветится надпись “WRONG PASSWORD”.

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

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

  1. Плата Arduino Mega (купить на AliExpress).
  2. TFT LCD Shield диагональю 2.4 дюйма с контроллером SPFD5408 (купить на AliExpress).
  3. Bluetooth модуль HC05 (купить на AliExpress).
  4. Буззер (звонок) (купить на AliExpress).
  5. USB кабель.
  6. Мобильный телефон (смартфон) с операционной системой Android.
  7. Приложение для Bluetooth (Bluetooth terminal App).
  8. Макетная плата.
  9. Соединительные провода.

Работа схемы

Схема устройства представлена на следующем рисунке.

Как видим, она достаточно проста – достаточно только подсоединить Bluetooth модуль HC05 и одеть сверху на плату Arduino шилд (расширение) TFT ЖК дисплея (TFT LCD Shield). Этот шилд достаточно легко монтируется – достаточно только проследить чтобы контакты GND и Vcc шилда и платы Arduino совпадали. Также вы должны установить библиотеку для работы с данным TFT ЖК дисплеем, более подробно все эти процессы описаны в статье про подключение TFT ЖК дисплея к плате Arduino.

Bluetooth модуль HC05 запитывается от контакта Vcc Arduino, его земля подключена к контакту GND Arduino. Контакты TX и RX модуля HC05 соединены с контактами RX1 и TX1 платы Arduino. Один контакт буззера (звонка) подключен к контакту GND Arduino, а другой – к контакту 22 Arduino.

Настройка Bluetooth Terminal App (приложения для Bluetooth)

Для осуществления возможности управления нашим кодовым замком при помощи смартфона нам необходимо установить и настроить приложение для Android под названием Bluetooth Terminal . Приложение Bluetooth Terminal App совместимо с Arduino. Вам необходимо выполнить следующие действия:

  1. Скачать из Google Play Store приложение Bluetooth Terminal App и установить его на свой смартфон.
  2. Подать питание на собранную схему цифрового кодового замка.
  3. Открыть приложение и выбрать там опцию ‘connect securely’ (соединиться в безопасном режиме).
  4. В списке устройств для подключения вы найдете модуль HC05.
  5. Задайте пароль 1234 (потом можете поменять) для соединения с вашим мобильным телефоном на Android.

Описание работы устройства

В нашем устройстве мы использовали три основных компонента: Bluetooth модуль HC05, плату Arduino Mega и TFT LCD Shield диагональю 2.4 дюйма.

Пароль в этой системе вводится на смартфоне под управлением Android и с помощью приложения Bluetooth Terminal App передается на Arduino с помощью технологии Bluetooth. Плата Arduino принимает эти данные с помощью Bluetooth модуля HC05, обрабатывает их и отображает на SPFD5408 TFT LCD. Arduino сравнивает введенный пользователем пароль с заранее определенным паролем (1234) и выдает соответствующее сообщение на экран ЖК дисплея. Если пароли совпадают, то на экран ЖК дисплея выдается сообщение “CORRECT PASSWORD”, а если не совпадают – то сообщение “WRONG PASSWORD”. Также когда введенный пароль неправильный, звучит сигнал буззера, имитирующий сигнал тревоги. Более подробно все эти процессы можно посмотреть в видео, приведенном в конце статьи.

Структурная схема работы устройства представлена на следующем рисунке.

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

Исходный код программы

Для написания программы для нашего проекта кодового замка нам понадобится ряд библиотек. Большую часть этих библиотек можно скачать в виде rar архива по ссылке – https://github.com/JoaoLopesF/SPFD5408. После перехода по этой ссылке в открывшемся окне нажмите ‘Clone or download’, а потом ‘Download ZIP’ файл. Скачанный архив добавьте в Arduino library folder (папку с библиотеками для Arduino на вашем компьютере). Эта (скачанная) библиотека будет нужна для корректного функционирования используемого нами TFT ЖК дисплея.

#include // Core graphics library – библиотека графического ядра
#include // Hardware-specific library
#include

Инициализация ЖК дисплея и последовательного порта для связи с Bluetooth модулем выполняется в функции void setup() . Контакт 22 Arduino подключен к буззеру, а другой контакт буззера подключен к земле Arduino Mega. Bluetooth модуль к последовательному порту 1 (Serial1 port) Arduino Mega и запитывается от 5V Arduino Mega. Функция fillScreen() используется для очистки экрана ЖК дисплея.

void setup() <
// put your setup code here, to run once:
Serial.begin(9600);
Serial1.begin(9600);
tft.reset();
tft.begin(0x9341);
tft.setRotation(0);
tft.fillScreen(WHITE);
tft.setCursor (40, 50);
tft.setTextSize (2);
tft.setTextColor(BLACK);
tft.println(«E N T E R* P A S S W O R D «);
delay(5000);
tft.fillScreen(WHITE);
pinMode(22,OUTPUT);
>

В функции void loop() команда setTextSize(4) устанавливает размер текста, а setTextColor(colorName) – устанавливает цвет текста. arr[] – это массив, в котором мы будем хранить заранее определенный пароль длиной 4 символа, а Input[] – массив, в котором мы будем хранить пароль, полученный с вашего смартфона.

void loop() <
tft.setTextSize (4);
tft.setTextColor(CYAN);
// put your main code here, to run repeatedly:
if (Serial1.available() > 0)
<
flag = 1;
char c = Serial1.read();
if (flag == 1)
<
input[i] = c;
. .
. .

В дальнейшем вы можете изменить значение пароля в массиве arr[] с ‘1234’ на то, которое вам будет нужно. Также можно изменить длину пароля, изменяя размер (длину) массивов arr[] и input[].

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

if (arr[0] == input[0] && arr[1] == input[1] && arr[2] == input[2] && arr[3] == input[3])

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

Источник

Adblock
detector