- Componentes:
- Explicación del circuito:
- Patrón de golpeteo de alimentación en Arduino:
- Explicación de trabajo:
- Explicación de programación:
La seguridad es una preocupación importante en nuestro día a día, y las cerraduras digitales se han convertido en una parte importante de estos sistemas de seguridad. Hay muchos tipos de sistemas de seguridad disponibles para asegurar nuestro lugar. Algunos ejemplos son el sistema de seguridad basado en PIR, el sistema de seguridad basado en RFID, el sistema de bloqueo digital, los sistemas de matriz biológica, el bloqueo de código electrónico. En esta publicación, vamos a construir una cerradura de puerta de detección de golpes secreta usando Arduino que puede detectar el patrón de sus golpes en la puerta y solo abrirá la cerradura si el patrón de golpes coincide con el patrón correcto. Para ver la demostración de funcionamiento adecuada, consulte el video al final.
Componentes:
- Arduino Uno
- Presionar el botón
- Zumbador
- Resistencia de 1 M
- Poder
- Cables de conexión
- Caja
- Servo motor
Explicación del circuito:
El diagrama de circuito de este detector de patrones de detonación es muy simple y contiene Arduino para controlar todo el proceso del proyecto, botón pulsador, zumbador y servomotor. Arduino controla los procesos completos como tomar la contraseña de Buzzer o Sensor, comparar patrones, conducir Servo para abrir y cerrar la puerta y guardar el patrón en Arduino.
El pulsador está conectado directamente al pin D7 de Arduino con respecto a tierra. Y un zumbador está conectado en el pin analógico A0 de Arduino con respecto a tierra y con una resistencia de 1M entre A0 y tierra también. Un servomotor también está conectado al pin D3 de PWM de Arduino.
Patrón de golpeteo de alimentación en Arduino:
En este circuito, hemos utilizado Buzzer o Peizo Sensor para tomar el patrón de entrada de detonación en el sistema. Aquí estamos usando un botón para permitir tomar la entrada del sensor y también guardarla en el Arduino. Este sistema está diseñado tomando una idea del patrón de código Morse, pero no es exactamente similar a eso.
Aquí hemos utilizado una caja de cartón para demostración. Para tomar la entrada volcamos el tablero después de presionar el botón. Aquí hemos llamado teniendo en cuenta un período de tiempo de 500 ms. Este 500ms se debe a que lo hemos arreglado en el código y el patrón de entrada depende de él. Este período de tiempo de 500ms definirá que la entrada fue 1 o 0. Verifique el código a continuación para comprender esto.
Cuando lo golpeamos, Arduino comienza a monitorear el tiempo del primer golpe al segundo golpe y lo coloca en una matriz. Aquí, en este sistema, estamos recibiendo 6 golpes. Significa que obtendremos 5 períodos de tiempo.
Ahora comprobamos el período de tiempo uno por uno. Primero, verificamos el período de tiempo entre el primer golpe y el segundo golpe si la diferencia de tiempo entre estos menos de 500 ms será 0 y si es mayor de 500 ms será 1 y se guardará en una variable. Ahora, después de eso, verificamos el período de tiempo entre el segundo golpe y el tercer golpe y así sucesivamente.
Finalmente, obtendremos una salida de 5 dígitos en formato 0 y 1 (binario).
Explicación de trabajo:
Trabajar con el proyecto Smart Lock basado en Knock es simple. Primero tenemos que guardar un patrón en el sistema. Entonces tenemos que presionar y mantener presionado el botón pulsador hasta que golpeemos 6 veces. Aquí en este proyecto, he usado 6 golpes pero el usuario puede cambiarlo como quiera. Después de seis golpes, Arduino encuentra el patrón de golpe y lo guarda en EEPROM. Ahora, después de guardar el patrón de entrada, presione e inmediatamente suelte el botón para tomar la entrada del sensor a Arduino para abrir la cerradura. Ahora tenemos que tocar 6 veces. Después de eso, Arduino lo decodifica y compara con el patrón guardado. Si se produce una coincidencia, Arduino abre la puerta accionando el servomotor.
Nota: cuando presionamos o presionamos y mantenemos presionado el botón, Arduino inicia un temporizador de 10 segundos para recibir los 6 golpes. Significa que el usuario debe llamar dentro de este tiempo de 10 segundos. Y el usuario puede abrir el monitor serial para ver el registro.
Explicación de programación:
En un programa, en primer lugar, incluimos el archivo de encabezado y definimos el pin de entrada y salida y definimos la macro y las variables declaradas como puede ver en la sección Código completo en el código a continuación.
Después de esto, en la función de configuración , le damos dirección al pin definido e iniciamos el servomotor.
configuración vacía () {pinMode (sw, INPUT_PULLUP); myServo.attach (servoPin); myServo.write (180); Serial.begin (9600); }
Después de eso, tomamos la entrada y guardamos el patrón de entrada o el tiempo de golpe en una matriz.
bucle vacío () {int i = 0; if (digitalRead (sw) == LOW) {Serial.println ("Inicio"); retraso (1000); stt largo = milis (); while (millis () <(stt + patternInputTime)) {int temp = analogRead (A0); if (temp> sensibilidad && flag == 0 && i <= patternLenth) {…………..
Después de eso, decodificamos el patrón de entrada.
para (int i = 0; i
Y luego guarde si el pulsador todavía está presionado
if (digitalRead (sw) == 0) {for (int i = 0; i
Y si aún no se presiona el botón, Arduino comparará el patrón decodificado de entrada con el patrón guardado.
else {if (knok == 1) {for (int i = 0; i
Si alguna contraseña coincide, Servo abre la puerta; de lo contrario, no pasa nada, pero el usuario puede ver el resultado en el monitor en serie.
Serial.println (acceptFlag); if (acceptFlag> = patternLenth-1) {Serial.println ("Aceptado"); myServo.write (openGate); retraso (5000); myServo.write (closeGate); } else Serial.println ("Rechazado"); }
Puede consultar el código completo a continuación con un video de demostración.