Mando a distancia de 4 canales por RF con HT12

En este post realizaremos un mando a distancias que puede ser de 1 a 4 canales simultáneos, esto quiere decir que podremos realizar (según la necesidad de cada uno) un mando a distancia configurable. 
En el circuito que les presentare estoy realizando la opción con 4 canales ya que es la mas completa y tal vez sera mas útil.
El corazón de este proyecto se basa en el circuito integrado de la firma Holtek HT12, que sera HT12E o HT12D en base a la función que realiza, para la letra "E" sera Encoder (sera nuestro emisor) y para la letra "D" sera Decoder (sera nuestro receptor).
Este integrado posee también 8 bit de encriptación, ya que tiene 8 pines externos que serán para configurar la encriptación del dato a enviar. Como sabemos, 8 bit corresponden a 256 combinaciones posibles, es decir de 0 a 255 combinaciones que podremos elegir, claramente el mismo código debe estar en el emisor y el receptor sino no se podrá realizar el link entre ambos y no funcionara el enlace.
Pero esto no es lo único que tendremos que sincronizar, también sera la velocidad de transferencia de la trama o el paquete de datos, que sera ajustando el oscilador interno VCO.
Luego nos quedara el medio por el cual vamos a enviar el paquete de datos, que en este caso sera mediante RF (pero podría ser mediante algún medio diferente). 
En cuanto al enlace de RF podría ser cualquiera, es decir necesitamos un enlace simplex de emisor y receptor que claramente tienen que estar sintonizados y modulados en la misma forma para que funcione.
Podríamos usar enlaces HF, VHF, UHF, etc... en este caso he implementado unos módulos de datos modulados en ASK (Amplitude Shit Key), estos módulos funcionan en UHF a una frecuencia que puede variar según el modelo o marca que compremos, pero hay que tener en cuenta que tanto el transmisor como el receptor deben estar apareados, es decir el Tx debe tener la misma modulación y frecuencia que el Rx.
En mi caso he conseguido unos módulos que funcionan a 433.92MHz en modulación ASK.
Sin entrar mucho en el tema de los módulos, tendremos un transmisor muy sencillo en base al filtro SAW que funciona de forma similar a un cristal piezoeléctrico que realizara la portadora en un transistor que cuando tenga un nivel alto en la entrada de datos enviara esa frecuencia y luego con un nivel bajo extraerá esa portadora de frecuencia. Esa es la diferencia mas sencilla para diferenciar un sistema AM de un ASK, luego en el caso del transmisor tenemos otro transistor con un filtro y balun para amplificar un poco el nivel de señal. 
En el caso del receptor, el que he conseguido es un receptor de simple conversión o conversión directa que luego de acoplar la frecuencia portadora, detectar y filtrar la señal, es ingresada a un comparador en base a un Amplificador Operacional que me discriminara la mayor parte del ruido y RF para que pueda ser una salida cuadrada.
Claramente tanto para el transmisor (TWS) como para el receptor (RWS) debemos realizar una antena, un sistema de radio sin antena es como un sistema de sonido sin parlantes. Es muy importante que la antena tenga las dimensiones correspondientes y podríamos hacer un calculo simple que nos dará aproximadamente unos 35cm para una frecuencia de 433MHz, pero lo ideal es buscar el datasheet del modulo transmisor y receptor donde mostrara todos sus valores incluyendo las dimensiones de la antena que el fabricante aconseja.

El circuito Transmisor:



Como podremos ver en este diagrama tenemos el HT12E junto con un DipSwitch de 8 canales que utilizaremos para setear la codificación de la trama.
Luego encontraremos la resistencia de oscilación de 680k que podría variar en función de la tensión de alimentación y frecuencia.
Los 4 pulsadores del tipo tac-switch que tienen su pullDown y por ultimo el modulo TWS que en el caso de los módulos que he conseguido el pinout se encuentra como en el diagrama y la antena se suelda en el modulo, pero podría ser diferente el que encuentren ustedes, lo importante es que tenemos dos pines de alimentación y uno de entrada de datos que sera el que sale del HT12E en el pin 17 (DOUT).
El sistema se encuentra alimentado con una batería de 9V, pero podría ser otro nivel de tensión (hasta 12V).

El circuito Receptor:


Aquí podremos ver el circuito receptor, que es muy similar al transmisor, el circuito integrado sera el HT12D junto con los DipSwitch para la codificación (recordemos que debe ser la misma en ambos), luego tenemos en la salida VT un transistor con un LED, esto podría ir solamente con una resistencia y un LED pero la salida esta negada, por ello usamos un transistor como inversor. Esta salida VT es para indicarnos que se ha creado el link, cuando el transmisor y el receptor estén encendidos y conectados mediante los módulos inalámbricos, se encenderá el LED5 avisando que se ha realizado el Link entre ambos integrados, si como prueba cambiamos alguno de los DipSwitch cambiara el código y se apagara el LED5 ya que se perderá el Link. Luego quedaran las cuatro salidas que pueden funcionar de forma simultanea entre ellas (podríamos conectar un decodificador de 16 salidas ya que son 4 bit, pero habrá que ver el uso que le daremos), por ultimo el modulo RWS en mi caso tiene cuatro pines donde los dos centrales están unidos en el mismo modulo y es la salida de datos.


NOTA: Es importante saber que las salidas no tienen retención, es decir una vez que pulsamos cualquiera de los 4 botones del transmisor, se encenderá el LED correspondiente en el receptor, pero cuando soltemos el botón el LED en el receptor se apagara.
Si van a usar este sistema como un control remoto para un auto de juguete o robótica, posiblemente sirva esta configuración pero si quieren manejar la salida como una retención deberán agregar algún flipflop a la salida, por ejemplo un 4013 que es un doble flipflop tipo D que sera muy útil para crear una retención, es decir, presiono botón y enciendo salida, presiono botón y apago salida.
En este caso para 4 canales necesitamos 2 integrados 4013 y ahí tenemos cubiertas las 4 salidas con retención.
Luego podríamos también pensar en temporizadores, por ejemplo para prender una luz o hacer sonar una alarma, podríamos usar un timer en base a un 555 como mono-estable o algún otro método. Esto quedara a elección del diseñador.


Segunda actualización con la retención en base a los FlipFlop tipo D con el integrado CMOS 4013.







Fritzing

Una manera muy útil y muy utilizada por la comunidad Arduino, es el diseño de diagramas en base a imágenes representativas de los módulos y componentes, esto se hace necesario ya que no todo el publico de Arduino conoce en profundidad el diseño electrónico o el uso profesional de softwares de diseño (tanto diagrama como PCB), en este aspecto contamos con una herramienta libre y muy versátil que va a ayudar al proyectista o diseñador a documentar un proyecto para uso propio o compartirlo con la comunidad.
El programa se llama Fritzing y podremos descargarlo de forma gratuita de su web.



Una vez seleccionado el método de descarga, tendremos varias opciones para distintos sistemas operativos y también para descargar el código fuente.


Una vez instalado tendremos el siguiente ide, donde nos encontraremos la primer solapa de Bienvenida, encontraremos algunos anuncios del programa y de algunas empresas de desarrollo como para que mandemos a fabricar nuestros proyectos (claro esta que es una opción útil si vivimos en otro país, aquí por el momento tendremos algunas restricciones de importación y demás). 


Solapa Protoboard o Breadboard, aquí podremos ver el entorno donde montaremos el circuito simulando el protoboard real, y en el cuadro de la derecha tendremos los componentes, módulos/shields y placas de desarrollo disponibles para nuestro diagrama.


La solapa Esquemático y PCB tendrán sentido una vez que realicemos nuestro circuito, entonces aparecerá automáticamente en ellas los componentes utilizados en el protoboard y podremos ordenarlos como queremos.

En la solapa Código, podremos realizar el programa (el mismo que en el IDE de Arduino, ya que podremos documentar todo en una sola carpeta del Fritzing) también hay una manera de linkear el Fritzing con el IDE de Arduino pero yo personalmente prefiero mantenerlas por separado, por lo que solo utilizo la sección protoboard de este programa que es en realidad lo "nuevo" que tiene respecto a la comparación con otros software de diseño electrónico.

Ahora vamos a crear algún circuito simple con Arduino como para que se pueda ver el formato en el que utilizaremos el programa.

1) Vamos a ir a la sección Componentes y vamos a seleccionar la librería de componentes de Arduino, en este lugar seleccionamos el Arduino que queremos, en este caso el ejemplo lo voy a realizar con un Arduino Nano. La manera de ingresar el componente en el protoboard es seleccionando el mismo y arrastrándolo a donde queremos.


Luego con el botón derecho sobre el componente podremos girar el mismo para posicionarlo como queramos.


Los controles para mover, modificar y posicionar componentes o módulos, estarán disponibles para todos los componentes o módulos que ingresemos al área de trabajo, de igual manera que el sector de atributos del componente (por ejemplo una resistencia, donde debemos modificar su valor, tolerancia, etc...)
El sector de atributos se encuentra bajo el área de componentes.

Realizaremos un circuito muy simple con el Arduino Nano, una resistencia, un led y un portapilas.


Como podremos ver se han agregado al área de trabajo el porta pilas, el LED, la resistencia y el arduino, luego tenemos que posicionarnos donde queramos (recordemos el funcionamiento del protoboard), y simplemente presionando en el pin o agujero del protoboard que queremos y arrastrando con el puntero, se creara el cable, que luego con el botón derecho podremos acceder al menú y cambiar el color entre otras cosas.

Ahora con el circuito realizado, pasaremos a la solapa Esquemático, y nos aparecerán los componentes que utilizamos en este protoboard de forma desordenada, tendremos que ordenarlos como queremos y luego de la misma forma que creamos los cables en el protoboard los crearemos aquí.


Luego podríamos también realizar el PCB del mismo, ingresando en la solapa PCB y también tendremos que ordenar los componentes como queremos, hay que tener en cuenta que el diseño de un PCB requiere de algunas técnicas de diseño para saber que tipo de pad o pista, el ancho, la aislación, terminaciones, temperatura y muchos otros factores que hacen al diseño.
El programa nos permite hacer un auto ruteo de pistas pero también podremos hacerlo de forma manual.



Una vez que tenemos realizado el diseño podremos exportar el mismo, por ejemplo como pdf, y mandarlo a imprimir para hacer la placa, o bien enviar los fuentes a alguna empresa de desarrollo para que nos fabriquen el PCB. 
También podríamos usar estas imágenes para documentar nuestro proyecto y publicarlo por ejemplo en nuestra pagina, un libro, revista, etc...