- Komponenter:
- Forklaring af kredsløb:
- Fodring banke mønster i Arduino:
- Arbejdsforklaring:
- Programmeringsforklaring:
Sikkerhed er et stort problem i vores daglige liv, og digitale låse er blevet en vigtig del af disse sikkerhedssystemer. Der er mange typer sikkerhedssystemer tilgængelige for at sikre vores plads. Nogle eksempler er PIR-baseret sikkerhedssystem, RFID-baseret sikkerhedssystem, Digital Lock-system, bio-matrix-systemer, Elektronik-kodelås. Lad os i dette indlæg opbygge en hemmelig banklås, der detekterer dørlås ved hjælp af Arduino, som kan registrere mønsteret på dine baner ved døren og kun åbner låsen, hvis bankemønsteret stemmer overens med det rigtige mønster. For at få en korrekt fungerende demo, skal du kontrollere videoen i slutningen.
Komponenter:
- Arduino Uno
- Trykknap
- Summer
- 1M modstand
- Strøm
- Tilslutning af ledninger
- Boks
- Servomotor
Forklaring af kredsløb:
Kredsløbsdiagrammet for denne bankende mønsterdetektor er meget simpelt, som indeholder Arduino til styring af hele processen med projektet, trykknap, summer og servomotor. Arduino styrer de komplette processer som at tage adgangskode fra Buzzer eller Sensor, sammenligne mønstre, køre Servo for at åbne og lukke porten og gemme mønsteret til Arduino.
Trykknappen er direkte forbundet til pin D7 i Arduino i forhold til jorden. Og en summer er forbundet med den analoge pin A0 fra Arduino med hensyn til jorden og med en 1M modstand mellem A0 og jorden også. En servomotor er også forbundet til PWM-pin D3 i Arduino.
Fodring banke mønster i Arduino:
I dette kredsløb har vi brugt Buzzer eller Peizo Sensor til at tage knock input mønster i systemet. Her bruger vi en trykknap til at tillade at tage input fra sensoren og også gemme det i Arduino. Dette system er designet ved at tage idé fra Morse-kodemønster, men ikke lig med det.
Her har vi brugt en kartonboks til demonstration. For at tage input vælter vi tavlen efter at have trykket på knappen. Her har vi banket ved at holde en tidsperiode i tankerne, der er 500 ms. Denne 500ms skyldes, at vi har rettet den i kode, og inputmønsteret afhænger af det. Denne periode på 500 ms vil definere input var 1 eller 0. Tjek koden nedenfor for at forstå denne ting.
Når vi banker på det, begynder Arduino at overvåge tidspunktet for det første banke til andet banke og sætte det i en matrix. Her i dette system tager vi 6 slag. Det betyder, at vi får 5 tidsperioder.
Nu kontrollerer vi tidsperioden en efter en. Først kontrollerer vi tidsperioden mellem første banke og andet banke, hvis tidsforskellen mellem disse mindre end 500 ms, så vil den være 0, og hvis den er større end 500 ms, vil den være 1, og den gemmes i en variabel. Nu efter det kontrollerer vi tidsperioden mellem andet banke og tredje banke og så videre.
Endelig får vi 5-cifret output i 0 og 1 format (binært).
Arbejdsforklaring:
Arbejdet med Knock-baseret Smart Lock Project er enkelt. Først skal vi gemme et mønster i systemet. Så vi er nødt til at trykke og holde trykknappen nede, indtil vi banker 6 gange. Her i dette projekt har jeg brugt 6 slag, men brugeren kan ændre det, som de vil. Efter seks gange banke finder Arduino banemønsteret og gemmer det i EEPROM. Efter at have gemt inputmønsteret, skal du trykke på og straks slippe trykknappen for at tage input fra sensoren til Arduino for at åbne låsen. Nu skal vi banke 6 gange. Efter det afkoder Arduino det og sammenligner med gemt mønster. Hvis der opstår en kamp, åbner Arduino porten ved at køre servomotor.
Bemærk: når vi trykker eller holder på trykknappen Arduino, skal du starte en 10 sekunders timer for at tage alle 6 banke. Betyder, at brugeren skal banke inden for denne 10 sekunders tid. Og brugeren kan åbne seriel skærm for at se loggen.
Programmeringsforklaring:
I et program inkluderer vi først headerfilen og definerer input og output pin og definerer makroen og deklarerede variabler, som du kan se i sektionen Fuld kode i kode nedenfor.
Efter dette, i installationsfunktionen , giver vi retning til defineret pin og initierer servomotor.
ugyldig opsætning () {pinMode (sw, INPUT_PULLUP); myServo.attach (servoPin); myServo.write (180); Serial.begin (9600); }
Efter det tager vi input og gemmer inputmønsteret eller banetiden i en matrix.
ugyldig sløjfe () {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> følsomhed && flag == 0 && i <= mønsterLenth) {…………..
Efter det afkoder vi inputmønsteret
for (int i = 0; i
Og gem derefter, hvis der stadig trykkes på trykknap
hvis (digitalRead (sw) == 0) {for (int i = 0; i
Og hvis der ikke stadig trykkes på trykknappen, sammenligner Arduino inputkodet mønster med gemt mønster.
ellers {if (knok == 1) {for (int i = 0; i
Hvis en adgangskode matcher, åbner Servo porten, ellers skete der intet, men brugeren kan se resultatet over seriel skærm.
Serial.println (acceptFlag); hvis (acceptFlag> = mønsterLenth-1) {Serial.println ("Accepteret"); myServo.write (openGate); forsinkelse (5000); myServo.write (closeGate); } andet Serial.println ("Afvist"); }
Du kan kontrollere den komplette kode nedenfor med en demo- video.