- Komponenten:
- Schaltungserklärung:
- Fütterungsklopfmuster in Arduino:
- Arbeitserklärung:
- Programmiererklärung:
Sicherheit ist ein wichtiges Anliegen in unserem täglichen Leben, und digitale Schlösser sind zu einem wichtigen Bestandteil dieser Sicherheitssysteme geworden. Es gibt viele Arten von Sicherheitssystemen, um unseren Platz zu sichern. Einige Beispiele sind PIR-basiertes Sicherheitssystem, RFID-basiertes Sicherheitssystem, Digital Lock System, Biomatrixsysteme, Electronics Code Lock. Lassen Sie uns in diesem Beitrag mit Arduino ein geheimes Türschloss zur Erkennung von Klopfen erstellen, das das Muster Ihrer Klopfen an der Tür erkennt und das Schloss nur öffnet, wenn das Klopfmuster mit dem richtigen Muster übereinstimmt. Überprüfen Sie das Video am Ende, um die ordnungsgemäß funktionierende Demo zu erhalten.
Komponenten:
- Arduino Uno
- Druckknopf
- Summer
- 1M Widerstand
- Leistung
- Kabel anschließen
- Box
- Servomotor
Schaltungserklärung:
Das Schaltbild dieses Klopfmusterdetektors ist sehr einfach und enthält Arduino zur Steuerung des gesamten Projektprozesses, Druckknopf, Summer und Servomotor. Arduino steuert die gesamten Prozesse wie das Einnehmen des Passworts von Summer oder Sensor, das Vergleichen von Mustern, das Fahren von Servo zum Öffnen und Schließen des Tors und das Speichern des Musters in Arduino.
Der Druckknopf ist in Bezug auf Masse direkt mit Pin D7 von Arduino verbunden. Und ein Summer ist am analogen Pin A0 von Arduino in Bezug auf Masse und mit einem Widerstand von 1 M zwischen A0 und Masse ebenfalls angeschlossen. Ein Servomotor ist auch mit dem PWM-Pin D3 von Arduino verbunden.
Fütterungsklopfmuster in Arduino:
In dieser Schaltung haben wir Summer oder Peizo-Sensor verwendet, um das Klopf-Eingabemuster im System zu erfassen. Hier verwenden wir einen Druckknopf, um Eingaben vom Sensor zu übernehmen und diese auch im Arduino zu speichern. Dieses System basiert auf einer Idee aus dem Morsecode-Muster, ist diesem jedoch nicht genau ähnlich.
Hier haben wir zur Demonstration einen Karton verwendet. Um Eingaben zu machen, werfen wir das Board um, nachdem wir den Druckknopf gedrückt haben. Hier haben wir geklopft, indem wir einen Zeitraum von 500 ms berücksichtigt haben. Diese 500 ms sind, weil wir es im Code behoben haben und das Eingabemuster davon abhängt. In diesem Zeitraum von 500 ms wird definiert, dass die Eingabe 1 oder 0 war. Überprüfen Sie den folgenden Code, um diese Sache zu verstehen.
Wenn wir es klopfen, beginnt Arduino, die Zeit vom ersten bis zum zweiten Klopfen zu überwachen und diese in ein Array zu legen. Hier in diesem System nehmen wir 6 Schläge. Es bedeutet, dass wir 5 Zeiträume bekommen.
Jetzt überprüfen wir den Zeitraum nacheinander. Zuerst überprüfen wir den Zeitraum zwischen dem ersten und dem zweiten Klopfen, wenn der Zeitunterschied zwischen diesen weniger als 500 ms beträgt, dann ist er 0, und wenn er größer als 500 ms ist, ist er 1 und wird in einer Variablen gespeichert. Danach überprüfen wir den Zeitraum zwischen dem zweiten und dritten Klopfen und so weiter.
Schließlich erhalten wir eine 5-stellige Ausgabe im 0- und 1-Format (binär).
Arbeitserklärung:
Die Arbeit mit dem Knock-basierten Smart Lock-Projekt ist einfach. Zuerst müssen wir ein Muster im System speichern. Also müssen wir den Druckknopf gedrückt halten, bis wir 6 Mal klopfen. Hier in diesem Projekt habe ich 6 Klopfen verwendet, aber der Benutzer kann es ändern, wie er will. Nach sechsmaligem Klopfen findet Arduino das Klopfmuster und speichert es im EEPROM. Drücken Sie nun nach dem Speichern des Eingabemusters den Druckknopf und lassen Sie ihn sofort los, um Eingaben vom Sensor an Arduino zu senden und das Schloss zu öffnen. Jetzt müssen wir 6 mal klopfen. Danach dekodiert Arduino es und vergleicht es mit dem gespeicherten Muster. Wenn eine Übereinstimmung auftritt, öffnet Arduino das Tor, indem er den Servomotor antreibt.
Hinweis: Wenn wir den Druckknopf Arduino drücken oder gedrückt halten, starten Sie einen 10-Sekunden-Timer, um alle 6 Klopfen auszuführen. Bedeutet, dass der Benutzer innerhalb dieser 10 Sekunden klopfen muss. Der Benutzer kann den seriellen Monitor öffnen, um das Protokoll anzuzeigen.
Programmiererklärung:
In einem Programm schließen wir zunächst die Header-Datei ein und definieren den Eingabe- und Ausgabepin sowie die Makro- und deklarierten Variablen, wie Sie im Abschnitt Vollständiger Code im Code unten sehen können.
Danach geben wir in der Setup- Funktion dem definierten Pin die Richtung und leiten den Servomotor ein.
void setup () {pinMode (sw, INPUT_PULLUP); myServo.attach (servoPin); myServo.write (180); Serial.begin (9600); }}
Danach nehmen wir die Eingabe und speichern das Eingabemuster oder die Klopfzeit in einem Array.
void loop () {int i = 0; if (digitalRead (sw) == LOW) {Serial.println ("Start"); Verzögerung (1000); long stt = millis (); while (millis () <(stt + patternInputTime)) {int temp = analogRead (A0); if (temp> Empfindlichkeit && flag == 0 && i <= patternLenth) {…………..
Danach dekodieren wir das Eingabemuster
für (int i = 0; i
Und dann speichern, wenn der Druckknopf noch gedrückt ist
if (digitalRead (sw) == 0) {for (int i = 0; i
Und wenn der Druckknopf noch nicht gedrückt ist, vergleicht Arduino das dekodierte Eingabemuster mit dem gespeicherten Muster.
sonst {if (knok == 1) {für (int i = 0; i
Wenn ein Passwort übereinstimmt, öffnet Servo das Tor, andernfalls ist nichts passiert, aber der Benutzer kann das Ergebnis über den seriellen Monitor sehen.
Serial.println (acceptFlag); if (acceptFlag> = patternLenth-1) {Serial.println ("Accepted"); myServo.write (openGate); Verzögerung (5000); myServo.write (closeGate); } else Serial.println ("Abgelehnt"); }}
Sie können den vollständigen Code unten mit einem Demo- Video überprüfen.