- Komponente:
- Objašnjenje sklopa:
- Uzorak kucanja u Arduinu:
- Radno objašnjenje:
- Objašnjenje programiranja:
Sigurnost je glavna briga u našem svakodnevnom životu, a digitalne brave postale su važan dio ovih sigurnosnih sustava. Dostupne su mnoge vrste sigurnosnih sustava koji osiguravaju naše mjesto. Neki primjeri su sigurnosni sustav zasnovan na PIR-u, sigurnosni sustav zasnovan na RFID-u, sustav digitalne brave, sustavi s bio-matricom, elektronička šifra. U ovom postu napravimo tajnu bravu za otkrivanje kucanja pomoću Arduina koja može otkriti uzorak vaših kucanja na vratima i otvorit će bravu samo ako se obrazac kucanja podudara s ispravnim uzorkom. Za pravilan rad Demo, pogledajte Video na kraju.
Komponente:
- Arduino Uno
- Pritisnite tipku
- Zujalica
- 1M otpornik
- Vlast
- Spajanje žica
- Kutija
- Servo motor
Objašnjenje sklopa:
Dijagram spojeva ovog detektora uzorka kucanja vrlo je jednostavan i sadrži Arduino za kontrolu cijelog procesa projekta, tipku, zujalicu i servo motor. Arduino kontrolira cjelovite procese poput uzimanja lozinke iz zvučnika ili senzora, uspoređivanje uzoraka, vožnja Servom za otvaranje i zatvaranje vrata i spremanje uzorka u Arduino.

Gumb je izravno povezan s iglom D7 Arduina s obzirom na masu. A zujalica je povezana na analogni pin A0 Arduina s obzirom na masu i s otporom 1M između A0 i zemlje. Servo motor je također povezan s PWM pin D3 Težak.


Uzorak kucanja u Arduinu:
U ovom smo krugu koristili zujalicu ili senzor Peizo za uzimanje uzorka unosa kucanja u sustavu. Ovdje koristimo tipku kako bismo mogli uzeti ulaz sa senzora i također ga spremiti u Arduino. Ovaj je sustav dizajniran uzimajući ideje iz Morseovog uzorka, ali nije baš sličan tome.
Ovdje smo za demonstraciju koristili kartonsku kutiju. Da bismo uzeli ulaz, srušimo ploču nakon pritiska na tipku. Ovdje smo pokucali imajući na umu vremensko razdoblje koje je 500 ms. To je 500ms jer smo ga popravili u kodu, a obrazac unosa ovisi o njemu. Vremensko razdoblje od 500 ms definirat će da je ulaz bio 1 ili 0. Provjerite donji kod da biste razumjeli ovu stvar.

Kad ga pokucamo, Arduino počinje nadzirati vrijeme prvog kucanja do drugog kucanja i stavlja to u niz. Ovdje u ovom sustavu uzimamo 6 udaraca. Znači da ćemo dobiti 5 vremenskih razdoblja.
Sada provjeravamo vremenski period jedan po jedan. Prvo provjeravamo vremensko razdoblje između prvog kucanja i drugog kucanja ako je vremenska razlika između ovih manje od 500 ms tada 0, a ako je veća od 500 ms bit će 1 i bit će spremljeno u varijablu. Sada nakon njega provjeravamo vremensko razdoblje između drugog i trećeg kucanja i tako dalje.
Konačno, dobit ćemo 5-znamenkasti izlaz u 0 i 1 formatu (binarni).
Radno objašnjenje:
Rad projekta Smart Lock koji se temelji na Knocku je jednostavan. Prvo moramo spremiti obrazac u sustav. Dakle, moramo pritisnuti i držati tipku dok ne pokucamo 6 puta. Ovdje sam u ovom projektu upotrijebio 6 udaraca, ali korisnik to može promijeniti kako želi. Nakon šest pokušaja kucanja, Arduino pronalazi obrazac kucanja i sprema ga u EEPROM. Nakon spremanja uzorka unosa, pritisnite i odmah otpustite tipku za prenošenje ulaza sa senzora na Arduino kako biste otvorili bravu. Sad moramo pokucati 6 puta. Nakon njega Arduino ga dekodira i uspoređuje sa spremljenim uzorkom. Ako se dogodi podudaranje, Arduino otvori vrataštem upravljajući servo motorom.

Napomena: kada pritisnemo ili pritisnemo i držimo tipku Arduino, pokrenite mjerač vremena od 10 sekundi kako biste uzeli svih 6 kucanja. Znači da korisnik treba pokucati u roku od 10 sekundi. A korisnik može otvoriti Serial monitor da vidi zapisnik.
Objašnjenje programiranja:
U program prije svega uključujemo zaglavnu datoteku i definira ulazni i izlazni pin i definiramo makronaredbu i deklarirane varijable kao što možete vidjeti u Punom kodu u odjeljku koda ispod.
Nakon toga, u funkciji podešavanja , dajemo smjer definiranom pinu i pokrećemo servo motor.
void setup () {pinMode (sw, INPUT_PULLUP); myServo.attach (servoPin); myServo.write (180); Serial.begin (9600); }
Nakon njega uzimamo unos i spremamo uzorak unosa ili vrijeme kucanja u niz.
void loop () {int i = 0; if (digitalRead (sw) == LOW) {Serial.println ("Start"); kašnjenje (1000); dugo stt = milis (); while (millis () <(stt + patternInputTime)) {int temp = analogRead (A0); if (temp> osjetljivost && flag == 0 && i <= patternLenth) {…………..
Nakon njega dekodiramo obrazac unosa
za (int i = 0; i
A zatim spremite ako je i dalje pritisnuta tipka
if (digitalRead (sw) == 0) {for (int i = 0; i
A ako tipka i dalje nije pritisnuta, Arduino će usporediti uneseni dekodirani uzorak sa spremljenim uzorkom.
else {if (knok == 1) {for (int i = 0; i
Ako se podudara bilo koja lozinka, tada Servo otvorite vrata, inače se ništa nije dogodilo, ali korisnik može vidjeti rezultat preko serijskog monitora.
Serial.println (acceptFlag); if (acceptFlag> = patternLenth-1) {Serial.println ("Prihvaćeno"); myServo.write (openGate); kašnjenje (5000); myServo.write (closeGate); } else Serial.println ("Odbijeno"); }
Kompletni kod u nastavku možete provjeriti pomoću demo videa.
