- Komponenty:
- Vysvetlenie obvodu:
- Kŕmenie klepania vzorom v Arduine:
- Pracovné vysvetlenie:
- Vysvetlenie programovania:
Bezpečnosť je v každodennom živote hlavným problémom a digitálne zámky sa stali dôležitou súčasťou týchto bezpečnostných systémov. Na zabezpečenie nášho miesta je k dispozícii veľa typov bezpečnostných systémov. Niekoľko príkladov je bezpečnostný systém založený na PIR, bezpečnostný systém založený na RFID, systém digitálneho zámku, systémy biomatice, elektronický kódový zámok. V tomto príspevku vytvoríme tajný zámok detekcie klepania dverí pomocou Arduina, ktorý dokáže zistiť vzor vašich klepnutí na dvere a zámok otvorí, iba ak sa vzor klepania zhoduje so správnym vzorom. Pre správne fungovanie ukážky skontrolujte Video na konci.
Komponenty:
- Arduino Uno
- Tlačidlo
- Bzučiak
- 1M rezistor
- Moc
- Pripojovacie vodiče
- Krabica
- Servo motor
Vysvetlenie obvodu:
Schéma zapojenia tohto detektora klepania je veľmi jednoduchá a obsahuje Arduino na riadenie celého procesu projektu, tlačidlo, bzučiak a servomotor. Arduino riadi všetky procesy, ako je zadávanie hesla z bzučiaka alebo senzora, porovnanie vzorov, riadenie servomotoru na otvorenie a zatvorenie brány a uloženie vzoru do Arduina.
Tlačidlo je priamo spojené s pinom D7 Arduina vzhľadom na zem. A bzučiak je pripojený na analógový pin A0 Arduina vzhľadom na zem a tiež s odporom 1 M medzi A0 a zemou. Servomotor je tiež spojený s PWM pin D3 Arduino.
Kŕmenie klepania vzorom v Arduine:
V tomto obvode sme pomocou bzučiaka alebo senzora Peizo prijali vstupný vzor klepania v systéme. Tu používame tlačidlo, ktoré umožňuje prijať vstup zo snímača a tiež ho uložiť do Arduina. Tento systém je navrhnutý na základe nápadu zo vzoru Morseovej abecedy, ale nie je s ním úplne podobný.
Tu sme na ukážku použili kartónovú škatuľu. Aby sme získali vstup, po stlačení tlačidla preklopíme dosku. Tu sme zaklepali, pretože sme pamätali na časové obdobie, ktoré je 500 ms. Týchto 500ms je to preto, lebo sme to opravili v kóde a vstupný vzor na tom závisí. Toto časové obdobie 500 ms bude definovať, že vstup bol 1 alebo 0. Ak chcete porozumieť tejto veci, skontrolujte nasledujúci kód.
Keď to klepneme, Arduino začne monitorovať čas prvého klepnutia do druhého klepnutia a dá ho do poľa. Tu v tomto systéme prijímame 6 klepaní. To znamená, že dostaneme 5 časových období.
Teraz kontrolujeme časové obdobie jeden po druhom. Najskôr skontrolujeme časové obdobie medzi prvým klepnutím a druhým klepnutím, ak je časový rozdiel medzi nimi menší ako 500ms, potom bude 0 a ak je väčší ako 500ms, bude 1 a bude uložený do premennej. Teraz po ňom skontrolujeme časové obdobie medzi druhým klepnutím a tretím klepnutím atď.
Nakoniec dostaneme 5-ciferný výstup vo formáte 0 a 1 (binárny).
Pracovné vysvetlenie:
Práca s projektom Smart Lock na základe Knock je jednoduchá. Najskôr musíme do systému uložiť vzor. Musíme teda stlačiť a podržať stlačené tlačidlo, kým neklikneme 6-krát. Tu v tomto projekte som použil 6 klepnutí, ale používateľ to môže zmeniť, ako chce. Po šiestich úderoch Arduino nájde vzor klepania a uloží ho do EEPROM. Teraz po uložení vstupného vzoru stlačte a ihneď uvoľnite tlačidlo na vstup vstupu zo senzora do Arduina, aby ste otvorili zámok. Teraz musíme zaklopať 6 krát. Potom ho Arduino dekóduje a porovná s uloženým vzorom. Ak dôjde k zhode, Arduino otvorí bránu riadením servomotora.
Poznámka: keď stlačíme alebo stlačíme a pridržíme tlačidlo Arduino, spustíme 10 sekundový časovač, aby sme vykonali všetkých 6 klepnutí. Znamená, že používateľ musí zaklopať do 10 sekúnd. A užívateľ môže otvoriť Sériový monitor a pozrieť sa na protokol.
Vysvetlenie programovania:
V programe predovšetkým zahrnieme hlavičkový súbor a definujeme vstupný a výstupný pin a definujeme makro a deklarované premenné, ako vidíte v časti Celý kód v sekcii kód nižšie.
Potom v nastavovacej funkcii dáme smer definovanému kolíku a spustíme servomotor.
void setup () {pinMode (sw, INPUT_PULLUP); myServo.attach (servoPin); myServo.write (180); Serial.begin (9600); }
Potom vezmeme vstup a uložíme vstupný vzor alebo čas klepania do poľa.
void loop () {int i = 0; if (digitalRead (sw) == LOW) {Serial.println ("Štart"); oneskorenie (1 000); long stt = millis (); while (millis () <(stt + patternInputTime)) {int temp = analogRead (A0); if (teplota> citlivosť && flag == 0 && i <= patternLenth) {…………..
Po ňom dekódujeme vstupný vzor
pre (int i = 0; i
A potom stlačte, ak je tlačidlo stále stlačené
if (digitalRead (sw) == 0) {for (int i = 0; i
A pokiaľ tlačidlo stále nie je stlačené, Arduino porovná vstupný dekódovaný vzor s uloženým vzorom.
else {if (knok == 1) {for (int i = 0; i
Ak sa nejaké heslo zhoduje, potom servo otvorí bránu, inak sa nič nestalo, ale užívateľ môže vidieť výsledok na sériovom monitore.
Serial.println (acceptFlag); if (acceptFlag> = patternLenth-1) {Serial.println ("Prijaté"); myServo.write (openGate); oneskorenie (5 000); myServo.write (closeGate); } else Serial.println ("Odmietnuté"); }
Kompletný kód si môžete skontrolovať nižšie pomocou ukážkového videa.