Diyargroup.ru

Ремонт Строй
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Кодовой замок на Ардуино: подключение

кодовой замок на Ардуино

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

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

  1. Пучок провод для бреборда, 30 штук будет более чем достаточно.
  2. Далее нужно купить две вилки и розетки RJ45.
  3. L293D.
  4. Актуатор центрального замка. Можно использовать с ВАЗа – это оптимально по цене и функциональности.
  5. Геркон – его можно взять со старого окна, здесь сложностей нет.
  6. Нам еще понадобиться блок питания от хаба D-LINK на 12 Вольт.
  7. Пульт управления от охранной сигнализации, его можно найти в любом магазине с электроникой.
  8. Arduino protoshield + breadboard.
  9. Arduino UNO.
  10. Также не обойтись без шпингалета. Он должен иметь внушительный размер, чтобы не сделать ошибку во время его выбора смотрите фото дальше.

Как правило, чтобы приобрести все эти детали, придется выложить 40-50 долларов. Вроде сумма небольшая, но решать вам, напрягаться с этим или установить уже рабочую модель. Чтобы установить и соединить между собой, придется потратить несколько часов при условии, если вы все будете делать правильно.

Дребезг кнопки

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

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

Принципиальная схема исключения дребезга кнопки График нажатия кнопки через конденсатор

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

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

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

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

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

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

Читайте так же:
Выключатель тумблер для щита

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

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

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

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

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

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

Здесь нужно остановиться подробнее: Библиотека Keypad, описывает класс работы с клавиатурой. Т.е. создает тип данных «клавиатура», у этого типа данных свои параметры, которые мы указываем в скобках. Типа то, что клавиатура 4*4, к каким пинам подключены строки, к каким столбцы, и таблицу соответствия кнопок нашим символам. Т.е. Keypad это тип данных, наподобие int или char. Затем мы пишем имя своей переменной (создаваемого объекта) keypad с параметрами этой переменной в скобках. Как будто присваиваем значение этой переменной. И дальше работаем как с переменной, у которой можно менять параметры.

Читайте так же:
Какие есть выключатели массы для автомобиля

Первая модель

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

Обратите внимание! Во внедрении данного устройства в приборы большое значение имеет комфортная среда разработки. Лучшим решением будет применение C++. Эта программа позволит значительно упростить создание проектов по прошивке.

Вариант датчика

Эта программа позволит значительно упростить создание проектов по прошивке.
В результате получается полупроводниковый электронный сенсор с достаточно высокой точностью работы.
Помимо этих датчиков также используются разнообразные механические (реагирующие на прикосновение) и химические устройства (реагирующие на конкретные химические показатели). Но последние используются только в редких случаях. Например, они могут реагировать на некоторые газы или пары спиртов. Но их стоимость значительно выше, чем обычного процессорного модуля (в диапазоне от 10 до 50%).
Датчики Arduino классифицируются по тому параметру, на реакцию которого они настроены реагировать (температурный, звуковой или ультразвуковой показатель и т.д.).
Благодаря эффективному принципу работы, а также многофункциональности в плане измеряемых параметров, датчики Arduino на сегодняшний день широко применяются в самых разнообразных сферах деятельности человека.

Подключение зуммера к Arduino

В этой статье расскажу как подключить зуммер (пьезозуммер) к Arduino UNO. Зуммер обычно используется для подачи сигнала в виде тонального или звукового сигнала. Этот тип зуммера широко используется в системах сигнализации, бытовых приборов или во встроенных системах, чтобы обеспечить какую-либо индикацию или оповещение.

Технические параметры

► Напряжение питания: 3.3 В

5.5 В
► Потребляемый ток: 10 мА
► Тип зуммера: активный;
► Издаваемый звук: такой как у динамика инициализации в системном блоке компьютера;
► Диаметр монтажного отверстия: 2.5 мм
► Выходной ток: 15 мА
► Габариты: 36мм х 14мм х 12мм

Общие сведения

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

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

Назначение контактов:
VCC – напряжение питания;
I/O – управляющий сигнал;
GND – общий контакт.

Читайте так же:
Как правильно проложить проводку под выключатель

Подключение модуля зуммера к Arduino

Необходимые детали:
► Arduino UNO R3 x 1 шт.
► Активный модуль зуммер, buzzer x 1 шт.
► Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.

Подключение:
В данном примере буду использовать модуль зуммер и Arduino UNO R3. Схема не сложная, необходимо всего три провода, сначала подключаем шину I/0 в порт 8 (Arduino UNO), осталось подключить питание GND к GND и VCC к 5V (можно записать и от 3.3В), схема собрана, теперь надо подготовить программную часть.

Программа:
Пример простой, скетч просто включает и выключает зуммер на 0,2 секунды.

Платы дополнения (шилды)

шилды

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

  • LCD Shield определяет метеорологические показатели в помещениях: влажность, скорость ветра, температуру.
  • Motor Shield обеспечивает управление скоростью и оборотами моторов. Есть модели с поддержкой нескольких приводов.
  • Data Logging Shield предназначена для записи и хранения информации до 32 Gb.
  • Relay Shield самая востребованная в системах Smart Homе, рассчитана на обслуживание приборов мощностью 1 КВт.
  • Ethernet Shield от Ардуино обеспечивает независимость Умного дома от ПК, настраивает интернет-связь.
  • Wi-fi Shield нужен для передачи шифрованных данных между Arduino и устройствами.
  • Energy Shield позволяет разнообразить источники питания для подключения проекта.
  • GPRS Shield используется для связи Умного дома с телефоном владельца.

Все бы ничего, если бы мы жили в идеальном мире с идеальными кнопками. Реальные механические контакты, которые присутствуют в кнопках никогда не замыкаются и не размыкаются мгновенно. В течении непродолжительного промежутка времени происходит многократное замыкание и размыкание контактов ключа (кнопки) в результате чего на вход микроконтроллера поступает не единичный перепад напряжения, а целая пачка импульсов. Это явление носит название «дребезг контактов».

В примере выше, когда при помощи кнопки мы просто включали и выключали светодиод мы не заметили это, так как включение/выключение светодиода в момент «дребезга» происходило очень быстро и мы просто не увидели это глазом.

Типичная осциллограмма в момент отпуская кнопки выглядит следующим образом:

Осцилограмма с дребезгом контактов

Осцилограмма с дребезгом контактов

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

В результате дребезга контактов на входе вместо изменения состояния из нуля в единицу (кнопка отпущена) мы получим целую последовательность 010101010101. Это создает для нас ложные сигналы.

С эффектом дребезга контактов можно бороться либо аппаратными, либо программными методами. Рассмотрим их подробно.

Аппаратный способ борьбы с дребезгом контактов

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

Читайте так же:
Блок розеток с выключателем ip54

Схема антидребезга на основе RS-триггера

Схема антидребезга на основе RS-триггера

RS-триггер состоит из двух логических элементов И-НЕ и имеет вход установки S (от англ. set — устанавливать) и вход сброса R (от Reset). На оба входа через токоограничивающие резисторы подано напряжение питания. На входе RS-триггера, который не подключен в данный момент к подвижному контакту, присутствует сигнал логической единицы.

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

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

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

Работа схемы не зависит от числа и продолжительности импульсов, вызванных дребезгом контактов.

Еще одним способом борьбы с дребезгом контактов является использование RC-фильтров для сглаживания колебаний. Сглаженный сигнал затем подается на вход триггера Шмидта или другого логического элемента с высокоимпедансным входом. Ниже приведена схема с использованием КМОП-инвертера. На выходе триггера Шмидта мы будем иметь сигнал, избавленный от дребезга контактов. Ниже приведена схема для антидребезговой RC-цепочки.

RC-цепочка для подавления дребезга контактов

RC-цепочка для подавления дребезга контактов

Когда ключ переключается из разомкнутого состояния в замкнутое (нажатие кнопки), конденсатор C разряжается на землю через резистор R2. Выражение для напряжения на конденсаторе VC как функция времени t в момент разряда дается выражением (1)

В это время происходит переход из состояния логической единицы в состояние логического нуля. Мы можем сделать так, чтобы время этого перехода превысило время дребезга. Самым простым способом сделать это является установка VC = логическому нулю для триггера Шмидта, взяв стандартный или имеющийся в наличии конденсатор емкостью C и измерить время дребезга системы, используя осциллограф или логический анализатор. Тогда R2 можно выразить следующим образом:

здесь V — напряжение, соответствующее уровню логического нуля.

Когда ключ переключается из замкнутого состояния в разомкнутое (отпускание кнопки), конденсатор C заряжается до напряжения VDC через соединение R1 + R2. Выражение для VC(t) в процессе зарядки:

Это период времени, в течение которого происходит изменение уровня с логичекого нуля в логическую единицу. Мы можем сделать так, чтобы этот переход занял времени больше, чем происходит дребезг контактов. Используя то же самое время t что и ранее, а также значение R2, найденное из уравнения (2), мы можем записать выражение для R1:

Пример расчета: пусть время дребезга для кнопки, подключаемой к микроконтроллеру составляет 10 мкс. Напряжение питания VDC = + 5 В и в наличии имеется конденсатор емкостью 10 нФ. Тогда параметры элемнтов антидребезговой цепочки составят:

  1. t = 10 мкс, С = 10 нФ, V = 1.3 В, VDC = 5 В. Подставив эти значения в уравнение (2), получим R2 = 742 Ома.
  2. t = 10 мкс, С = 10 нФ, V 1 = 3.7 В, VDC = 5 В. Подставив эти значения в уравнение (4), получим R1 = 2579 Ом.
  3. Используем неинвертирующий КМОП-буфер между кнопкой и входом микроконтроллера.
Читайте так же:
Выключатели клавишные sc 767

Программный способ борьбы с дребезгом контактов

Самый простой способ борьбы с дребезгом контактов программным способом — это использование задержек.

Дребезг контактов приводит к тому, что на входном пине вместо изменения состояния с единицы в ноль при нажатии кнопки, мы получим целую серию импульсов (как на осцилограмме выше). Чтобы избавиться от их паразитного влияния нужно обнаружить нажатие кнопки, приостановить выполнение программы и реализовать некоторую задержку. Время задержки необходимо выбрать таким образом, чтобы оно превышало дребезг контактов. Такую же процедуру задержки нужно реализовать и после обнаружения отпускания кнопки.

Библиотека Bounce2 для Arduino

Для борьбы с дребезгом контактов для Arduino существует специальная библиотека, которая называется Bounce2.

Скачать ее можно с репозитория GitHub или по ссылке ниже.

Библиотека Bounce2

Category:Programs
Date:04.07.2015

Если вы не знаете как устанавливать библиотеки в среде Arduino IDE, то можете предварительно ознакомиться с установкой библиотек в Arduino IDE.

Эта библиотека включает следующие методы:

  • Bounce () — инициализация объекта Bounce
  • void interval (unsigned long interval) — устанавливает время антидребезга в миллисекундах
  • void attach (int pin) — устанавливает пин, к которому подключена кнопка и подключает на этом выводе встроенный подтягивающий резистор
  • int update () — поскольку Bounce не использует прерывания Arduino, вы «обновляете» объект до того, как считываете его состояние и это нужно делать постоянно (например, внутри loop). Метод update обновляет объект и возвращает TRUE (1), если состояние пина изменилось (кнопка была нажата или же, наоборот, отпущена) и FALSE (0) в противном случае. Вызов метода update внутри loop необходимо производить только один раз.
  • int read () — возвращает обновленное состояние пина

По умолчанию, библиотека Bounce использует интервал стабилизации (stable interval) для реализации антидребезга. Это проще для понимания и позволяет не знать длительность дребезга.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector