- Componente:
- Explicația circuitului:
- Hrănirea modelului de lovire în Arduino:
- Explicație de lucru:
- Explicație de programare:
Securitatea este o preocupare majoră în viața noastră de zi cu zi, iar încuietorile digitale au devenit o parte importantă a acestor sisteme de securitate. Există multe tipuri de sisteme de securitate disponibile pentru a ne asigura locul. Câteva exemple sunt sistemul de securitate bazat pe PIR, sistemul de securitate bazat pe RFID, sistemul de blocare digitală, sistemele bio-matrice, blocarea codului electronic. În această postare, permiteți-ne să construim un blocaj secret de detectare a ușii folosind Arduino, care poate detecta modelul loviturilor dvs. la ușă și va deschide încuietoarea numai dacă modelul de lovire se potrivește cu modelul corect. Pentru o demonstrație funcțională, verificați videoclipul de la sfârșit.
Componente:
- Arduino Uno
- Apasa butonul
- Buzzer
- Rezistor 1M
- Putere
- Conectarea firelor
- Cutie
- Servo motor
Explicația circuitului:
Diagrama circuitului acestui Detector de modele de lovitură este foarte simplă, care conține Arduino pentru controlul întregului proces al proiectului, buton, buzzer și servomotor. Arduino controlează procesele complete, cum ar fi preluarea parolei din buzzer sau senzor, compararea modelelor, conducerea Servo-ului pentru deschiderea și închiderea porții și salvarea modelului în Arduino.
Butonul este conectat direct la pinul D7 al Arduino în raport cu solul. Și un buzzer este conectat la pinul analogic A0 al Arduino cu privire la masă și cu o rezistență de 1M între A0 și masă. Un servomotor este, de asemenea, conectat la pinul PWM D3 al Arduino.
Hrănirea modelului de lovire în Arduino:
În acest circuit, am folosit Buzzer sau Peizo Sensor pentru a realiza un model de intrare în sistem. Aici folosim un buton pentru a permite intrarea de la senzor și, de asemenea, să o salvăm în Arduino. Acest sistem este conceput luând ideea din modelul codului Morse, dar nu exact similar cu acesta.
Aici am folosit o cutie de carton pentru demonstrație. Pentru a primi intrarea, dăm peste bord după apăsarea butonului. Aici am bătut păstrând în minte o perioadă de timp de 500ms. Acest 500ms se datorează faptului că l-am fixat în cod și modelul de intrare depinde de el. Această perioadă de timp de 500 ms va defini intrarea a fost 1 sau 0. Verificați codul de mai jos pentru a înțelege acest lucru.
Când îl batem, Arduino începe să monitorizeze timpul primei lovituri până la a doua lovitură și o pune într-o matrice. Aici, în acest sistem, luăm 6 lovituri. Înseamnă că vom primi 5 perioade de timp.
Acum verificăm perioada de timp unul câte unul. În primul rând, verificăm perioada de timp dintre prima lovitură și a doua lovitură dacă diferența de timp dintre acestea este mai mică de 500 ms, atunci va fi 0 și dacă mai mare de 500 ms va fi 1 și va fi salvată într-o variabilă. Acum, după aceasta, verificăm perioada de timp dintre a doua lovitură și a treia lovitură și așa mai departe.
În cele din urmă, vom obține ieșiri de 5 cifre în format 0 și 1 (binar).
Explicație de lucru:
Lucrul proiectului Smart Lock bazat pe Knock este simplu. Mai întâi trebuie să salvăm un model în sistem. Deci, trebuie să ținem apăsat butonul până când batem de 6 ori. Aici, în acest proiect, am folosit 6 lovituri, dar utilizatorul îl poate schimba după cum dorește. După o lovitură de șase ori, Arduino găsește modelul de lovire și salvează-l în EEPROM. Acum, după salvarea modelului de intrare, apăsați și eliberați imediat butonul pentru a prelua intrarea de la senzor la Arduino pentru a deschide blocarea. Acum trebuie să batem de 6 ori. După aceasta, Arduino îl decodează și se compară cu modelul salvat. Dacă are loc o potrivire, Arduino deschide poarta acționând servomotorul.
Notă: când apăsăm sau ținem apăsat butonul Arduino, porniți un temporizator de 10 secunde pentru a lua toate cele 6 lovituri. Înseamnă că utilizatorul trebuie să bată în acest timp de 10 secunde. Iar utilizatorul poate deschide monitorul serial pentru a vedea jurnalul.
Explicație de programare:
În primul rând, includem fișierul antet și definim pinul de intrare și de ieșire și definim variabilele macro și declarate așa cum puteți vedea în secțiunea Cod complet din cod de mai jos.
După aceasta, în funcția de configurare , dăm direcția pinului definit și inițiam servomotorul.
void setup () {pinMode (sw, INPUT_PULLUP); myServo.attach (servoPin); myServo.write (180); Serial.begin (9600); }
După aceasta, preluăm intrarea și salvăm modelul de intrare sau timpul de batere într-o matrice.
bucla void () {int i = 0; if (digitalRead (sw) == LOW) {Serial.println ("Start"); întârziere (1000); stt lung = milis (); while (millis () <(stt + patternInputTime)) {int temp = analogRead (A0); if (temp> sensibilitate && flag == 0 && i <= patternLenth) {…………..
După aceasta, decodăm modelul de intrare
pentru (int i = 0; i
Și apoi salvați dacă butonul este încă apăsat
if (digitalRead (sw) == 0) {for (int i = 0; i
Și dacă butonul nu este încă apăsat, atunci Arduino va compara modelul de intrare decodificat cu modelul salvat.
else {if (knok == 1) {for (int i = 0; i
Dacă s-a potrivit o parolă, atunci Servo deschide poarta, altfel nu s-a întâmplat nimic, dar utilizatorul poate vedea rezultatul pe monitorul serial.
Serial.println (acceptFlag); if (acceptFlag> = patternLenth-1) {Serial.println ("Acceptat"); myServo.write (openGate); întârziere (5000); myServo.write (closeGate); } else Serial.println ("Respins"); }
Puteți verifica codul complet de mai jos cu un videoclip demonstrativ.