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.







24 comentarios:

  1. Hola Sebastian.
    Interesantes estos módulos, por el precio que tienen. Yo los he usado, pero con dos Arduino, y he logrado hasta 9 metros y no he podido medir más por falta de espacio.

    Lo único es que cuando le construí las antenas, después de leer por ahí, en la mayoría de páginas apuntaban que 1/4 de onda de 433 MHz corresponde a 16.5 cm (17 cm en otras). También recomendaban que la del emisor fuera helicoidal y la del receptor tipo látigo. En la del receptor le coloqué finalmente una de 32 cm, siguiendo un tutorial que encontré, y con la que obtuve buenos resultados.
    ¿A qué corresponden entonces esos 16.5 cm de antena?

    Comentar también que compré unos módulos similares a éstos, pero que el transmisor viene dentro de un llavero con 4 botones y su respectivo encoder (PT2272), y el receptor igual al del vídeo pero con el decoder incluido. Si llegó a 2 metros fue mucho (un fraude). Ni cambiando la pila, ni con antena ni nada. Obtuve mejores resultados con los módulos simples como los del vídeo.

    Saludos.

    ResponderBorrar
    Respuestas
    1. Buenas! como estas?, 9 metros me parece poco yo logre sacarle hasta 1 cuadra en ciudad con pic, haciendo la trama a mano con buenos tiempos y una buena distancia entre bits, con los módulos HT le saque unos 30metros nada más, lo cual es bueno para el uso que tengo en mente.

      En cuanto a la antena, son todos monopolos ya que el plano de masa se lo "olvidan", la realidad es que mientras menos fraccionada este la longitud de la antena (1/2, 1/4, 5/8, etc...) mejor será el enlace, recorda que para longitudes de onda de 1/2, o 1/4 (lo que se suele usar en esto) están haciendo uso de los armónicos del transmisor que son siempre de menor potencia que la fundamental. No te digo que andes con un dipolo de 70cm pero bueno, es para tener en cuenta nada más.

      Si usas una antena helicoidal en el emisor, después tenes que recibir la onda de la misma forma polarizada, sino la polarización se va para cualquier lado y el enlace no es óptimo.

      En los casos que te menciono que la estuve usando fue siempre con dos monopolos omnidireccionales.

      Esos 16.5 o 17cm es para la configuración a 1/4 de onda.

      Si los conozco esos que traen el encoder y decoder, pero me parece poco 2m, tal vez tengas algún problema con eso, es muy poco 2m.

      Saludos!!!

      Borrar
  2. Hola de nuevo.

    Cometí un pequeño error. El llavero trae el PT2264 (SCT2262) y el receptor el PT2272.

    Saludos.

    ResponderBorrar
  3. Gracias Sebastian.

    Aquí en España no se suele usar la medida "cuadra", pero entiendo que rondará los 100m. Yo conseguí esos 9m dentro de mi casa, y por eso no pude medir todo el alcance con aquella configuración. No creía que se pudiera tanto con estos minúsculos módulos.

    Probaré a ponerle antena de 32cm también al transmisor y hacerlo en exteriores.

    Volví a probar el llavero con el encoder y su receptor y obtuve los mismos resultados. La pila de 12V que trae está perfecta, y tan solo alargando la antena emisora con un trozo de cable se lograba algún metro más, pero muy lejos de los 9m de sus hermanos.
    Siempre puedo desoldar los integrados y usarlos en otra cosa, pues el problema vendrá del transmisor o del receptor.

    Gracias de nuevo y saludos.

    ResponderBorrar
    Respuestas
    1. Como estas?, perdón la demora!, Sos de España? jeje no tenia idea! ahí debes conseguir todo mas fácil que acá por suerte. Como le dicen ahí a las "cuadras" o "blocks", acá son 100m efectivamente.
      Si, efectivamente la antena es una de las partes mas importantes de un sistema de radio, en cuanto al modulo que tenes, no se cual sea el problema, por ahí podes probar bajando la frecuencia de operación de los encoder y decoder para que sea mas sencillo para el enlace.
      Tal vez probar desmontando el Encode y Decoder, y probar solo en enlace con un micro o con un HT, para ver que podrá ser.
      Saludos!!!

      Borrar
    2. Hola Sebastian.

      Bueno, soy de Canarias, y sí, la verdad que se puede comprar casi cualquier componente, aunque a veces hay que mandarlo a pedir al distribuidor nacional.

      Aquí no usamos "cuadras". A todo caso, el término manzana, pero tampoco mucho que digamos. Pero San Google lo soluciona todo.

      Lo que comentas de bajar la frecuencia de operación de los encoder/decoder ¿cómo se haría?

      Gracias y saludos.

      Borrar
    3. Bueno bien, algún día espero poder darme una vuelta por Europa, lo mas lejos que pude hacer acá es a 500km :S jeje es todo muy costoso acá.
      Claro acá también creo que le se llaman Manzanas, pero bueno también le dicen cuadras.
      Lo de bajar la frecuencia tiene que ver con que la trama de datos se envié mas lenta, por ejemplo el HT12 tiene una resistencia externa para darle la velocidad a esa trama, en mi experiencia con estos módulos de RF y esos integrados, mientras mas baja sea la frecuencia de la trama mas alcance me da, por ejemplo cuando lo uso con micrcontroladores con trama UART, la configuro a 600bps como para que sea algo lento, pero cuando hago la trama a mano y por ejemplo le doy una velocidad de 100Hz o algo así, es realmente bueno el alcance del sistema.
      En tu caso debes tener algún método de darle velocidad a tus integrados, claro que ya todo esta montado en ese modulo y hacer esa modificación seguramente involucra usar el soldador... pero es a modo prueba. a menos que esos los dejes así para alguna aplicación hogareña donde no necesitas distancia, y uses otros módulos.
      Estos que probaste son los únicos que usaste? o probaste otros iguales y te dan el mismo resultado? tal vez estén en mal estado.
      Saludos!

      Borrar
  4. como puedo saber si el transmisor y el receptor están en la misma frecuencia, ademas de saber que son de 433Mhz ???

    ResponderBorrar
    Respuestas
    1. Hola, el transmisor suele tener un filtro/oscilador tipo SAW, es un cilindro metálico que suele tener el numero 433, 415, etc... ahí ya tenes un indicio de que frecuencia trabaja el transmisor, como es a cristal no debería tener una frecuencia diferente a la de ese componente. El receptor es mas complicado porque no suele tener un oscilador local a cristal... entonces la manera que tienen de sintonizarlo es con una cirucito tanque LC donde la bobina suele estar sintonizada y con un esmalte por encima para que no se gire accidentalmente el tornillo del núcleo y se valla de frecuencia. Podes saber a que frecuencia funciona con instrumental adecuado de RF.
      Saludos.

      Borrar
  5. HOLA buenas noches, muy buen post, te felicito. te hago una consulta, como tendria que hacer para agregar el circuito del flip flop, podrias ayudarme por favor? muchas gracias

    ResponderBorrar
    Respuestas
    1. Hola! como estas?, tenes que poner un FF tipo D por salida del HT12D, si usas el CD4013 tenes dos FF tipo D adentro por cada integrado.
      Saludos!

      Borrar
  6. Hola Sebastian,se podria modular en fsk para despues demodular y transmitur con equipos de radio?,saludos desde España.

    ResponderBorrar
    Respuestas
    1. Hola, no, porque el modulo esta diseñado para modular con salto de amplitud, es un circuito diferente, podes montar una FM sobre este ASK, un manchester o un FSK sobre este modulo... Pero no seria FSK o FM nativo.
      Saludos.

      Borrar
  7. Hola Sebastian C, me da gusto encontrar en este blog alguien que trabajo con los módulos rf, particularmente me encuentro trabajando con los de 433 MHz, tienes razón los trabaje con los HT y si que son demasiado lentos y poco alcance, los trabaje con los PIC16f628A, tanto en el emisor como receptor usando la interrupción por cambio de estado en el trasmisor y codificando el dato mediante la ya conocida codificación manchester, alcanse mas de 50 metros a decir verdad se corrumpe aveces el dato, y otras se queda con la ultima lectura, me gustaría compartit archivos y que ayudes a orientar en mi proyecto.

    ResponderBorrar
    Respuestas
    1. Hola, bueno me alegro que puedas usar el Manchester con los módulos, ya que es uno de los mejores métodos para utilizar estos, yo he probado con FSK y con UART directo a 300 y 600bps, lo mejor ha sido Manchester... pero con FSK también obtuve buenos resultados (algo muy simple como enviar 500Hz para un HIGH y 200Hz para un LOW). Si tenes un repositorio podemos compartir por ahí, o bien en el grupo de facebook!
      Saludos.

      Borrar
  8. Aun no tengo repositorio, en el grupo de facebook estaria mejor ya que tengo unas dudas y quisiera compartir lo que hice para asi mejorar el proyecto en base a tu experiencia, y espero me puedas ayudar

    ResponderBorrar
    Respuestas
    1. Hola, si, déjalo en el facebook así lo vemos y generamos una nueva entrada con modificación.
      Saludos!!

      Borrar
  9. Este comentario ha sido eliminado por el autor.

    ResponderBorrar
  10. hola, saludos desde Chile
    Tengo una consulta, en el ciruito transmisor, puedo reemplazar los pulsadores por los pines de arduino? necesito hacer un control de luces pero por bluetooth y rf y quiero ocupar los 4 canales del integrado ht-12. La idea es hacer 4 receptores cada uno en distintos canales del integrado.
    Llevo tiempo buscando info y no encuentro.... espero me puedan ayudar por favor

    ResponderBorrar
    Respuestas
    1. Hola como estas? saludos!
      Si, claramente podes reemplazarlo por los pines de arduno sin problemas.
      sisi hacelo sin problemas, solo tene en cuenta que vas a poder tener solo 16 combinaciones con 4 bit. Despues tambien podes controlar los 8bit de direccion del HT, y asi elegir que direccion le das a tus receptores. Por ejemplo:

      ARDUINO --> 4bit (datos) y 8bit (dirección).
      RECEPTOR1 --> 4bit (datos) y 8bit (dirección).
      RECEPTOR2 --> 4bit (datos) y 8bit (dirección).
      RECEPTOR3 --> 4bit (datos) y 8bit (dirección).
      RECEPTOR4 --> 4bit (datos) y 8bit (dirección).

      Ejemplo practico (pongo valores de ejemplo pero puede ser cualquiera).
      RECEPTOR1 --> 4bit (datos) y 00010001 (dirección).
      RECEPTOR2 --> 4bit (datos) y 00100010 (dirección).
      RECEPTOR3 --> 4bit (datos) y 00110011 (dirección).
      RECEPTOR4 --> 4bit (datos) y 01000100 (dirección).

      Entonces hasta acá tenes 4 receptores con 4 direcciones diferente.
      Desde arduino:

      ARDUINO --> 0011 (datos) y 00100010 (dirección del RECEPTOR2).

      Envia el dato 0011 al receptor 2.

      De esta manera podes enviar hasta 16 datos distintos (0000 a 1111) a cada receptor por separado.

      Saludos.

      Borrar
  11. una consulta es posible trabajar con tensiones distintas entre el decodificador y el modulo receptor solo con el cable de datos entre ellos?

    ResponderBorrar
    Respuestas
    1. Hola, si podes alimentar por ejemplo el HT12D con 3V y el receptor con 5V, habria que ver que niveles de tension entrega el receptor y cuales admite el HT12D, para ver que los niveles sean tolerantes.
      Saludos!

      Borrar
  12. Hola Sebastián, quería consultarte si se puede comunicar los módulos vía cableado, y como sería el circuito, y si hay que usar un cable especial o adaptarlo de alguna forma. Estoy iniciendo en éste tipo de módulo.

    ResponderBorrar
  13. algun otro integrado con el que se pueda en clavar el pulso e buscado mucho el 4013 pero nada que lo encunetro y si lo encuntro demasiado caro 7dolares por integrado . e usado el 4017 pero me e dado cuenta que cuando prenden licuadoras o algo semejante se activa hise un pequeños control con su circuito controlo una lampara con un triac. saludos espero pueda responder mi duda y muchas grasias de antemano

    ResponderBorrar