- Součásti:
- Vysvětlení obvodu:
- Krmení klepání vzor v Arduino:
- Pracovní vysvětlení:
- Vysvětlení programování:
Zabezpečení je v našem každodenním životě velkým problémem a digitální zámky se staly důležitou součástí těchto bezpečnostních systémů. K zabezpečení našeho místa je k dispozici mnoho typů bezpečnostních systémů. Některé příklady jsou bezpečnostní systém založený na PIR, bezpečnostní systém založený na RFID, systém digitálního zámku, systémy biomatice, elektronický kódový zámek. V tomto příspěvku pojďme pomocí technologie Arduino vytvořit tajný zámek dveří detekující klepání, který dokáže detekovat vzor vašich klepání na dveře a zámek se otevře pouze v případě, že se vzor klepání shoduje se správným vzorem. Pro správné fungování ukázky zkontrolujte video na konci.
Součásti:
- Arduino Uno
- Stiskněte tlačítko
- Bzučák
- 1M rezistor
- Napájení
- Připojovací vodiče
- Krabice
- Servomotor
Vysvětlení obvodu:
Schéma zapojení tohoto detektoru klepání je velmi jednoduché, obsahuje Arduino pro ovládání celého procesu projektu, tlačítko, bzučák a servomotor. Arduino ovládá kompletní procesy, jako je převzetí hesla z bzučáku nebo senzoru, porovnání vzorů, řízení serva pro otevření a zavření brány a uložení vzoru do Arduina.
Tlačítko je přímo připojeno k pinu D7 Arduina vzhledem k zemi. A bzučák je připojen na analogový pin A0 Arduina vzhledem k zemi a také s odporem 1M mezi A0 a zemí. Servomotor je také spojen s PWM pin D3 Arduino.
Krmení klepání vzor v Arduino:
V tomto obvodu jsme použili bzučák nebo Peizo senzor, abychom provedli vstupní vzor klepání v systému. Zde používáme tlačítko, které umožňuje přijímat vstup ze snímače a také jej ukládat do Arduina. Tento systém je navržen na základě nápadu ze vzoru Morseovy abecedy, ale není s ním úplně podobný.
Zde jsme pro ukázku použili kartonovou krabici. Abychom získali vstup, po stisknutí tlačítka srazíme desku. Tady jsme zaklepali tím, že máme na paměti časové období, které je 500 ms. Týchto 500 ms je proto, že jsme to opravili v kódu a vstupní vzor na tom závisí. Toto 500ms časové období bude definovat, že vstup byl 1 nebo 0. Pro porozumění této věci zkontrolujte níže uvedený kód.
Když to klepneme, Arduino začne sledovat čas prvního klepání na druhé klepání a dát to do pole. Tady v tomto systému bereme 6 klepání. To znamená, že dostaneme 5 časových období.
Nyní kontrolujeme časové období jeden po druhém. Nejprve zkontrolujeme časové období mezi prvním klepnutím a druhým klepnutím, pokud je časový rozdíl mezi nimi menší než 500 ms, pak bude 0 a pokud je větší než 500 ms, bude 1 a bude uložen do proměnné. Teď po něm zkontrolujeme časové období mezi druhým klepnutím a třetím klepnutím atd.
Nakonec získáme 5místný výstup ve formátu 0 a 1 (binární).
Pracovní vysvětlení:
Práce projektu Smart Lock založeného na klepání je jednoduchá. Nejprve musíme do systému uložit vzor. Musíme tedy stisknout a podržet tlačítko, dokud neklepneme 6krát. Tady v tomto projektu jsem použil 6 klepání, ale uživatel to může změnit, jak chce. Po šesti úderech Arduino najde vzor klepání a uloží jej do EEPROM. Nyní po uložení vstupního vzoru stiskněte a okamžitě uvolněte tlačítko pro vstup vstupu ze senzoru do Arduina pro otevření zámku. Nyní musíme zaklepat 6krát. Poté jej Arduino dekóduje a porovná s uloženým vzorem. Pokud dojde ke shodě, Arduino otevře bránu pohonem servomotoru.
Poznámka: když stiskneme nebo stiskneme a podržíme tlačítko, Arduino spustí 10 sekundový časovač, aby provedlo všech 6 klepání. Znamená, že uživatel musí zaklepat během 10 sekund. Uživatel může otevřít sériový monitor a zobrazit protokol.
Vysvětlení programování:
V programu nejprve zahrneme hlavičkový soubor a definujeme vstupní a výstupní pin a definujeme makro a deklarované proměnné, jak vidíte v části Úplný kód v části kódu níže.
Poté ve funkci nastavení dáme směr definovanému kolíku a spustíme servomotor.
void setup () {pinMode (sw, INPUT_PULLUP); myServo.attach (servoPin); myServo.write (180); Serial.begin (9600); }
Poté vezmeme vstup a uložíme vstupní vzor nebo čas klepání do pole.
void loop () {int i = 0; if (digitalRead (sw) == LOW) {Serial.println ("Start"); zpoždění (1000); long stt = millis (); while (millis () <(stt + patternInputTime)) {int temp = analogRead (A0); if (teplota> citlivost && flag == 0 && i <= patternLenth) {…………..
Poté dekódujeme vstupní vzor
pro (int i = 0; i
A poté uložte, pokud je tlačítko stále stisknuté
if (digitalRead (sw) == 0) {for (int i = 0; i
A pokud tlačítko ještě není stisknuto, Arduino porovná vstupní dekódovaný vzor s uloženým vzorem.
else {if (knok == 1) {for (int i = 0; i
Pokud se nějaké heslo shoduje, pak servo otevře bránu, jinak se nic nestalo, ale uživatel může vidět výsledek přes sériový monitor.
Serial.println (acceptFlag); if (acceptFlag> = patternLenth-1) {Serial.println ("Přijato"); myServo.write (openGate); zpoždění (5 000); myServo.write (closeGate); } else Serial.println ("Odmítnuto"); }
Kompletní kód můžete zkontrolovat níže pomocí ukázkového videa.