- Components:
- Explicació del circuit:
- Patró d'alimentació en Arduino:
- Explicació de treball:
- Explicació de la programació:
La seguretat és una preocupació important en el nostre dia a dia i els panys digitals s’han convertit en una part important d’aquests sistemes de seguretat. Hi ha molts tipus de sistemes de seguretat disponibles per protegir el nostre lloc. Alguns exemples són el sistema de seguretat basat en PIR, el sistema de seguretat basat en RFID, el sistema de bloqueig digital, els sistemes bio-matricials, el bloqueig de codi electrònic. En aquesta publicació, construïm un pany secret de detecció de trucades mitjançant Arduino que pugui detectar el patró dels cops a la porta i només obrirà el pany si el patró de cops coincideix amb el patró correcte. Per obtenir una demostració correcta, consulteu el vídeo al final.
Components:
- Arduino Uno
- Polsador
- Zumbador
- Resistència 1M
- Potència
- Connexió de cables
- Caixa
- Servomotor
Explicació del circuit:
El diagrama del circuit d’aquest Detector de patrons de cops és molt senzill i conté Arduino per controlar tot el procés del projecte, polsador, timbre i servomotor. Arduino controla els processos complets, com ara adoptar la contrasenya de Buzzer o Sensor, comparar patrons, conduir Servo per obrir i tancar la porta i desar el patró a Arduino.

El polsador està connectat directament al pin D7 d'Arduino respecte a terra. I un brunzidor està connectat al pin analògic A0 d'Arduino respecte a terra i amb una resistència d'1 M entre A0 i terra també. Un servo motor també està connectat al pin PWM D3 d'Arduino.


Patró d'alimentació en Arduino:
En aquest circuit, hem utilitzat Buzzer o Peizo Sensor per agafar patrons d’entrada al sistema. Aquí fem servir un polsador per permetre l'entrada del sensor i també desar-lo a l'Arduino. Aquest sistema està dissenyat prenent la idea del patró de codi Morse, però no és exactament similar a això.
Aquí hem utilitzat una caixa de cartró per demostrar. Per obtenir informació, tombem el tauler després de prémer el botó. Aquí hem trucat tenint en compte un període de temps de 500 ms. Això és de 500 ms perquè l’hem fixat en codi i el patró d’entrada depèn d’ell. Aquest període de temps de 500 ms definirà l’entrada 1 o 0. Comproveu el codi següent per entendre això.

Quan el tocem, Arduino comença a supervisar el temps del primer cop al segon cop i el posa en una matriu. Aquí, en aquest sistema, estem prenent 6 cops. Vol dir que obtindrem cinc períodes de temps.
Ara comprovem el període de temps un per un. En primer lloc, comprovem el període de temps entre el primer cop i el segon cop si la diferència de temps entre aquests menys de 500 ms serà 0 i si és superior a 500 ms serà 1 i es guardarà en una variable. Després, comprovem el període de temps entre el segon cop i el tercer cop, etc.
Finalment, obtindrem una sortida de 5 dígits en format 0 i 1 (binari).
Explicació de treball:
El treball del projecte Smart Lock basat en Knock és senzill. Primer hem de desar un patró al sistema. Per tant, hem de prémer i mantenir premut el botó fins a trucar 6 vegades. Aquí, en aquest projecte, he utilitzat 6 cops però l'usuari pot canviar-lo com vulgui. Després de sis cops, Arduino troba el patró de cops i el guarda a EEPROM. Ara, després de desar el patró d’entrada, premeu i deixeu anar immediatament el botó per agafar l’entrada del sensor a Arduino per obrir el bloqueig. Ara hem de trucar 6 vegades. Després, Arduino el descodifica i es compara amb el patró guardat. Si es produeix una coincidència, Arduino obre la porta conduint el servomotor.

Nota: quan premem o mantenim premut el botó Arduino, inicieu un temporitzador de 10 segons per fer tots els 6 cops. L’usuari vol dir que ha de tocar dins d’aquest temps de 10 segons. I l'usuari pot obrir el monitor sèrie per veure el registre.
Explicació de la programació:
Primer de tot, en un programa incloem el fitxer de capçalera i defineix el pin d’entrada i sortida i definim la macro i les variables declarades tal com es pot veure a la secció de codi complet a sota.
Després d'això, en la funció de configuració , donem direcció al pin definit i iniciem el servomotor.
void setup () {pinMode (sw, INPUT_PULLUP); myServo.attach (servoPin); myServo.write (180); Serial.begin (9600); }
Després d'això, prenem l'entrada i guardem el patró d'entrada o el temps de trucada en una matriu.
bucle buit () {int i = 0; if (digitalRead (sw) == BAIX) {Serial.println ("Inici"); retard (1000); llarg stt = millis (); while (millis () <(stt + patternInputTime)) {int temp = analogRead (A0); if (temp> sensibilitat && flag == 0 && i <= patternLenth) {…………..
Després, descodificem el patró d'entrada
per a (int i = 0; i
I després deseu si encara es prem el botó
if (digitalRead (sw) == 0) {for (int i = 0; i
I si encara no es prem el botó, Arduino compararà el patró descodificat d’entrada amb el patró guardat.
else {if (knok == 1) {for (int i = 0; i
Si coincideix alguna contrasenya, el Servo obre la porta en cas contrari, no ha passat res, però l'usuari pot veure el resultat a través del monitor sèrie.
Serial.println (acceptFlag); if (acceptFlag> = patternLenth-1) {Serial.println ("Acceptat"); myServo.write (openGate); retard (5000); myServo.write (closeGate); } else Serial.println ("Rebutjat"); }
Podeu consultar el codi complet a continuació amb un vídeo de demostració.
