Mostrando entradas con la etiqueta dialogo. Mostrar todas las entradas
Mostrando entradas con la etiqueta dialogo. Mostrar todas las entradas

miércoles, 28 de febrero de 2018

Mando a distancia para puerta III. Modo dialogo con lista.



Mando a distancia para puerta
III
Modo dialogo con lista
Arduino



En los dos anteriores montajes había realizado un mando a distancia con diferente modos de programa.
El primero mandaba los códigos directamente, en el segundo realizaba una negociación entre llave y puerta basada en una formula.
Para este montaje utilizo el mismo circuito, pero ahora negocia los códigos mediante una lista almacenada tanto en la llave y la puerta.
La lista  debe ser la misma tanto en la llave como en la puerta.


Esquema de puerta y mando.


Circuito de la puerta y de la llave.


Diagrama del dialogo entre llave y puerta.

La lista de códigos está almacenada en 2 arrays.
Como no me quería complicar mucho, solo he utilizado 2 arrays de 16 números.
Para hacerlo algo más seguro deberíamos haber creado las arrays  de 256 números.
    byte LISTAcodigo0[15]={12,9,5,11,8,6,13,4,1,0,7,2,14,3,10};
    byte LISTAcodigo1[15]={13,0,5,2,11,9,4,12,6,1,8,10,7,14,3};

El numero de orden en el array  se sacan del tiempo de funcionamiento del arduino.
     time = millis();
    x=time & 0x0F;
    y= 0x0F & (time>>8);

La variable CODIGO2 se saca de los micro-interruptores , como es normal deberá ser el mismo en la llave y en la puerta.
Esta variable es utilizada para modificar el numero de orden.
      x=(x+CODIGO2) & 0x0F;   
      x=LISTAcodigo0[x];
     
      y=(y+CODIGO2) & 0x0F;
      y=LISTAcodigo1[y];

Información de la llave
=======================

Información de la puerta
========================

___LLAVE Lista___12
Pulsado Boton de Apertura
Respuesta a la pregunta
Pulsado Boton de Apertura
Respuesta a la pregunta
___LLAVE Lista___4
Pulsado Boton de Apertura
Respuesta a la pregunta
___LLAVE Lista___12
Pulsado Boton de Apertura
Respuesta a la pregunta

____Puerta Lista____12
Peticion de apertura
CORRECTO
Peticion de apertura
CORRECTO
Peticion de apertura
ERROR
Peticion de apertura
CORRECTO



Tampoco me he metido mucho en asegurar la seguridad ante la fuerza bruta, solo he metido retardos para hacerlo más difícil.
En lo personal prefiero el modo de códigos por fórmula, pero este método es otro mas, y debía realizarlo.

En todo los montajes se podría realizar un registro de entrada y de salida, y horas. Pero eso es otra historia...

PROGRAMA

Hasta pronto.
Juan Galaz

Mando a distancia para puerta II . Modo dialogo con formula .



Mando a distancia para puerta
II
Modo dialogo con formula
Arduino



En el anterior montaje Mando a distancia para puerta , había realizado un mando a distancia en el cual se mandaba los códigos sin ninguna seguridad.
Cualquier que se dedique a escuchar en el canal en el que transmite el mando, podrá descubrir el código.
En este montaje utilizamos el mismo circuito a nivel de llave y de puerta que el anterior, pero el programa se cambia radicalmente.
Ahora se produce un diálogo entre la llave y la puerta, impidiendo que la escucha pueda descubrir el código, los códigos se cambian en cada petición.



Esquema de puerta y mando.


Diagrama del dialogo entre llave y puerta.

Los códigos de pregunta en la puerta se sacan del tiempo de funcionamiento del arduino.
     time = millis();
    x=time & 0xFF;
    y= 0xFF & (time>>8);

Los códigos de respuesta se sacan de una fórmula.
      codigo=x*y*CODIGO2+CODIGO2;
     x= codigo & 0xFF;
     y= codigo>>8 & 0xFF;
La formula se puede cambiar a gusto del programador para hacerla aún más segura.
Esta formula debe ser la misma en la llave y en la puerta.
La variable CODIGO2 se saca de los micro-interruptores , como es normal deberá ser el mismo en la llave y en la puerta.

Información de la llave
=======================

Información de la puerta
========================

__LLAVE Código___
4
Pulsado Botón de Apertura
Respuesta a la pregunta
___LLAVE Código___
12
Pulsado Botón de Apertura
Respuesta a la pregunta

Petición de apertura
Código pregunta 173  47
Respuesta 16  127
Respuesta solicitada 48  125
ERROR
Petición de apertura
Bodigo pregunta 64  98
Respuesta 12  38
Respuesta solicitada 12  38
CORRECTO

Como podemos ver este modo es mucho más seguro que el mandar el código simplemente.
Aseguramos de que si hay alguien escuchando en el canal, no le servirá de nada.
Tampoco me he metido mucho en asegurar la seguridad por fuerza bruta, solo he metido retardos para hacerlo más difícil.

PROGRAMA

Hasta pronto.
Juan Galaz