Mostrando entradas con la etiqueta mando a distancia. Mostrar todas las entradas
Mostrando entradas con la etiqueta mando a distancia. 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

martes, 27 de febrero de 2018

Mando a distancia para puerta . Modo Simple.



Mando a distancia para puerta 1
Modo Simple
Arduino



Aprovechando que tenía montado el módulo nRF24L01 junto con el arduino, he decidido hacer un mando a distancia para abrir una puerta.
Voy a realizar 3 modelos de mando, dependiendo la seguridad. Para este montaje he elegido el modo Simple.
En el modo simple se manda el código sin ninguna seguridad. Cualquier que se dedique a escuchar en el canal en el que transmite el mando, podrá descubrir el código. Aunque parezca que es poco seguro, la mayoría de los mandos de cualquier garaje funciona de este modo.
La mayoría de los mando de garaje trabajan sobre una frecuencia de 433MHz, los mas nuevos sobre 900MHz. En nuestro caso el nRF24L01 funciona a 2.4MHz.
Es fácil duplicar los mandos, solo cambiando los microinterruptores  conseguimos tener otro mando para otro coche.
Es lo bueno y lo malo que tienen, bueno el poder ser baratos y fáciles de configurar, y malo al ser poco seguros.


Esquema del mando.


Circuito del mando.


Esquema de la puerta.


Circuito de la puerta.

El circuito funciona de la siguiente manera:
  • El circuito de la puerta se encuentra en modo escucha en todo momento.
  • La llave emite en el canal 50 (donde está escuchado el circuito de la puerta)  los código de absceso. En nuestro caso dos bytes  7 y 215 , además de un tercer byte que se codifica en los 4 microinterruptores.
  • El circuito de la puerta compara los códigos que emite la llave con los códigos almacenados. Si coinciden los códigos, se  activa el pin 2 del arduino durante 2 segundos (relé de la puerta).
El circuito es simple y sencillo, fácil de realizar y funciona bastante bien.
Como podemos observar en el circuito no utilizo microinterruptores, utilizo puentes con cables que se conectan a Vcc para 1, y a GND para 0.


PROGRAMA

Hasta pronto.
Juan Galaz

miércoles, 14 de febrero de 2018

Coche teledirigido mando 3 ejes nRF24L01 L293D Arduino_ Versión 2

Página principal

Coche teledirigido
mando 3 ejes
nRF24L01
L293D
Arduino

xsetaseta@gmail.com

Este montaje es la continuación del anterior montaje carreci.html .
En este montaje añado un mando reutilizado de un helicóptero que tenía averiado.
Para el montaje he utilizado los 3 potenciómetros  y el conmutador de diferentes canales.
El primer potenciómetro es utilizado para la velocidad.
Los otros dos potenciómetros los utilizo como manejo de la dirección.
El conmutador selecciona la velocidad de rotación del vehículo.
Pongo en conocimiento que cada mando de helicópteros es diferente, por lo cual cada uno deberá modificar internamente el mando, cortando pista o lo que sea necesario para que se pueda reutilizar.



Esquema del emisor.

A nivel de programa se ha realizado bastantes cambios.
Se digitalizan los 3 potenciómetros , y se chequean los diferentes interruptores.
Ahora se mandan 7 bytes con los datos digitalizados.
1-SENSOR0    Eje1
2-SENSOR1    Eje2
3-SENSOR2    Velocidad
4-SENSOR3    (nada , reservado)
5-ENTRADAS    Las diferentes entradas en modo bit

El resto de bytes no se utilizan.

Los datos se mandan aproximadamente cada 100 miliSegundos , (algo menos de 10 datos por segundo)

Emisor con el mando reciclado.



Esquema del receptor.

En el receptor he trabajado mas, hay bastantes cosas que he modificado.
En primer lugar veía que había bastantes problemas con la alimentación de los motores. Por lo que decidí alimentarlo a través de dos baterías de 3,7V colocadas en serie y colocar un regulador de tensión 7805 para estabilizar la tensión a 5V.
Uno de los mayores problemas que tuve era que al alimentar los motores al arrancar, se necesitaba un impulso de energía extra.
La solución aunque parezca extraña fue mediante programa.
if(anterior==0)
             {
               analogWrite(9,255);
               analogWrite(10,255);
               anterior=1;
               delay(90);
             }

El programa detecta si se encuentra parado el vehículo, y en ese caso aplica la máxima tensión durante 90 miliSegundos, el coche rompe la inercia de parado,  y luego aplica la tensión normal para mantener la velocidad. Esto fue un gran descubrimiento para el buen funcionamiento del vehículo.

Como quería controlar un poco la dirección cuando estaba en movimiento. Reduje un poco la tensión en una de las ruedas cuando movía el mando, consiguiendo que el vehículo girara hacia el lado que quería.

El giro del vehículo desde parado lo he configurado para que se efectué a saltos, era la mejor forma de controlarlo sin que se pasase girando continuamente. En uno de los interruptores  seleccionamos la velocidad de giro entre 100mS y 50mS.

Debemos tener presente que el receptor tiene dos motores de escobilla que producen bastantes interferencia, así como consumos puntuales en el arranque. Por lo que recomiendo que se alimente independientemente la parte de los motores de la parte del arduino.

Este montaje es un mero montaje de prácticas que  funciona.
Para un montaje mas ambicioso deberíamos saber la alimentación de las baterías  6V o 12 V, un regulador adecuado con pocas perdidas. Colocar un regulador para los módulos emisor y transmisor. También utilizar los módulos con antena y mayor potencia que pueden alcanzar hasta 1Km en campo abierto.
Espero que le guste a alguien este montaje, o que le pueda proporcionar ideas.

PROGRAMA

Saludos.
Juan Galaz


Bibliografía:

Mando a distancia de 4 reles (relay)
Arduino-Android-Bluetooth-hc05-Manejando un coche-mediante nRF24
Coche teledirigido

viernes, 29 de julio de 2016

Mando a distancia de 4 reles (relay) mediante nRF24 Arduino

Página principal



Mando a distancia de 4 reles (relay)
mediante nRF24
Arduino

xsetaseta@gmail.com


Revisión del circuito. 17/11/2017
Después de bastante tiempo de realizar el montaje, tuve la necesidad de hacer otro montaje con el nRF24.
Montado todo bien no me funcionaba, o el funcionamiento era errático.
Después de muchas pruebas, descubrí que en algún que otro módulo se necesitaba un condensador entre Vcc y GND.
Colocados los condensadores en todos los módulos el funcionamiento era correcto.

PROGRAMA
Debido al cambio continuo de la librería nRF24, la nueva librería RF24master es incompatible con la librería que utilice en su día.
He vuelto escribir los programas para que sean compatibles con la librería RF24master.



En un lado está el emisor con un arduino, el módulo nRF24 como emisor y 4 pulsadores.
En el lado receptor se encuentra otro arduino y el módulo nRF24, junto con un modulo de 4 relés que funcionan bajo 5V.
No he realizado placa de circuito impreso, se ha montado y probado en protoboard.
No se ha optimizado el código en el emisor para que consuma poco, se podría reducir 20 veces, pero eso os lo dejo como trabajo.
Para poder insertar el nRF24 he realizado un adaptador como se puede ver en la imagen.


Adaptador


Esquema emisor.


Circuito emisor montado con dos pulsadores.


Esquema del receptor.


Circuito receptor montado.


Como he dicho antes, en el circuito emisor se podría modificar el programa para que la autonomía fuese 20 veces mas.
Para probar el circuito receptor he colocado una demo cada vez que se reinicia el circuito emisor.
El que quiera quitar la demo comenta la línea.
Debéis tener en cuenta que el nRF24 funciona a una frecuencia de 2.4GHz. A esta frecuencia los obstáculos afectan mucho, por lo que si se ve el emisor y el transmisor el alcance es considerable, pero con paredes por medio se reducen bastante.
Existe un  nRF24 con antena que puede llegar hasta 1km en visión directa, sin obstáculos.
En el lado receptor debemos tener en cuenta el consumo de los 4 relés, 60 mA por rele, 4x60=240mA, por lo que la optimización del consumo no es demasiado importante,



Programa

Saludos.
Juan Galaz

domingo, 6 de marzo de 2016

Marcador deportivo - MAX7219 - Matriz de leds

Página principal

Arduino
Marcador deportivo
MAX7219
Matriz de leds


En un anterior montaje ardisx.html , había realizado un marcador controlado por bluetooth, utilizando el chip MAX7219.
En esta ocasión utilizo el mismo chip pero manejando 2 módulos de matrices de diodos, y manejados por un control de mando a distancia.
Estos módulos vienen montados con 64 leds manejados por el chip MAX7219, se pueden encadenar conectado el DOUT de un módulo con el DIN del módulo siguiente. Para este montaje no utilizo esta propiedad de encadenado, los utilizo como módulos sueltos manejados independientemente por una línea CS, esto tiene sus pros y sus contras.












Módulo LED - MAX7219 Mando a distancia - PT2272





Esquema del circuito.



Detalle de conexionado.



Montaje del circuito.


Marcador funcionando.

Con el mando a distancia cambiamos los números, subir o bajar tanteo de cada segmento, hasta un máximo de 25.
Si pulsamos a la vez los botones A y C  del mando a distancia, el marcador se pone a cero.
Si pulsamos a la vez los botones D y B  del mando a distancia, aumentamos progresivamente la luminosidad de los leds hasta un máximo de 15, luego vuelve a 0.
Debemos tener muy en cuenta el consumo del circuito cuando aumentamos el brillo. Para una representación normal de dos números con el brillo al mínimo (0) , el consumo es de 50 mA todo el circuito. Pero si ponemos el brillo al máximo (15) el consumo aumenta a 300 mA.
El consumo máximo de cada matriz de leds a su máximo brillo y encendidos los 64 leds ronda los 300mA, un consumo considerable.
Debemos tener cuidado de no alimentar los módulos de leds directamente del arduino si colocamos el brillo al máximo.
De cualquier manera debemos colocar condensadores de desacoplo en la alimentación y alejar un poco el módulo receptor de las matrices de leds, producen interferencias y reducen la cobertura del mando a distancia.

PROGRAMA

Saludos.
Juan Galaz

Bibliografía:

http://seta43.blogspot.com.es/2015/11/marcador-controlado-por-bluetooth.html
http://www.prometec.net/scroll-max7219/