- Компоненти:
- Обяснение на веригата:
- Модел за подаване на подаване в Arduino:
- Работно обяснение:
- Обяснение на програмирането:
Сигурността е основна грижа в ежедневието ни и цифровите брави се превърнаха във важна част от тези системи за сигурност. Има много видове системи за сигурност, които осигуряват нашето място. Някои примери са базирана на PIR система за сигурност, базирана на RFID система за защита, система за цифрово заключване, системи с биоматрица, заключване на електронен код. В тази публикация нека изградим секретна ключалка за откриване на врата, използвайки Arduino, която може да открие модела на вашите почуквания на вратата и ще отвори ключалката само ако моделът на почукване съвпада с правилния модел. За правилната работеща демонстрация, проверете видеото в края.
Компоненти:
- Arduino Uno
- Натисни бутона
- Звънец
- 1M резистор
- Мощност
- Свързващи проводници
- Кутия
- Серво мотор
Обяснение на веригата:
Електрическата схема на този детектор на удари е много проста, която съдържа Arduino за контрол на целия процес на проекта, бутон, зумер и серво мотор. Arduino контролира цялостните процеси като вземане на парола от зумер или сензор, сравняване на модели, задвижване на Servo за отваряне и затваряне на портата и запазване на шаблона в Arduino.
Бутонът е директно свързан към щифт D7 на Arduino по отношение на земята. И зумер е свързан към аналогов пин A0 на Arduino по отношение на земята и с 1M съпротивление между A0 и земята също. А серво мотор е свързан PWM щифт D3 на Ардуино.
Модел за подаване на подаване в Arduino:
В тази схема ние използвахме зумер или сензор Peizo, за да вземем модела на входа на детонация в системата. Тук използваме бутон, за да позволим да вземем вход от сензора и също да го запазим в Arduino. Тази система е проектирана, като взема идея от модела на Морзова азбука, но не е точно подобна на тази.
Тук използвахме картонена кутия за демонстрация. За да вземем вход, чукваме дъската след натискане на бутон. Тук сме почукали, като имаме предвид период от време, който е 500ms. Това 500ms е, защото сме го фиксирали в код и шаблонът за въвеждане зависи от него. Този период от 500ms ще определи дали входът е бил 1 или 0. Проверете кода по-долу, за да разберете това нещо.
Когато го почукаме, Arduino започва да наблюдава времето от първото до второто чукване и да го поставя в масив. Тук в тази система ние правим 6 удара. Това означава, че ще получим 5 периоди от време.
Сега проверяваме периода от време един по един. Първо, проверяваме периода от време между първия удар и втория удар, ако разликата във времето между тези по-малко от 500ms, тогава ще бъде 0, а ако е по-голяма от 500ms, ще бъде 1 и ще бъде запазена в променлива. Сега след него проверяваме периода от време между второто и третото почукване и т.н.
И накрая, ще получим 5 цифрен изход във формат 0 и 1 (двоичен).
Работно обяснение:
Работата с базиран на Knock проект Smart Lock е проста. Първо трябва да запазим шаблон в системата. Така че трябва да натиснем и задържим бутон, докато почукаме 6 пъти. Тук в този проект съм използвал 6 удара, но потребителят може да го промени, както иска. След шест пъти почукване, Arduino намира модела на почукване и го запазва в EEPROM. След като запазите шаблона за въвеждане, натиснете и незабавно пуснете бутона за поемане на вход от сензора към Arduino, за да отворите ключалката. Сега трябва да почукаме 6 пъти. След него Arduino го декодира и сравнява със запазения шаблон. Ако се случи съвпадение, Arduino отваря вратата, като задвижва серво мотора.
Забележка: когато натиснем или натиснем и задържим бутона Arduino, стартирайте 10 секунден таймер, за да вземете всичките 6 удара. Означава, че потребителят трябва да почука в рамките на това време от 10 секунди. И потребителят може да отвори сериен монитор, за да види дневника.
Обяснение на програмирането:
В една програма на първо място включваме заглавния файл и дефинира входния и изходния щифт и дефинираме макроса и декларираните променливи, както можете да видите в Пълния код в кодовия раздел по-долу.
След това, във функцията за настройка , ние даваме посока на дефинирания щифт и инициираме серво мотор.
void setup () {pinMode (sw, INPUT_PULLUP); myServo.attach (servoPin); myServo.write (180); Serial.begin (9600); }
След него вземаме въвеждане и запазваме шаблона за въвеждане или времето за почукване в масив.
цикъл void () {int i = 0; if (digitalRead (sw) == LOW) {Serial.println ("Старт"); забавяне (1000); дълго stt = милис (); while (millis () <(stt + patternInputTime)) {int temp = analogRead (A0); if (temp> чувствителност && флаг == 0 && i <= patternLenth) {…………..
След него декодираме шаблона за въвеждане
за (int i = 0; i
И след това запазете, ако бутонът все още е натиснат
if (digitalRead (sw) == 0) {for (int i = 0; i
И ако бутонът все още не е натиснат, тогава Arduino ще сравнява декодирания модел на въвеждане със запазения шаблон.
else {if (knok == 1) {for (int i = 0; i
Ако някоя парола съвпада, тогава Servo отворете портата, иначе нищо не се е случило, но потребителят може да види резултата през сериен монитор.
Serial.println (acceptFlag); ако (acceptFlag> = patternLenth-1) {Serial.println ("Прието"); myServo.write (openGate); забавяне (5000); myServo.write (closeGate); } else Serial.println ("Отхвърлено"); }
Можете да проверите пълния код по-долу с демо видео.