Безбедност је главна брига у нашем свакодневном животу, а дигиталне браве постале су важан део ових безбедносних система. Постоје многе врсте сигурносних система који осигуравају наше место. Неки примери су заштитни систем заснован на ПИР-у, сигурносни систем заснован на РФИД-у, систем дигиталне браве, системи са био-матрицом, електронска кодна брава. У овом посту, направимо тајну браву за откривање куцања помоћу Ардуино-а која може открити образац ваших удараца на вратима и отворит ће браву само ако се образац куцања подудара са исправним узорком. За правилан рад Демо, погледајте Видео на крају.
Компоненте:
- Ардуино Уно
- Тастер
- Зујалица
- 1М отпорник
- Снага
- Повезивање жица
- Кутија
- Серво мотор
Објашњење кола:
Дијаграм кола овог детектора узорка куцања врло је једноставан и садржи Ардуино за контролу целокупног процеса пројекта, дугме, зујалицу и серво мотор. Ардуино контролише комплетне процесе попут узимања лозинке из зујалице или сензора, упоређивање образаца, вођење Серво-а за отварање и затварање капије и чување узорка у Ардуину.
Тастер је директно повезан на пин Д7 Ардуина у односу на масу. А зујалица је повезана на аналогни пин А0 Ардуина у односу на масу и такође са отпором 1М између А0 и земље. Серво мотор је такође повезан са ПВМ пин Д3 Ардуино.
Ударање ударца у Ардуину:
У овом колу смо користили зујалицу или сензор Пеизо да бисмо узели образац улаза куцања у систему. Овде користимо дугме да бисмо омогућили да узмемо улаз са сензора и такође га сачувамо у Ардуино. Овај систем је дизајниран тако што узима идеју из Морсеове абецеде, али није баш сличан томе.
Овде смо за демонстрацију користили картонску кутију. Да бисмо узели улаз, срушимо плочу након притиска на тастер. Овде смо покуцали имајући на уму временски период од 500мс. Ово 500мс је зато што смо га поправили у коду, а образац уноса зависи од њега. Временски период од 500 мс дефинисаће да је улаз био 1 или 0. Проверите доњи код да бисте разумели ову ствар.
Када га покуцамо, Ардуино почиње да надгледа време првог куцања до другог куцања и ставља то у низ. Овде у овом систему примамо 6 удараца. Значи да ћемо добити 5 временских периода.
Сада проверавамо временски период један по један. Прво, проверавамо временски период између првог и другог куцања ако је временска разлика између ових мање од 500мс тада 0, а ако је већа од 500мс 1, и сачуваће се у променљивој. Сада након њега проверавамо временски период између другог и трећег ударца и тако даље.
На крају ћемо добити 5-цифрени излаз у 0 и 1 формату (бинарни).
Објашњење:
Рад Смарт Лоцк пројекта заснованог на Кноцк-у је једноставан. Прво морамо да сачувамо образац у систему. Зато морамо притиснути и држати тастер док не покуцамо 6 пута. Овде у овом пројекту сам употребио 6 удараца, али корисник то може променити како жели. После шест пута куцања, Ардуино проналази образац куцања и чува га у ЕЕПРОМ-у. Сада након што сачувате образац уноса, притисните и одмах отпустите тастер за преношење улаза са сензора у Ардуино да бисте отворили браву. Сада морамо да покуцамо 6 пута. После њега, Ардуино га декодира и упоређује са сачуваним узорком. Ако се догоди подударање, Ардуино отвори капију управљајући серво мотором.
Напомена: када притиснемо или притиснемо и држимо тастер Ардуино, покрените тајмер од 10 секунди да бисте узели свих 6 куцања. Значи да корисник треба да покуца у року од 10 секунди. А корисник може отворити Сериал монитор да види дневник.
Објашњење програмирања:
У програм пре свега укључујемо заглавље и дефинишемо улазни и излазни пин и дефинишемо макро и декларисане променљиве као што можете видети у Пуном коду у одељку кода испод.
Након тога, у функцији подешавања , дајемо смер дефинисаном пину и покрећемо серво мотор.
воид сетуп () {пинМоде (св, ИНПУТ_ПУЛЛУП); миСерво.аттацх (сервоПин); миСерво.врите (180); Сериал.бегин (9600); }
Након ње, узимамо улаз и унос узорака или времена куцања чувамо у низу.
воид лооп () {инт и = 0; иф (дигиталРеад (св) == ЛОВ) {Сериал.принтлн ("Старт"); кашњење (1000); лонг стт = милис (); вхиле (миллис () <(стт + паттернИнпутТиме)) {инт темп = аналогРеад (А0); ако (темп> осетљивост && флаг == 0 && и <= паттернЛентх) {…………..
После њега декодирамо образац уноса
за (инт и = 0; и
А затим сачувајте ако је тастер и даље притиснут
иф (дигиталРеад (св) == 0) {фор (инт и = 0; и
А ако дугме и даље није притиснуто, Ардуино ће упоредити улазно декодирани образац са сачуваним узорком.
елсе {иф (кнок == 1) {фор (инт и = 0; и
Ако се подудара било која лозинка, тада Серво отворите капију, у супротном се ништа није догодило, али корисник може видети резултат преко серијског монитора.
Сериал.принтлн (аццептФлаг); иф (аццептФлаг> = паттернЛентх-1) {Сериал.принтлн ("Прихваћено"); миСерво.врите (опенГате); кашњење (5000); миСерво.врите (цлосеГате); } елсе Сериал.принтлн ("Одбијено"); }
Комплетни код у наставку можете проверити помоћу демо видеа.