Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Cerradura de puerta basada en contraseña

Componentes y suministros

Arduino UNO
× 1
teclado de membrana
× 1
Controladores de motor Texas Instruments Dual H-Bridge L293D
× 1
actuador lineal
× 1

Acerca de este proyecto

Hay numerosos sitios web que han publicado este proyecto y está presente en varios canales de YouTube, y tal vez incluso este sitio web tenga algunos de estos. Entonces, siendo honesto, no es nada original. Pero podría explicar y mostrar de una manera más simple e informativa.

El componente principal de este proyecto es el teclado matricial. He usado un teclado de membrana 4x4 que se ve así:

Las teclas del teclado son básicamente pulsadores. Estos interruptores de botón se 'cierran' cuando se presionan y una vez que se libera la fuerza, vuelven a su estado natural, es decir, 'abiertos'.

Así es como el teclado se conecta internamente como filas y columnas. Cuando, supongamos, se presiona 1, la columna 1 y la fila 1 están conectadas entre sí. Cuando se presiona 9, r3 y c3 están conectados juntos.

El escaneo se realiza con 4 teclas configuradas como salidas y 4 teclas como entradas. Hice todas las columnas las entradas usando resistencias pullup de entrada, y todas las filas las salidas. Usando la programación, todas las filas se hacen BAJAS una por una, varias veces en un segundo. Entonces, cuando se presiona una tecla, la columna correspondiente se vuelve BAJA. El estado de los pines de entrada a los que están conectadas todas las columnas se lee varias veces. Siempre que se lee un estado BAJO, significa que se presiona una tecla en esa columna. Si una determinada fila es baja y al mismo tiempo una determinada columna es baja, entonces se determina la tecla presionada.

Por ej. si se presiona 1, la columna 1 será baja. Y dado que cada fila se hace BAJA tan rápido, una por una, incluso si presiona la tecla durante un período muy corto, la fila 1 se encontrará BAJA en algún momento y se determinará que se presiona 1. Si row1 ==low &&column1 ==low, significa que se presiona 1.

Esto se muestra en el código 1 . Escribí este código yo mismo porque quería cargarlo en la placa stm32 y la biblioteca KEYPAD no era compatible. Con este código, comprenderá lo que expliqué anteriormente. O simplemente puede usar la biblioteca de teclados y ejecutar el ejemplo de 'teclado personalizado'. Ambos servirán para el mismo propósito. Pero ese código no le explicará el funcionamiento.

Con el monitor en serie, cada tecla que se presiona se muestra en la pantalla. Esto se muestra en el video 1 .

Una vez que la determinación de la clave funciona bien, es hora de trabajar en la contraseña. Es tan simple. Lo que hice fue - hice una cadena "1234". Esta es la contraseña que establecí. Ahora, hice otra matriz. Cualquiera que sea el valor de la clave, se almacena en esta matriz. Cuando el recuento llega a 4, se comparan ambas cadenas. Si coinciden, la contraseña es correcta, de lo contrario no. Esto se muestra en el código 2 . Conecté un LED al pin 11. Entonces, cuando la contraseña es correcta, se ilumina. Se muestra en video 2 .

Ahora, el componente que se utilizará como cerradura:Actuador lineal de 12 V. Tiene este aspecto.

Esto se opera utilizando L293d IC, que también se conoce comúnmente como IC de 'controlador de motor'. Este IC está conectado a la fuente de 12v. Toma entradas del Arduino, es decir, entrada de 5v y salidas de 12v a sus pines de salida (a los que está conectado el actuador). Entonces, cuando la contraseña es correcta, el pin 11 se establece en alto y el pin 12 en bajo. Los pines 11 y 12 están conectados a las entradas del l293d. Por lo tanto, el actuador se tira hacia adentro y la puerta se abre. mostrado en video 3 .

Código

  • código 1
  • código 2
código 1 Arduino
Escaneando
 int filas =4; int columnas =4; char readkey (void); char nfunc (void); # define c3 9 # define c2 8 # define c1 7 # define c0 6 # define r3 5 # define r2 4 #define r1 3 # define r0 2void setup () {Serial.begin (9600); pinMode (c0, INPUT_PULLUP); pinMode (c1, INPUT_PULLUP); pinMode (c2, INPUT_PULLUP); pinMode (c3, INPUT_PULLUP); pinMode (r0, SALIDA); pinMode (r1, SALIDA); pinMode (r2, SALIDA); pinMode (r3, SALIDA); pinMode (11, SALIDA); pinMode (12, SALIDA);} char readkey (void) {digitalWrite (r0, LOW); digitalWrite (r1, HIGH); digitalWrite (r2, HIGH); digitalWrite (r3, HIGH); if (digitalRead (c0) ==BAJO) {retraso (500); retorno '1';} else if (lectura digital (c1) ==BAJO) {retraso (500); retorno '2';} else if (lectura digital (c2) ==BAJO) {retraso (500); return '3';} else if (digitalRead (c3) ==LOW) {delay (500); return 'A';} digitalWrite (r0, HIGH); digitalWrite (r1, LOW); digitalWrite (r2 , HIGH); digitalWrite (r3, HIGH); if (digitalRead (c0) ==LOW) {delay (500); return '4';} else if (digitalRead (c1) ==LOW) {delay (500); return '5';} else if (digitalRead (c2) ==LOW) {delay (500); return '6';} else if (digitalRead (c3) ==LOW) {delay (500); return 'B';} digitalWrite (r0, HIGH); digitalWrite (r1, HIGH); digitalWrite (r2, LOW); digitalWrite (r3, HIGH); if (digitalRead (c0) ==LOW) {delay (500); return '7';} else if (digitalRead (c1) ==LOW) {delay (500); return '8';} else if (digitalRead (c2) ==LOW) {delay (500); return '9';} else if (digitalRead (c3) ==LOW) {delay (500); return 'C';} digitalWrite ( r0, HIGH); digitalWrite (r1, HIGH); digitalWrite (r2, HIGH); digitalWrite (r3, LOW); if (digitalRead (c0) ==LOW) {delay (500); return '*';} si no (digitalRead (c1) ==LOW) {delay (500); return '0';} else if (digitalRead (c2) ==LOW) {delay (500); return '#';} else if (digitalRead (c3 ) ==BAJO) {retraso (500); retorno 'D';} retorno 'o';} char nfunc (void) {clave char ='o'; while (key =='o') key =readkey (); return key;} void loop () {char key1 =nfunc (); if (key1) {Serial.print (key1);}} 
código 2 Arduino
contraseña
 int filas =4; int columnas =4; int count =0; char readkey (void); char nfunc (void); # define c3 9 # define c2 8 # define c1 7 # define c0 6 # define r3 5 # definir r2 4 # definir r1 3 # definir r0 2char contraseña [5] ="1234"; char escrito [5]; void setup () {Serial.begin (9600); pinMode (c0, INPUT_PULLUP); pinMode (c1, INPUT_PULLUP); pinMode (c2, INPUT_PULLUP); pinMode (c3, INPUT_PULLUP); pinMode (r0, SALIDA); pinMode (r1, SALIDA); pinMode (r2, SALIDA); pinMode (r3, SALIDA); pinMode (11, SALIDA); pinMode (12, SALIDA);} char readkey (void) {digitalWrite (r0, LOW); digitalWrite (r1, HIGH); digitalWrite (r2, HIGH); digitalWrite (r3, HIGH); if (digitalRead (c0) ==BAJO) {retraso (500); retorno '1';} else if (lectura digital (c1) ==BAJO) {retraso (500); retorno '2';} else if (lectura digital (c2) ==BAJO) {retraso (500); return '3';} else if (digitalRead (c3) ==LOW) {delay (500); return 'A';} digitalWrite (r0, HIGH); digitalWrite (r1, LOW); digitalWrite (r2 , HIGH); digitalWrite (r3, HIGH); if (digitalRead (c0) ==LOW) {delay (500); return '4';} else if (digitalRead (c1) ==LOW) {delay (500); return '5';} else if (digitalRead (c2) ==LOW) {delay (500); return '6';} else if (digitalRead (c3) ==LOW) {delay (500); return 'B';} digitalWrite (r0, HIGH); digitalWrite (r1, HIGH); digitalWrite (r2, LOW); digitalWrite (r3, HIGH); if (digitalRead (c0) ==LOW) {delay (500); return '7';} else if (digitalRead (c1) ==LOW) {delay (500); return '8';} else if (digitalRead (c2) ==LOW) {delay (500); return '9';} else if (digitalRead (c3) ==LOW) {delay (500); return 'C';} digitalWrite ( r0, HIGH); digitalWrite (r1, HIGH); digitalWrite (r2, HIGH); digitalWrite (r3, LOW); if (digitalRead (c0) ==LOW) {delay (500); return '*';} si no (digitalRead (c1) ==LOW) {delay (500); return '0';} else if (digitalRead (c2) ==LOW) {delay (500); return '#';} else if (digitalRead (c3 ) ==BAJO) {retraso (500); retorno 'D';} retorno 'o';} char nfunc (void) {clave char ='o'; while (key =='o') key =readkey (); return key;} void loop () {char key1 =nfunc (); if (key1) {typed [count] =key1; contar ++; Serial.print (key1);} if (count ==4) {if (strcmp (typed, password) ==0) {Serial.println ("correcto"); escritura digital (11, ALTA); digitalWrite (12, BAJO); retraso (250); digitalWrite (11, LOW);} else {Serial.println ("intruso");} count =0;}} 

Esquemas

Conecte el actuador donde está conectado el motor.
Conecte el pin 8 a 12v tecla presionada que se muestra en la pantalla VID_20160924_195032.mp4led se ilumina cuando la contraseña es correcta VID_20160924_200016.mp4 El actuador se tira hacia afuera en caso normal (es decir, la puerta está bloqueada).
Cuando la contraseña es correcta, se tira hacia adentro y la puerta se abre VID_20160924_201528.mp4

Proceso de manufactura

  1. Bóveda del banco
  2. Puerta giratoria
  3. Canal y esclusa
  4. Bloquear
  5. Candado de combinación
  6. Estación meteorológica basada en Raspberry Pi
  7. Haga una puerta de oficina con bloqueo automático con sensor de proximidad para teléfono inteligente
  8. Windows IoT:puerta de reconocimiento facial
  9. Autómatas celulares basados ​​en Arduino y OLED
  10. Cerradura de puerta inteligente usando la página de inicio de sesión de WiFi de Arduino y ESP8266
  11. Comprender la configuración del motor