- Componenten:
- Circuit uitleg:
- Voedingskloppatroon in Arduino:
- Werkende uitleg:
- Programmering Toelichting:
Beveiliging is een grote zorg in ons dagelijks leven en digitale sloten zijn een belangrijk onderdeel geworden van deze beveiligingssystemen. Er zijn veel soorten beveiligingssystemen beschikbaar om onze plek te beveiligen. Enkele voorbeelden zijn op PIR gebaseerd beveiligingssysteem, op RFID gebaseerd beveiligingssysteem, digitaal sluitsysteem, bio-matrixsystemen, elektronica codeslot. Laten we in dit bericht een Secret Knock Detecting Door Lock bouwen met Arduino, dat het patroon van je kloppen op de deur kan detecteren en het slot alleen opent als het kloppatroon overeenkomt met het juiste patroon. Bekijk de video aan het einde voor de juiste werkende demo.
Componenten:
- Arduino Uno
- Druk op de knop
- Zoemer
- 1M weerstand
- Kracht
- Draden aansluiten
- Doos
- Servomotor
Circuit uitleg:
Het schakelschema van deze Knocking Pattern Detector is heel eenvoudig en bevat Arduino voor het besturen van het hele proces van het project, drukknop, zoemer en servomotor. Arduino bestuurt de complete processen, zoals het aannemen van een wachtwoord, zoemer of sensor, patronen vergelijken, Servo aansturen om de poort te openen en te sluiten en het patroon op te slaan in Arduino.
De drukknop is rechtstreeks verbonden met pin D7 van Arduino met betrekking tot aarde. En een zoemer is aangesloten op analoge pin A0 van Arduino met betrekking tot aarde en met een weerstand van 1M tussen A0 en aarde ook. Een servomotor is ook aangesloten op PWM-pin D3 van Arduino.
Voedingskloppatroon in Arduino:
In dit circuit hebben we de zoemer of Peizo-sensor gebruikt om het knock-invoerpatroon in het systeem op te nemen. Hier gebruiken we een drukknop om input van de sensor te nemen en die ook op te slaan in de Arduino. Dit systeem is ontworpen door een idee te nemen van het morsecodepatroon, maar is daar niet precies hetzelfde mee.
Hier hebben we een kartonnen doos gebruikt voor demonstratie. Om input te krijgen stoten we het bord om na het indrukken van de drukknop. Hier hebben we geklopt door een tijdsperiode in gedachten te houden die 500 ms is. Deze 500 ms is omdat we het in code hebben gerepareerd en het invoerpatroon ervan afhankelijk is. Deze tijdsperiode van 500 ms zal bepalen dat de invoer 1 of 0 was. Controleer de onderstaande code om dit te begrijpen.
Wanneer we erop kloppen, begint Arduino de tijd van de eerste klop tot de tweede klop te volgen en dat in een array te plaatsen. Hier in dit systeem krijgen we 6 slagen. Het betekent dat we 5 tijdsperioden krijgen.
Nu controleren we de tijdsperiode een voor een. Eerst controleren we de tijdsperiode tussen de eerste keer kloppen en de tweede keer kloppen als het tijdsverschil tussen deze min de 500 ms dan 0 is en als het groter is dan 500 ms is het 1 en wordt het opgeslagen in een variabele. Nu daarna controleren we de tijdsperiode tussen de tweede klop en de derde klop, enzovoort.
Ten slotte krijgen we 5-cijferige uitvoer in 0 en 1 formaat (binair).
Werkende uitleg:
Het werken met op Knock gebaseerde Smart Lock Project is eenvoudig. Eerst moeten we een patroon in het systeem opslaan. Dus we moeten de drukknop ingedrukt houden totdat we 6 keer kloppen. Hier in dit project heb ik 6 kloppen gebruikt, maar de gebruiker kan deze naar wens wijzigen. Na zes keer kloppen, vindt Arduino het kloppatroon en slaat dat op in EEPROM. Na het opslaan van het invoerpatroon, drukt u op de drukknop en laat u deze onmiddellijk los om de invoer van de sensor naar Arduino te sturen om het slot te openen. Nu moeten we 6 keer kloppen. Daarna decodeert Arduino het en vergelijkt het met het opgeslagen patroon. Als er een match optreedt, opent Arduino de poort door de servomotor aan te drijven.
Opmerking: wanneer we de drukknop ingedrukt houden of ingedrukt houden, start Arduino een timer van 10 seconden om alle 6 kloppen op te vangen. Betekent dat de gebruiker binnen deze 10 seconden moet kloppen. En de gebruiker kan Seriële monitor openen om het logboek te zien.
Programmering Toelichting:
In een programma nemen we allereerst het headerbestand op en definiëren we de invoer- en uitvoerpin en definiëren we de macro en gedeclareerde variabelen zoals je kunt zien in de sectie Volledige code in code hieronder.
Hierna geven we in de setup- functie richting aan de gedefinieerde pin en starten we de servomotor.
void setup () {pinMode (sw, INPUT_PULLUP); myServo.attach (servoPin); myServo.write (180); Serial.begin (9600); }
Hierna nemen we invoer en slaan het invoerpatroon of de kloptijd op in een array.
leegte lus () {int i = 0; if (digitalRead (sw) == LOW) {Serial.println ("Start"); vertraging (1000); lange stt = millis (); while (millis () <(stt + patternInputTime)) {int temp = analogRead (A0); if (temp> gevoeligheid && flag == 0 && i <= patternLenth) {…………..
Daarna decoderen we het invoerpatroon
voor (int i = 0; i
En sla vervolgens op als de drukknop nog steeds wordt ingedrukt
if (digitalRead (sw) == 0) {voor (int i = 0; i
En als de drukknop nog steeds niet wordt ingedrukt, zal Arduino het ingevoerde gedecodeerde patroon vergelijken met het opgeslagen patroon.
else {if (knok == 1) {for (int i = 0; i
Als een wachtwoord overeenkomt, opent Servo de poort, anders gebeurt er niets, maar de gebruiker kan het resultaat zien via een seriële monitor.
Serial.println (acceptFlag); if (acceptFlag> = patternLenth-1) {Serial.println ("Geaccepteerd"); myServo.write (openGate); vertraging (5000); myServo.write (closeGate); } else Serial.println ("Afgewezen"); }
U kunt de volledige code hieronder bekijken met een demo- video.