- Componenti:
- Spiegazione del circuito:
- Feeding Knocking Pattern in Arduino:
- Spiegazione di lavoro:
- Spiegazione della programmazione:
La sicurezza è una delle principali preoccupazioni nella nostra vita quotidiana e le serrature digitali sono diventate una parte importante di questi sistemi di sicurezza. Ci sono molti tipi di sistemi di sicurezza disponibili per proteggere il nostro posto. Alcuni esempi sono il sistema di sicurezza basato su PIR, il sistema di sicurezza basato su RFID, il sistema di blocco digitale, i sistemi a matrice biologica, la serratura con codice elettronico. In questo post, costruiamo una serratura segreta per il rilevamento dei colpi utilizzando Arduino che può rilevare il modello dei tuoi colpi alla porta e aprirà la serratura solo se il modello di bussata corrisponde al modello corretto. Per il corretto funzionamento della demo, controlla il video alla fine.
Componenti:
- Arduino Uno
- Premi il bottone
- Cicalino
- Resistenza da 1M
- Energia
- Cavi di collegamento
- Scatola
- Servomotore
Spiegazione del circuito:
Lo schema del circuito di questo rilevatore di pattern a colpi è molto semplice e contiene Arduino per il controllo dell'intero processo del progetto, pulsante, cicalino e servomotore. Arduino controlla i processi completi come prendere la password dal cicalino o dal sensore, confrontare i modelli, guidare Servo per aprire e chiudere il cancello e salvare il modello su Arduino.
Il pulsante è direttamente collegato al pin D7 di Arduino rispetto alla massa. E un buzzer è collegato al pin analogico A0 di Arduino rispetto a terra e con una resistenza di 1M tra A0 e terra anche. Un servomotore è anche collegato al pin PWM D3 di Arduino.
Feeding Knocking Pattern in Arduino:
In questo circuito, abbiamo utilizzato Buzzer o Peizo Sensor per rilevare il pattern di input dei colpi nel sistema. Qui stiamo usando un pulsante per consentire di prendere input dal sensore e salvarlo anche su Arduino. Questo sistema è stato progettato prendendo l'idea dal modello del codice Morse ma non esattamente simile a quello.
Qui abbiamo usato una scatola di cartone per la dimostrazione. Per ricevere l'input, tocchiamo il tabellone dopo aver premuto il pulsante. Qui abbiamo bussato tenendo a mente un periodo di tempo che è di 500 ms. Questo 500 ms è perché l'abbiamo corretto nel codice e il pattern di input dipende da esso. Questo periodo di tempo di 500 ms definirà l'ingresso come 1 o 0. Controlla il codice seguente per capire questa cosa.
Quando lo colpiamo, Arduino inizia a monitorare il tempo dal primo colpo al secondo e lo inserisce in un array. Qui in questo sistema, stiamo prendendo 6 colpi. Significa che avremo 5 periodi di tempo.
Ora controlliamo il periodo di tempo uno per uno. Innanzitutto, controlliamo il periodo di tempo tra il primo e il secondo colpo se la differenza di tempo tra questi è inferiore a 500 ms, sarà 0 e se maggiore di 500 ms sarà 1 e verrà salvato in una variabile. Dopo di ciò, controlliamo il periodo di tempo tra il secondo e il terzo e così via.
Infine, otterremo un output di 5 cifre in formato 0 e 1 (binario).
Spiegazione di lavoro:
Il funzionamento del progetto Smart Lock basato su Knock è semplice. Per prima cosa dobbiamo salvare un pattern nel sistema. Quindi dobbiamo premere e tenere premuto il pulsante finché non bussiamo 6 volte. Qui in questo progetto, ho usato 6 colpi ma l'utente può cambiarlo come vuole. Dopo sei colpi, Arduino trova la sequenza di colpi e la salva in EEPROM. Ora, dopo aver salvato il pattern di input, premere e rilasciare immediatamente il pulsante per portare input dal sensore ad Arduino per aprire il lucchetto. Adesso dobbiamo bussare 6 volte. Dopo di ciò, Arduino lo decodifica e lo confronta con il modello salvato. Se si verifica una corrispondenza, Arduino apre il cancello azionando il servomotore.
Nota: quando premiamo o teniamo premuto il pulsante Arduino avvia un timer di 10 secondi per prendere tutti e 6 i colpi. Significa che l'utente deve bussare entro questo tempo di 10 secondi. E l'utente può aprire il monitor seriale per vedere il registro.
Spiegazione della programmazione:
In un programma prima di tutto includiamo il file di intestazione e definiamo i pin di input e output e definiamo la macro e le variabili dichiarate come puoi vedere nella sezione Codice completo nel codice sottostante.
Successivamente, nella funzione di configurazione , diamo la direzione al pin definito e iniziamo il servomotore.
void setup () {pinMode (sw, INPUT_PULLUP); myServo.attach (servoPin); myServo.write (180); Serial.begin (9600); }
Dopo di ciò, prendiamo l'input e salviamo il pattern di input o il tempo di battuta in un array.
void loop () {int i = 0; if (digitalRead (sw) == LOW) {Serial.println ("Start"); ritardo (1000); stt lungo = millis (); while (millis () <(stt + patternInputTime)) {int temp = analogRead (A0); if (temp> sensitivity && flag == 0 && i <= patternLenth) {…………..
Dopo di ciò, decodifichiamo il pattern di input
for (int i = 0; i
Quindi salva se il pulsante è ancora premuto
if (digitalRead (sw) == 0) {for (int i = 0; i
E se il pulsante non è ancora premuto, Arduino confronterà il pattern decodificato in ingresso con il pattern salvato.
altro {if (knok == 1) {for (int i = 0; i
Se una qualsiasi password corrisponde, allora Servo apre il cancello altrimenti non è successo niente ma l'utente potrebbe vedere il risultato sul monitor seriale.
Serial.println (acceptFlag); if (acceptFlag> = patternLenth-1) {Serial.println ("Accepted"); myServo.write (openGate); ritardo (5000); myServo.write (closeGate); } else Serial.println ("Rejected"); }
Puoi controllare il codice completo di seguito con un video dimostrativo.