- Komponenter:
- Kretsforklaring:
- Feeding Knocking Pattern i Arduino:
- Arbeidsforklaring:
- Programmeringsforklaring:
Sikkerhet er en stor bekymring i vårt daglige liv, og digitale låser har blitt en viktig del av disse sikkerhetssystemene. Det er mange typer sikkerhetssystemer tilgjengelig for å sikre vår plass. Noen eksempler er PIR-basert sikkerhetssystem, RFID-basert sikkerhetssystem, Digital Lock System, bio-matrisesystemer, Elektronikk kodelås. I dette innlegget, la oss bygge en hemmelig knokkegjenkjenningsdørlås ved hjelp av Arduino som kan oppdage mønsteret på bankene dine ved døren, og åpner bare låsen hvis bankemønsteret stemmer overens med riktig mønster. For riktig fungerende demo, sjekk videoen på slutten.
Komponenter:
- Arduino Uno
- Trykknapp
- Summer
- 1M motstand
- Makt
- Koble ledninger
- Eske
- Servo motor
Kretsforklaring:
Kretsdiagrammet til denne Knocking Pattern Detector er veldig enkelt som inneholder Arduino for å kontrollere hele prosessen med prosjektet, trykknapp, summer og servomotor. Arduino kontrollerer de komplette prosessene som å ta passord fra Buzzer eller Sensor, sammenligne mønstre, kjøre Servo for å åpne og lukke porten og lagre mønsteret til Arduino.
Trykknappen er direkte koblet til pin D7 på Arduino med hensyn til bakken. Og en summer er koblet til analog pin A0 av Arduino med hensyn til bakken og med en 1M motstand mellom A0 og bakken også. En servomotor er også koblet til PWM-pin D3 i Arduino.
Feeding Knocking Pattern i Arduino:
I denne kretsen har vi brukt Buzzer eller Peizo Sensor for å ta knock input mønster i systemet. Her bruker vi en trykknapp for å tillate å ta input fra sensoren og også lagre det i Arduino. Dette systemet er designet ved å ta ide fra Morse-kodemønster, men ikke akkurat lik det.
Her har vi brukt en kartongkasse til demonstrasjon. For å ta innspill banker vi på tavlen etter å ha trykket på knappen. Her har vi banket ved å ha en tidsperiode i tankene som er 500ms. Denne 500ms er fordi vi har fikset den i kode og inndatamønster er avhengig av det. Denne 500ms tidsperioden vil definere inngangen var 1 eller 0. Sjekk koden nedenfor for å forstå denne tingen.
Når vi banker på det, begynner Arduino å overvåke tidspunktet for den første bankingen til den andre bankingen og plassere den i en rekke. Her i dette systemet tar vi 6 slag. Det betyr at vi får 5 tidsperioder.
Nå sjekker vi tidsperioden en etter en. Først sjekker vi tidsperioden mellom første banke og andre banke hvis tidsforskjellen mellom disse mindre enn 500 ms, vil den være 0 og hvis den er større enn 500 ms vil den være 1 og den vil bli lagret i en variabel. Nå etter det sjekker vi tidsperioden mellom andre banke og tredje banke og så videre.
Til slutt vil vi få 5-sifret utdata i 0 og 1 format (binær).
Arbeidsforklaring:
Å arbeide med Knock-basert Smart Lock Project er enkelt. Først må vi lagre et mønster i systemet. Så vi må trykke og holde inne trykknappen til vi banker 6 ganger. Her i dette prosjektet har jeg brukt 6 slag, men brukeren kan endre det slik de vil. Etter seks ganger banker, finner Arduino bankemønsteret og lagrer det i EEPROM. Nå etter at du har lagret inndatamønsteret, trykker du og slipper umiddelbart trykknappen for å ta inndata fra sensoren til Arduino for å åpne låsen. Nå må vi banke 6 ganger. Etter det dekoder Arduino det og sammenligner med lagret mønster. Hvis det oppstår en kamp, åpner Arduino porten ved å kjøre servomotor.
Merk: når vi trykker på eller holder nede trykknappen Arduino, starter du en 10 sekunders tidtaker for å ta alle 6 bankene. Betyr at brukeren må banke på innen 10 sekunder. Og brukeren kan åpne Serial monitor for å se loggen.
Programmeringsforklaring:
I et program inkluderer vi først headerfilen og definerer inngangs- og utgangspinnen og definerer makroen og deklarerte variablene som du kan se i seksjonen Full Code i kode nedenfor.
Etter dette, i oppsettfunksjon , gir vi retning til definert pin og initierer servomotor.
ugyldig oppsett () {pinMode (sw, INPUT_PULLUP); myServo.attach (servoPin); myServo.write (180); Serial.begin (9600); }
Etter det tar vi innspill og lagrer inngangsmønsteret eller banketiden i en matrise.
ugyldig sløyfe () {int i = 0; hvis (digitalRead (sw) == LOW) {Serial.println ("Start"); forsinkelse (1000); lang stt = millis (); mens (millis () <(stt + patternInputTime)) {int temp = analogRead (A0); hvis (temp> sensitivitet && flagg == 0 && i <= mønsterLenth) {…………..
Etter det dekoder vi inngangsmønsteret
for (int i = 0; i
Og lagre deretter hvis trykkknappen fortsatt trykkes
hvis (digitalRead (sw) == 0) {for (int i = 0; i
Og hvis det ikke fortsatt trykkes på trykknappen, vil Arduino sammenligne inngangskodet mønster med lagret mønster.
annet {if (knok == 1) {for (int i = 0; i
Hvis noe passord samsvarer, åpner Servo porten, ellers skjedde det ingenting, men brukeren kan se resultatet over seriell skjerm.
Serial.println (acceptFlag); hvis (acceptFlag> = mønsterLenth-1) {Serial.println ("Akseptert"); myServo.write (openGate); forsinkelse (5000); myServo.write (closeGate); } annet Serial.println ("Avvist"); }
Du kan sjekke hele koden nedenfor med en demo- video.