viernes, 3 de junio de 2016

CERRADURA DIGITAL HECHA CON ARDUINO

Bloqueo de código digital o cerradura de combinación digital son un tipo de cerraduras digitales donde una combinación de dígitos / caracteres o ambos se utilizan para desbloquear la cerradura. En este artículo se trata de un simple bloqueo del código digital utilizando Arduino. 



el código consta de una combinación de dígitos de 1 a 6. Hay teclas separadas para bloquear y desbloquear el sistema. El sistema se puede desbloquear pulsando el botón de desbloqueo después de introducir la combinación correcta de dígitos. Una almohadilla de punta hexagonal se utiliza como dispositivo de entrada. Sólo las dos primeras filas de tecla (1, 2, 3, A, 4, 5, 6, B) se utilizan en este proyecto. A se utiliza para el bloqueo del sistema y B se utiliza para desbloquear el sistema. El diagrama de circuito del bloqueo del código digital utilizando Arduino se muestra en la figura siguiente.



La introducción de la contraseña en la instalación se puede cambiar en cualquier momento posterior en una sola pulsación de tecla.

Fila R1 a R4 están interconectados a los pines digitales de 6 a 9 de la Arduino. Columna C1 a C4 se interconectan a los pines digitales 10 a 13 de la Arduino. Pin digital 3 de la Arduino se configura como el pin de salida para la entrega de la señal de control para el bloqueo. El programa y el circuito están diseñado en el supuesto de que la cerradura eléctrica se "bloquear" para una señal de baja en su entrada y "desbloquear" para una señal alta en su entrada. En este circuito el solenoide está representada por el LED D1. Liderada por medio de "desbloqueado" y LED OFF significa "bloqueados". 330 ohm resistencia R1 limita la corriente a través del LED.



Acerca del programa.

La contraseña que es "123456" se almacena en la matriz "p". Cuando alguna vez se presionan las teclas numéricas, que se almacenan en la matriz "c". Cuando cada vez que se pulsa el botón de desbloqueo, el contenido de la matriz tanto se comparan y si son iguales, entonces pin digital 3 se hace alta. Después de esto el contenido de la matriz "c" corrompido por el programa. Esto se hace para evitar que el código correcto de que queda en la memoria. Si no se hace el sistema se desbloqueará sólo en la pulsación del botón de desbloqueo (B) después de otro ciclo de bloqueo. Al pulsar el botón de bloqueo (A) hará que la baja pin digital. El botón de bloqueo tiene que ser presionado antes de introducir la contraseña cada vez.


CÓDIGO DE PROGRAMA

int p [6];  // Array para almacenar la contraseña
 int c [6];  // Array para almacenar el código de entrada
 int n;
 int a = 0;
 int i = 0;
 int bloqueo = 3;
 int r1 = 6;
 int r2 = 7;
 int r3 = 8;
 int R4 = 9;
 int c1 = 10;
 c2 int = 11;
 int c3 = 12;
 c4 int = 13;
 int colm1;
 int colm2;
 int colm3;
 int colm4;

 void setup ()
 {
   pinMode (R1, salida);
   pinMode (R2, salida);
   pinMode (R3, salida);
   pinMode (R4, salida);
   pinMode (c1, INPUT);
   pinMode (c2, INPUT);
   pinMode (c3, INPUT);
   pinMode (c4, INPUT);
   pinMode (bloqueo, OUTPUT);
   Serial.begin (9600);  // Establece la velocidad de transmisión a 9600
   digitalWrite (c1, HIGH);
   digitalWrite (c2, HIGH);
   digitalWrite (c3, HIGH);
   digitalWrite (c4, HIGH);
   digitalWrite (bloqueo, LOW);
   p [0] = 1;  // Establece 1er dígito de la contraseña
   p [1] = 2;  // Establece segundo dígito de la contraseña
   p [2] = 3;  // Establece 3er dígito de la contraseña
   p [3] = 4;  // Establece cuarto dígito de la contraseña
   p [4] = 5;  // Establece quinto dígito de la contraseña
   p [5] = 6;  // Establece sexto dígito de la contraseña
 }
 void loop ()
 {
   digitalWrite (R1, LOW);
   digitalWrite (r2, HIGH);
   digitalWrite (R3, HIGH);
   digitalWrite (R4, HIGH);
   colm1 = digitalRead (C1);
   colm2 = digitalRead (c2);
   colm3 = digitalRead (c3);
   colm4 = digitalRead (c4);
   si (colm1 == LOW)
   {N = 1;
     a = 1;
     Serial.println ( "1");
    de retardo (200);}
   más
   {
    si (colm2 == LOW)
    {N = 2;
      a = 1;
      Serial.println ( "2");
     de retardo (200);}
    más
    {
    si (colm3 == LOW)
    {Serial.println ( "3");
      n = 3;
      a = 1;
    de retardo (200);}
    más
    {
    si (colm4 == LOW)
    {Serial.println ( "bloqueado");
     digitalWrite (bloqueo, LOW);  //cabellos
     i = 0;
     de retardo (200);}
    }}}

   digitalWrite (R1, HIGH);
   digitalWrite (r2, LOW);
   digitalWrite (R3, HIGH);
   digitalWrite (R4, HIGH);
   colm1 = digitalRead (C1);
   colm2 = digitalRead (c2);
   colm3 = digitalRead (c3);
   colm4 = digitalRead (c4);
   si (colm1 == LOW)
   {Serial.println ( "4");
    n = 4;
    a = 1;
   de retardo (200);}
   más
   {
    si (colm2 == LOW)
    {Serial.println ( "5");
     n = 5;
     a = 1;
   de retardo (200);}
    más
    {
    si (colm3 == LOW)
    {Serial.println ( "6");
       n = 6;
       a = 1;
     de retardo (200);}
    más
    {
    si (colm4 == LOW)
    {
     si (c [0] == p [0] && c [1] == p [1] && c [2] == p [2] && c [3] == p [3] && c [4] == p [ 4] && c [5] == p [5])
     {DigitalWrite (bloqueo, HIGH);  // desbloqueos
    Serial.println ( "ABIERTO");
     c [5] = 9;} // corrompe el código en serie c
     más
    {Serial.println ( "Contraseña no válida");}
    de retardo (200);}
    }}}
     si (a == 1) // comprobar si se pulsa una tecla numérica
     {
     c [i] = n;  // Guarda el dígito actual presiona a la matriz c
     i = i + 1;
     a = 0;}
    }


El sistema se puede conectar a la PC a través del USB y las teclas pulsadas se pueden ver a través de la ventana del monitor de serie del Arduino. La captura de pantalla de la ventana del monitor de serie de este proyecto se muestra en la figura siguiente.




Cuando se presiona el botón de bloqueo (Una de las claves en el teclado hexadecimal) la ventana de monitor serie mostrará el mensaje "BLOQUEADO". El código introducido se visualiza también en la ventana. Cuando se pulsa el botón de desbloqueo (b clave en el teclado hexadecimal) la ventana de monitor serie mostrará "ABIERTO". Si el código introducido es erróneo la ventana de monitor serie mostrará el mensaje "Contraseña no válida".