- Komponenter:
- Kretsförklaring:
- Matande knackningsmönster i Arduino:
- Arbetsförklaring:
- Programmeringsförklaring:
Säkerhet är ett stort problem i vårt dagliga liv och digitala lås har blivit en viktig del av dessa säkerhetssystem. Det finns många typer av säkerhetssystem tillgängliga för att säkra vår plats. Några exempel är PIR-baserat säkerhetssystem, RFID-baserat säkerhetssystem, Digital Lock-system, biomatrissystem, Elektronisk kodlås. I det här inlägget, låt oss bygga ett hemligt knackdetekterande dörrlås med hjälp av Arduino som kan upptäcka mönstret på dina knackningar vid dörren och endast öppnar låset om knackningsmönstret matchar rätt mönster. För korrekt fungerande demo, kolla in videon i slutet.
Komponenter:
- Arduino Uno
- Tryckknapp
- Summer
- 1M motstånd
- Kraft
- Anslutande ledningar
- Låda
- Servomotor
Kretsförklaring:
Kretsschemat för denna Knocking Pattern Detector är väldigt enkelt och innehåller Arduino för att styra hela projektets process, tryckknapp, summer och servomotor. Arduino styr de kompletta processerna som att ta lösenord från summer eller sensor, jämföra mönster, köra Servo för att öppna och stänga grinden och spara mönstret till Arduino.
Tryckknappen är direkt ansluten till stift D7 i Arduino i förhållande till marken. Och en summer är ansluten vid den analoga stift A0 av Arduino med avseende på marken och med ett 1M-motstånd mellan A0 och marken också. En servomotor är också ansluten till PWM-stift D3 i Arduino.
Matande knackningsmönster i Arduino:
I den här kretsen har vi använt Buzzer eller Peizo Sensor för att ta inmatningsmönster i systemet. Här använder vi en tryckknapp för att tillåta inmatning från sensorn och också spara den i Arduino. Detta system är utformat genom att ta idé från Morse-kodmönster men inte exakt lik med det.
Här har vi använt en kartonglåda för demonstration. För att ta in input slår vi ombord efter att ha tryckt på knappen. Här har vi knackat genom att hålla en tidsperiod i åtanke som är 500ms. Det här 500 ms beror på att vi har fixat det i kod och inmatningsmönstret beror på det. Denna 500ms tidsperiod kommer att definiera ingången var 1 eller 0. Kontrollera koden nedan för att förstå den här saken.
När vi knackar på det börjar Arduino övervaka tiden för första knackningen till den andra knackningen och placera den i en matris. Här i det här systemet tar vi 6 slag. Det betyder att vi får fem tidsperioder.
Nu kontrollerar vi tidsperioden en efter en. Först kontrollerar vi tidsperioden mellan första knackning och andra knackning om tidsskillnaden mellan dessa är mindre än 500 ms så blir den 0 och om den är större än 500 ms blir den 1 och den sparas i en variabel. Nu efter det kontrollerar vi tidsperioden mellan andra knackning och tredje knackning och så vidare.
Slutligen får vi 5-siffrig utdata i 0- och 1-format (binärt).
Arbetsförklaring:
Att arbeta med Knock-baserat Smart Lock Project är enkelt. Först måste vi spara ett mönster i systemet. Så vi måste hålla ned tryckknappen tills vi knackar 6 gånger. Här i det här projektet har jag använt 6 knackar men användaren kan ändra det som de vill. Efter sex gånger knackar hittar Arduino knackningsmönstret och sparar det i EEPROM. Efter att du har sparat inmatningsmönstret, tryck och släpp omedelbart tryckknappen för att ta inmatning från sensorn till Arduino för att öppna låset. Nu måste vi slå 6 gånger. Efter det avkodar Arduino det och jämför med sparat mönster. Om en match inträffar öppnar Arduino grinden genom att köra servomotor.
Obs: när vi trycker på eller håller ned tryckknappen Arduino startar en 10 sekunders timer för att ta alla 6 knackar. Betyder att användaren måste knacka inom 10 sekunder. Och användaren kan öppna seriell bildskärm för att se loggen.
Programmeringsförklaring:
I ett program inkluderar vi först rubrikfilen och definierar in- och utgångsstift och definierar makro och deklarerade variabler som du kan se i avsnittet Fullkod i kod nedan.
Efter detta, i installationsfunktionen , ger vi riktning till definierad stift och initierar servomotor.
ogiltig installation () {pinMode (sw, INPUT_PULLUP); myServo.attach (servoPin); myServo.write (180); Serial.begin (9600); }
Efter det tar vi inmatning och sparar inmatningsmönstret eller knackningstiden i en matris.
ogiltig slinga () {int i = 0; if (digitalRead (sw) == LOW) {Serial.println ("Start"); fördröjning (1000); lång stt = millis (); medan (millis () <(stt + patternInputTime)) {int temp = analogRead (A0); if (temp> känslighet && flagga == 0 && i <= mönsterLenth) {…………..
Efter det avkodar vi inmatningsmönstret
för (int i = 0; i
Och spara sedan om tryckknappen fortfarande trycks ned
om (digitalRead (sw) == 0) {för (int i = 0; i
Och om tryckknappen inte fortfarande trycks ned jämför Arduino inmatat avkodat mönster med sparat mönster.
annars {if (knok == 1) {för (int i = 0; i
Om något lösenord matchar öppnar Servo porten annars inträffade ingenting men användaren kan se resultatet över seriell bildskärm.
Serial.println (acceptFlag); if (acceptFlag> = patternLenth-1) {Serial.println ("Accepterad"); myServo.write (openGate); fördröjning (5000); myServo.write (closeGate); } annat Serial.println ("Avvisad"); }
Du kan kontrollera hela koden nedan med en demo- video.