lunes, 21 de octubre de 2019


COMO ENCENDER/APAGAR LA LUZ DE TU HABITACION 
CON UN MANDO A DISTANCIA (SIN ARDUINO)

Antes que nada, indicar que este dispositivo no solo sirve para apagar/encender una luz, sino cualquier dispositivo que se desee, como un ventilador, motor, enchufe... cualquier cosa que funcione con corriente y deseemos controlar con un mando a distancia.
Primero indicaré los materiales necesarios. Son materiales fáciles de encontrar, aunque en la mayoría de casos hay que comprarlos online, y por eso no voy a indicar enlaces de compra, para que cada cual compre los materiales donde mas guste. Sin embargo, si que pondré debajo de cada elemento, el nombre con el cual, se puede buscar dicho elemento para hacer la compra en nuestro portal favorito.
  

1. FUENTE DE ALIMENTACION
(click en la imagen para agrandar)
Esta fuente será la que nos alimente todo el circuito completo. Ya que hay elementos que funcionan a 5v como veremos mas adelante. Son fuentes muy pequeñas, para hacerte una idea, en una cajetilla de
cigarrillos caben dos como esta. ¿Su precio? En algunos portales no llega ni a 1 euro.
Términos de busqueda:
Fuente alimentación 5v 2a  

2. RELE:
(click en la imagen para agrandar)
 Este relé sera el que apague/encienda nuestra lámpara. Funciona a 5vcc y a su carga se pueden olocar 230vac. El tamaño es mínimo y su precio ronda los 0,50 euros. (increíble pero cierto).
Términos de busqueda:Módulo relé 1 canal 5v arduino


3. EMISOR – RECEPTOR RF 433MHZ  

(click en la imagen para agrandar)
Con este elemento nos detendremos un poco más ya que es el elemento principal de nuestro circuito. Apenas vale 2 euros y viene con pila incluida (dan ganas hasta de llorar, que lastima).
Como se puede ver es un receptor de 4 canales. Es decir, podríamos activar hasta 4 patillas distintas, cada una con una tecla del mando. Aunque nosotros usaremos solamente una ya que solo queremos controlar una lámpara.
Este circuito consta de 7 patillas. 2 de alimentación (+5Vcc y GND), 4 patillas que pasan a nivel alto mientras se este pulsando su correspondiente tecla (A,B,C,D) y, por último, una patilla llamada Vt que es una especie de chivato. Esta patilla pasa a nivel alto mientras se esta presionando cualquier tecla. Es decir, al pulsar una tecla determinada siempre activamos Vt y la patilla correspondiente a dicha tecla. Como a mi me interesa que la lámpara se encienda/apague con cualquiera de las teclas sin tener que mirar cual es la que pulsas, he decidido usar precisamente esa patilla, la Vt que pasa a nivel alto mientras pulsamos cualquier tecla. Sin embargo, esto presenta un inconveniente, y es que al dejar de pulsar la tecla, la patilla Vt vuelve a pasar a nivel bajo. Esto no nos interesa para nada, ya que se trata de enviar la señal que recibimos hacia el relé, pero si lo hicieramos directamente, la patilla activaria el relé (o la lámpara) solo mientras nosotros estemos pulsando la tecla. Si dejamos de pulsar la tecla, la patilla Vt vuelve a desactivar el relé (o la lámpara).
Por tanto, necesitariamos un circuito de enclavamiento que ante un pulso de Vt temporal, nos active una salida a 1 de forma permanente hasta el siguiente pulso de Vt que nos invierta la salida a 0 y asi sucesivamente. Es decir, que al activar Vt momentaneamente, se quede el relé activado/desactivado hasta el siguiente pulso de Vt.
Esto lo conseguimos con el siguiente circuito...


4. CIRCUITO DE ENCLAVAMIENTO O BIESTABLE
Para quien no este muy puesto en el tema, daré una breve definición de lo que es un biestable, tambien llamado flip-flop.Es un circuito lógico muy elemental capaz de memorizar un solo bit de información y
es la base de cualquier memoria.
No entraré muy a fondo sobre el funcionamiento de un biestable (para quien quiera saber mas, pondré un enlace) pero basta con saber, que, si ponemos las dos entradas (patillas R y S) a positivo, en cada pulso de reloj (patilla CLK) la salida Q se invierte al estado anterior. Osea, si Q esta en 1, al siguiente pulso de reloj pasara a 0, quedándose en 0 indefinidamente hasta que vuelva a entrar otro pulso de reloj que hara que Q vuelva a quedarse en 1, y asi sucesivamente. Justo lo que necesitamos.
+INFO:
https://es.wikipedia.org/wiki/Biestable
Por tanto, podemos usar Vt que se activa momentaneamente mientras pulsamos cualquier tecla, para atacar directamente a la entrada de reloj (CLK) del biestable, y la salida Q del biestable podemos enviarla a la entrada IN del relé. De esta forma, cada vez que pulsemos una tecla, el relé quedará activado hasta que pulsemos otra vez una tecla que volverá a desactivarse.  

(click en la imagen para agrandar)

  Con esto ya tenemos todas las piezas del puzzle. Ahora sólo falta montarlas.
Para ello habremos de crear una placa de circuito impreso que aloje el biestable y el receptor. Esta tendrá varios conectores tipo DIP hembra, uno de 2 terminales para la alimentación de la misma, del integrado y a su vez del receptor RF y tambien del modulo del relé. Otro conector DIP de 7 terminales para encajar el circuito RF, y por último un tercer conector DIP de 3 terminales que lo haré coincidir con los terminales del relé para que quede alimentado.

Todo esto podemos verlo mas claramente en la siguiente figura...
(click en la imagen para agrandar)


En la siguiente figura podemos ver todas las piezas que componen nuestro dispositivo.
En el caso del biestable, he hecho coincidir las dimensiones de la placa con las de la fuente, para colocarla justo encima y que quede todo como un bloque.

(click en la imagen para agrandar)

Y en la siguiente, podemos ver como queda todo el bloque ya montado...
1. Fuente alimentacion (abajo), 2.biestable (centro), 3.rele(arriba, azul), 4.circuito RF (arriba, verde)
(click en la imagen para agrandar)

Con esto, ya solo queda hacer las conexiones a nuestra lámpara, como se ve en la siguiente figura:
(click en la imagen para agrandar)

Con esto ya tenemos listo nuestro circuito para encender/apagar la luz desde la cama mientras vemos netflix. ;-)

Por último, aquí podemos ver el circuito funcionando.

miércoles, 28 de octubre de 2015

COMO CREAR UNA CONSOLA SERIE PARA ARDUINO EN 4 PASOS



Todos conocemos la consola serie del ide de arduino, y creo que todos coincidimos que deja mucho que desear sobre todo para aquellos que nos gusta la estética a la hora de mostrar datos. Bien, pues pululando por la red descubrí un lenguaje de programación orientado precisamente a eso, a trabajar con gráficos, es el Processing. Para no enrollarme mucho, aqui expongo la definición de processing según la wikipedia:
Processing es un lenguaje de programación y entorno de desarrollo integrado de código abierto basado en Java, de fácil utilización, y que sirve como medio para la enseñanza y producción de proyectos multimedia e interactivos de diseño digital. Fue iniciado por Ben Fry y Casey Reas a partir de reflexiones en el Aesthetics and Computation Group del MIT Media Lab dirigido por John Maeda. Se distribuye bajo la licencia GNU GPL.
En apenas un par de días se puede aprender processing, y visto el lenguaje, es idóneo para crear una consola mucho mas vistosa que la que trae el propio ide (sin menospreciar el trabajo de los desarrolladores que lo han hecho).
Con este manual se pretende enseñar de forma fácil y en sólo 4 pasos, a diseñar una consola serie para mostrar los datos que entrega arduino (o cualquier dispositivo que se conecte a un puerto serie). Incluso podríamos simular arduino en proteus y mostrar los datos en esta consola. ;)

Esta consola se podrá diseñar desde cero o aprovechar la que os traigo aqui (con código fuente incluido). Vais a ver lo facil que es modificarla o directamente ponerla a funcionar si no quereis modificar nada. Tan solo habrá que especificarle el puerto serie al que está conectado el arduino (paso 4) y la consola comenzará a mostrar los datos simulando una lcd keypad shield (el dibujo es cortesía de zelectro.cc): 


He de aclarar que no hace ni dos semanas descubrí este lenguaje, asi es que a fecha de hoy, reconozco que no estoy muy ducho en este lenguaje. Seguramente haya expertos en processing que sabrán como mejorar esta consola y añadirle mas características. Pero para empezar creo que no esta muy mal del todo.
Personalmente, creo que processing es un lenguaje perfecto para complementar, (no para sustituir, aunque podría) al lenguaje C con el que se programa arduino, siempre que queramos tener resultados visualmente atractivos.
Bueno, no nos enrollemos mas y vayamos al grano, no sin antes especificar que estos 4 pasos solo habremos de realizarlos una sola vez. ;)

PASO 1. DESCARGA E INSTALACIÓN DEL IDE DE PROCESSING 
El ide de processing es muy similar al de arduino, por tanto, es donde va el código fuente. Se puede ejecutar el programa o bien crear un ejecutable para no necesitar del ide (nota 2).
Enlace de descarga (página oficial): https://processing.org/download/ He de aclarar que la donación que piden es voluntaria y yo no tengo relación alguna con dicha página. Es la web oficial de processing. Descargamos, descomprimimos e instalamos.
Si lo abris (aunque no es necesario de momento) os encontrareis una pantalla como la que sigue:

No entraré en programación de processing, ya que para ello he puesto a vuestra disposición en este mismo paquete un manual de programación en processing de más de 200 páginas en español. Para quienes quieran profundizar en este lenguaje. "Processing, un lenguaje al alcance de todos". 
Cerramos el ide (si lo hemos abierto) y pasamos al siguiente paso...

PASO 2. DESCARGAR EL CÓDIGO FUENTE 
Descargamos el archivo "ConsolaSerieVirtual" que incluye el código fuente entre otras cosas aqui ---> http://1drv.ms/1M1SP3b

PASO 3. DESCOMPRIMIR EL CODIGO FUENTE: 
Una vez descargado y descomprimido el archivo, encontraremos una carpeta llamada ConsolaSerieVirtual con varios archivos en su interior:
  1. Carpeta DATA: Archivos internos que necesita processing para ejecutar la consola. Esta carpeta podemos ignorarla.
  2. Carpeta EnvioDeDatosSerial: Esta carpeta contiene el código fuente de arduino como ejemplo para enviar datos por el puerto serie. Imprescindible aquí enviar dicho código fuente a nuestro arduino ya que es el que nos sirve de prueba. Es un simple contador que envía por el puerto serie los numeros del 0 al 1000.
  3. Processing, un lenguaje al alcance de todos.pdf: Éste es un libro para aprender procesing con 233 páginas en español para quien quiera profundizar en este lenguaje.
  4. Archivo ConsolaSerieVirtual.pde: Por último, éste es el archivo principal. Donde va el código fuente de nuestra consola, en lenguaje processing. Aquí es donde vamos a especificar el puerto serie al que está conectado nuestro arduino, de la siguiente forma
    (Paso 4)
PASO 4. ESPECIFICAR EL PUERTO SERIE DE NUESTRO ARDUINO: 
Damos doble click al archivo ConsolaSerieVirtual.pde
Se nos abrira el ide de processing (previamente instalado en el paso 1), que muestra la siguiente pantalla:


Buscamos la linea que esta marcada en el recuadro rojo (línea 11). En ella habremos de sustituir el 3 (puerto COM3 en mi caso) por el número de puerto al que este conectado nuestro arduino.
Una vez modificado dicho valor, ya podemos ejecutar la consola dándole al boton de PLAY (tambien marcado con un círculo en rojo en la figura anterior).
Acto seguido debería aparecer nuestra consola, mostrando los datos que esté recibiendo por el puerto serie.
Y con esto habremos conseguido nuestro objetivo. Una consola virtual mucho mas estética que la original de arduino. :)

NOTAS: 
Nota 1. A partir de aquí, no necesitamos hacer mas todo el proceso. Solo basta con ejecutar el archivo ConsolaSerieVirtual.pde (o exe) y nada mas. A jugar con nuestro arduino. :)

Nota 2. Como bien indicaba al principio de este manual, podemos crear un ejecutable de nuestra consola para no necesitar el ide. Eso sí, si nuestro arduino cambia de puerto, habremos de crear de nuevo el ejecutable despues de volver a modificar el código fuente con el nuevo puerto. Para ello, en el ide de processing, iremos a Archivo, Exportar aplicación... y seleccionamos nuestro sistema operativo. Si seleccionamos Windows (ya marcada por defecto) nos creará dos carpetas dentro de la misma carpeta del ide. Una para windows, versión 32 bits y otra para windows versión 64 bits.