Autor Tema: Comunicación inalámbrica entre PICs a 434MHz.  (Leído 52219 veces)

Ariel

  • Global Moderator
  • dsPIC
  • ****
  • Mensajes: 10753
    • uControl
Comunicación inalámbrica entre PICs a 434MHz.
« en: Enero 25, 2010, 11:50:56 am »
Comunicación inalámbrica entre PICs a 434MHz.

Introducción
Para algunos de los proyectos de control se hace necesaria la comunicación entre microcontroladores de forma inalámbrica. Esta es una tarea relativamente sencilla si se hace con las herramientas adecuadas, tales como un buen par de radios, un buen compilador de micros, y un mejor algoritmo para el tráfico de la información.


Módulo LAIPAC TLP434A

En este proyecto se puede aprender de forma sencilla como establecer una comunicación inalámbrica entre dos microcontroladores, enviando un cuarteto de bits, que posteriormente se puede ver en el micro receptor. La implementación del sistema esta desarrollado con un par de micros PIC16F628A, y dos módulos de radio.


Método
La clave fundamental de este proyecto esta en el medio de transmisión que se utilice. En el comercio se pueden conseguir una gran gama de radios de trasmisión y recepción, con diferentes características como: costo, alcance, formas de modulación, y complejidad en el manejo entre otras.

Para este proyecto trabajaremos con un par de radios muy sencillos de la compañía canadiense LAIPAC que produce diferentes soluciones en el campo de comunicaciones inalámbricas. Se trata de un par de radios de los cuales uno es transmisor y el otro es receptor.

Las referencias son TLP434A y RLP434A, que son el transmisor y el receptor respectivamente. Este juego de radios trabaja una señal portadora de 434MHz y modulan en ASK, de tal manera que pueden transmitir valores lógicos 1 y 0.

La modulación ASK es similar a la modulación AM de la radio comercial de la banda de AM. En la modulación ASK un 0 lógico se representa con la ausencia de la señal portadora y un 1 lógico con la presencia de esta.

Los módulos de radio que se utilizan en este proyecto tienen un alcance de 100 metros si tienen una adecuada instalación de las antenas. La modulación ASK al igual que la modulación AM es supremamente propensa a las interferencias y al ruido. Por esta razón es importante implementar dentro de la programación del PIC una rutina que permita detectar cuando un dato ha llegado con errores para que sea descartado, ya que los módulos de radio no incluyen ningún método de software ni hardware para la detección de estos errores.

Los módulos de radio tienen la capacidad de transmitir a una velocidad de 9600 bits por segundo y de recibir a una velocidad de 4800 bits por segundo pero estos son los casos extremos de los módulos. Para establecer una comunicación más confiable, trabajaremos a una velocidad de 2400 bits por segundo.

La instalación de estos módulos de radio es muy simple, se utiliza dos pines para alimentar el modulo, uno con Vcc y otro con GND, un pin para la antena y otro para la entrada o salida de datos de forma serial.

El modulo transmisor se puede alimentar con una tensión de entre 3V y 12V. La potencia de transmisión será mayor a mayor voltaje. El modulo receptor solo se puede alimentar con 5V.


Implementación
Para establecer la comunicación entre los dos PIC trabajamos con el modulo USART de cada uno de los micros. Esto implica que uno de ellos será el transmisor y el otro el receptor.Estos micros los llamaremos, de aqui en adelante, TX y RX. En el micro TX se evalúan constantemente cuatro pines, en los cuales están instalados sendos pulsadores que son los cuatro bits de información que deseamos transmitir. Esta información es empaquetada y transmitida serialmente por la USART.


Aspecto del módulo RLP434A.

Para evitar los errores en los datos de llegada, es necesario implementar algún método que garantice la veracidad de la información. Para esto existen formas complejas de control de errores pero para este proyecto implementaremos un método muy sencillo conocido como redundancia, el cual consiste en transmitir repetidamente el mismo dato y verificar si el dato que llega en el micro RX es igual, para determinar que el dato no tiene errores.

En el micro RX están instalados cuatro LEDs que permiten ver el dato que llega de manera inalámbrica.


Circuitos
A continuación están los esquemático del proyecto:


Circuito del emisor (TX).


Circuito del receptor (RX).


Software
Este es el código fuente en C de los micros TX y RX. El compilador utilizado es el CCS PICC de Hi-Tech, pero puede ser emigrado a cualquier otro compilador que trabaje en C:

Programa del MICRO TX

Código: [Seleccionar]
#include <pic.h>

void TxSerial( char d_ ) // Función para transmitir un dato de forma serial
{
         TXREG = d_;      
         while( !TRMT );
}

void InicioSerial( void ) // Función d inicio de la USART
{
         TRISB1 = 1;
         TRISB2 = 0;
         TXSTA = 0x24;
         RCSTA = 0x90;
         BRGH = 1;      // Configuración de la USART a 2400 bits por segundo  
         SPBRG = 103;
}

void main( void ) // Funcion principal
{
        char DATO;
        INTCON = 0;    // Configuración de las interrupciones
        TRISB = 0xFF; // Se configuran los pines de los leds como salidas
        RBPU = 0; // Se activan las resistencias PULL-UP
        InicioSerial(); // Función d inicio de la USART
        while(1)
        {
DATO = (~PORTB>>4)&15; // Se guarda en la variable DATO el valor de los 4  pulsadores
TxSerial( 170 ); // Se transmite una bandera de inicio con la secuencia de bits: 10101010
TxSerial( DATO ); // Se transmite el dato de manera redundante. 8 veces
TxSerial( DATO );
TxSerial( DATO );
TxSerial( DATO );
TxSerial( DATO );
TxSerial( DATO );
TxSerial( DATO );
TxSerial( DATO );
        }
}

 __CONFIG( 0x3F09 );

Programa del MICRO RX

Código: [Seleccionar]
#include <pic.h>

// Declaración de variables de trabajo
char n=0;
char Trama[4]={1,2,3,4};
char DATO;

void InicioSerial( void )// Función para la configuración de la USART.
{
         TRISB1 = 1;
         TRISB2 = 0;
         TXSTA = 0x24;
         RCSTA = 0x90;
         BRGH = 1;
         SPBRG = 103;
}

void interrupt VET( void ) // Vector de interrupciones.
{
     if( RCIF ) //Interrupción serial
     {
DATO = RCREG; //Lectura del buffer de entrada serial
switch( DATO ) // Se evalúa el dato que llega
{
case 170:  for( n=0; n<4; n++ )Trama[n]=n; n=0; break; // bandera de entrada.
                       // Se guardan los datos de entrada en el búfer de la trama.
default :  Trama[n++]=DATO;
                       // Se evalua cuanda a llega el cuarto byte de la trama.
                           if( n==4 )
{
                              // Se comparan los datos 1,2,3 del bufer de la trama
     if( Trama[1]==Trama[2] )

                                     if( Trama[2]==Trama[3] )//y verifica que sean iguales.  
                                         {
                                         // cuando el dato es correcto se muestra por
                                         // el puerto b en los LEDs
                                     PORTB = Trama[1]*16;
 for( n=0; n<8; n++ )Trama[n]=n;
                                         }
     n=4;
                                }
         }
         RCIF=0;
     }
}

void main( void ) // Funcion principal.
{
        INTCON = 0; // Se apagan todas las interrupciones.
        PEIE=1; // Se activan las interrupciones periféricas.
        RCIE=1; RCIF=0; // Se activan las interrupciones por recepción serial.
        GIE = 1; // Se activan las interrupciones de forma general.
        TRISB = 0x0F; // Se configuran los pines b como entrada y salida.
        PORTB = 0; // Se apagan los pines del puerto b
        InicioSerial(); // Se inicializa la USART.
        while(1); // bucle infinito para la espera de interrupciones.
}


__CONFIG( 0x3F09 );


Autor: Juan Ricardo Clavijo Mendoza (jrclavijo@hotmail.com)
« Última modificación: Enero 25, 2010, 11:53:07 am por Ariel »
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

sebastiangt

  • PIC10F
  • *
  • Mensajes: 1
Re: Comunicación inalámbrica entre PICs a 434MHz.
« Respuesta #1 en: Enero 27, 2010, 08:02:16 pm »
hola me interesa mucho el tema, aunque recien comienzo con esto de los pics , mi idea a futuro es poder comunicar una pc mediante pics a un discplay lcd tipo calculadora y traer algunos datos de la base del display a la pc

saludos

torres.electronico

  • PIC16F
  • ***
  • Mensajes: 766
  • ►ComodoroRivadavia◄ ►PATAGONIA◄ ►ARGENTINA◄
    • Escuela Electrotecnica Virtual
Re: Comunicación inalámbrica entre PICs a 434MHz.
« Respuesta #2 en: Febrero 21, 2010, 01:45:03 pm »
Ariel, recién termino de probar estos modulitos en un pcb experimental ... Arme un loop en el pcb para 434MHz y no funca a mas de 1/2 metro... le pongo un latigo de 8cm y me da 10 metros :bang:
:duda Le abre chujeado mucho con el calculo del diseño de la antena para pcb o estos modulos tienen que ir con alguna antena física concreta? los probastes? quiero sacarme la duda por que estoy escribiendo un articulo de comunicaciones para Ucontrol y como trabajo practico habia optado por armar un sencillo repetidor IR por RF.... que feo cuando de la teoria a la practica, no dan las cosas :cabron  
En la vida hay que ser una bolita de nervios, y no un boludo nervioso... Yo personalmente se por que se los digo...

el_vpi

  • Moderador
  • PIC18F
  • ******
  • Mensajes: 1348
Re: Comunicación inalámbrica entre PICs a 434MHz.
« Respuesta #3 en: Febrero 22, 2010, 08:49:55 am »
Hola torres.electronico, mirando muy rapido tu respuesta y sin mirar el transmisor, te diria que el latigo de 8 cm no sirve, deberias poner uno de 17 cm aproximadamente.
Con respecto al loop del impreso fijate que esten bien tomados los parametros del tipo de dielectrico, espesor, etc, etc.

Saludos, Daniel.

Ariel

  • Global Moderator
  • dsPIC
  • ****
  • Mensajes: 10753
    • uControl
Re: Comunicación inalámbrica entre PICs a 434MHz.
« Respuesta #4 en: Febrero 22, 2010, 09:48:39 am »
Ariel, recién termino de probar estos modulitos en un pcb experimental ... Arme un loop en el pcb para 434MHz y no funca a mas de 1/2 metro... le pongo un latigo de 8cm y me da 10 metros :bang:

En su momento Mario Sacco me dio el valor para el largo de la antena, que creo era -como dice el_vpi- de unos 17 cm.
La longitud de la antena se relaciona con la frecuencia del transmisor. Debe ser una fraccion entera de la longitud de onda, si mal no recuerdo. Sabiendo la frecuencia y la velocidad de la luz se puede sacar la cuenta :P......o preguntarle al que sabe!!! ja ja ja ja!
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

nachomanz

  • PIC12F
  • **
  • Mensajes: 160
Re: Comunicación inalámbrica entre PICs a 434MHz.
« Respuesta #5 en: Febrero 22, 2010, 09:53:31 am »
Hola Ariel,

En caso de se arma 1 receptor y 2 emisores, como se podria manejar la comunicaciones ?
Es decir supongamos 1 receptor, y 2 emisores, cada unos se identifica univocamente, llamemos A y B a los emisores y C el repcetor.
Si A y B envias seniales al mismo tiempo como las detecta C ?,  como las senales estan superpuestas para C es ruido?

gracias!!!
Saludos
Nacho

torres.electronico

  • PIC16F
  • ***
  • Mensajes: 766
  • ►ComodoroRivadavia◄ ►PATAGONIA◄ ►ARGENTINA◄
    • Escuela Electrotecnica Virtual
Re: Comunicación inalámbrica entre PICs a 434MHz.
« Respuesta #6 en: Febrero 22, 2010, 10:04:53 am »
Lo teorico esta todo bien, por que lo repase una y otra ves y no hay manera de chujearle....
Ayer le di masita para que tenga :bang: y me encontré con dos grandes errores... uno es como dice el_vpi, tengo algunos errores fisicos en el diseño del proto (muy chico el área de ground) y el otro en un condensador variable que recicle de otro trasto que estaba pinchado mal, giraba giraba y no pasaba nada :pared  
Opte por un loop impreso por que ami los cálculos para un látigo me estaba dando 17cm y pico y no me parecia productivo como para poner como ejemplo en el curso de comunicaciones.... Igualmente, el protoboard no me habia quedado de dimensiones para guardar en el bolsillo :baba
Ahora si que  se me pincho la idea... :titanic Alguien propone algo?
« Última modificación: Febrero 22, 2010, 10:09:46 am por torres.electronico »
En la vida hay que ser una bolita de nervios, y no un boludo nervioso... Yo personalmente se por que se los digo...

Ariel

  • Global Moderator
  • dsPIC
  • ****
  • Mensajes: 10753
    • uControl
Re: Comunicación inalámbrica entre PICs a 434MHz.
« Respuesta #7 en: Febrero 22, 2010, 10:41:25 am »
¿Que pasaria si la antena esta "enrollada" o doblada? ¿Será igualment efectiva?  :duda

Por que de esa manera se achicaria bastante el cacharro...  :P
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Felixls

  • Moderador
  • PIC24F
  • ******
  • Mensajes: 3125
    • Felixls
Re: Comunicación inalámbrica entre PICs a 434MHz.
« Respuesta #8 en: Febrero 22, 2010, 10:56:00 am »
Mucho no se del tema (tengo que estudiar más  :rolleyes:), pero lo poco que recuerdo haber leido es que el tamaño de las antenas es directamente proporcional al ancho de banda de la frecuencia de resonancia.
Para este bicho me parece que tendría que ser una antena de 20 o 30cm.

Felixls

  • Moderador
  • PIC24F
  • ******
  • Mensajes: 3125
    • Felixls
Re: Comunicación inalámbrica entre PICs a 434MHz.
« Respuesta #9 en: Febrero 22, 2010, 12:27:06 pm »
Gabriel, usaste esta fórmula?

Lr = 75/f (mhz)

donde 75 = 1/4 vel. luz. (299.792.458 m/s)

torres.electronico

  • PIC16F
  • ***
  • Mensajes: 766
  • ►ComodoroRivadavia◄ ►PATAGONIA◄ ►ARGENTINA◄
    • Escuela Electrotecnica Virtual
Re: Comunicación inalámbrica entre PICs a 434MHz.
« Respuesta #10 en: Febrero 22, 2010, 01:47:00 pm »
Gabi yo implemente en este caso, una que siempre me fue practica....
Es simple, si para el cuarto de onda tengo en 1000 MHz 7.5 centímetro, resolvemos la duda con una ecuación mas sencillo: 7500 divididos por la frecuencia (en MHz). osea, 7500/433 que nos da 17,32cm
Igualmente, esta fórmula es sólo un punto de arranque.
Ariel, si, se podría hacer una helicoidal, pero no tuve buenos resultados con otros proyectos....
Gabi, ya que te veo muy motivado, podrias ayudarme a terminar el articulo  >:D
« Última modificación: Febrero 22, 2010, 01:49:19 pm por torres.electronico »
En la vida hay que ser una bolita de nervios, y no un boludo nervioso... Yo personalmente se por que se los digo...

Has

  • PIC10F
  • *
  • Mensajes: 1
Re: Comunicación inalámbrica entre PICs a 434MHz.
« Respuesta #11 en: Abril 23, 2010, 04:37:43 pm »
Hola a todos!!!

Oigan soy nuevo aqui, les cuento que acabo de construir el hexapodo deAriel pero no tengo la parte electronica del bicho, su funcionamiento, baterias, chips nada!

Les agradeceria mucho si me lo mandan a mi mail o me responden.

Gracias!!!!!!!!!!

hassanjordania@hotmail.es

remramon2007

  • Amigo de uControl
  • PIC18F
  • ******
  • Mensajes: 1058
Re: Comunicación inalámbrica entre PICs a 434MHz.
« Respuesta #12 en: Abril 23, 2010, 04:58:00 pm »
Hola gente hace un tiempo me queme la cabeza con estos modulitos... jajaja
torres seguro tu problema esta en el soft al menos que hayas conectado algo mal... pero esto ultimo es raro ya que no tienen muchas cosas!! algo mas la pata de la antena dejala libre y soldale un cable de unos 17 cm de longitud, porque si no lei mal (lo hice por arriba) estas utilizando una protoboard? o una experimental y la antena la dibujaste sobre el impreso no? (ya veo que lei cualquier cosa) jajaja

con respecto a la antena si son unos 17 cm y es lo mismo enrollada que estirada y 17 cm serian un 1/4 de onda como lo explicaron mas arriba... igual te comento hace poco los volvi a probar y me funciono perfecto es mas le puse un taladro de mano al lado al receptor para meterle ruido y ver si fallba y no pasaba nada!! funcionaba perfecto!! y el alcanse era entre 12 y 15 mts!! no le pidas mas... esto lo hice probanco con una transmision serial y con cristales en cada pic!!

en protoboard se te puede estar metiendo ruido!!

un abrazo ramon

torres.electronico

  • PIC16F
  • ***
  • Mensajes: 766
  • ►ComodoroRivadavia◄ ►PATAGONIA◄ ►ARGENTINA◄
    • Escuela Electrotecnica Virtual
Re: Comunicación inalámbrica entre PICs a 434MHz.
« Respuesta #13 en: Abril 23, 2010, 09:36:32 pm »
 :smiley: A ver amigazo, vamos por partes...

Cita de: remramon2007
torres seguro tu problema esta en el soft al menos que hayas conectado algo mal...

mmmm, no, por que sino, las pruebas anteriores, nunca me hubiesen funcionado... osea, el error principal como mencione anteriormente, estaban en unas falencias del diseño de la placa mas un condensador varibale reciclado que no funcaba...

Cita de: remramon2007
con respecto a la antena si son unos 17 cm y es lo mismo enrollada que estirada y 17 cm serian un 1/4 de onda como lo explicaron mas arriba..

No, no es lo mismo... Por que segun el diseño de la antena, se obtienen distintos tipos de ganancias. No es lo mismo que haga una direccional, que arme un latigo, o una antena espiral. Como hay construcciones de material, segun la teoria, lo que mas se acomoda para este diseño es una antena loop, pero no me termina de convencer el tamaño...

Cita de: remramon2007
y el alcanse era entre 12 y 15 mts!!...
Tal cual, no le pude sacar mas de 12 metros con la loop, y 10 con el latigo :pared ... quiza, si consigo una yagui, voy a ver si puedo hacer un par de pruebas raras; el tema es que las yagui las puedo conseguir prestadas, pero no puedo soldar conectores por que tengo una de mis manos media cluecas; y vio que un conector debe estar bien soldado  :baba
Aclaro que probe con el latigo de 8 y el de 17 y me daba las misma distancia  :idiot:
Igualmente, ahora solo me queda el receptor, por que se me corto una patilla del TX y cuando quize soldarlo  ;D hice mas moco  por que se me levanto todo ;D
« Última modificación: Abril 23, 2010, 09:41:41 pm por torres.electronico »
En la vida hay que ser una bolita de nervios, y no un boludo nervioso... Yo personalmente se por que se los digo...

remramon2007

  • Amigo de uControl
  • PIC18F
  • ******
  • Mensajes: 1058
Re: Comunicación inalámbrica entre PICs a 434MHz.
« Respuesta #14 en: Abril 24, 2010, 08:33:22 am »
Hola torres no se para que utilizas un condensador varibale
es decir... si solo necesitas los modulos y una conexion (en mi caso a un pic)
yo utilise estos módulos para armar la parte del CR y el receptor para la alarma de un auto...
solo necesite colocar un cablecito de 17 cm en el receptor!! es verdad utilize un simple cable bien estirado... este cable lo podes reemplazar por un alambre de cobre de 1 mm mas o menos de diametro!! yo lo probe y me funciono!!

con respecto al CR no le coloque ningun tipo de antena!!, a mi montaje final!!

en las primeras pruebas "que tenia un problema en mi programa" si habia logrado mejorar el alcanse colocando un pedaso de cable de unos 17 cm de largo pero... digamos un llaverito de auto con un cable de 17 cm de largo... no combinaba!! jajaja, entonces lo reemplaze por un arrollamiento de alambre de cobre de unos 17 cm de largo y este tenia 1 cm de diametro interior creo.. o lo arrolle sobre una lapisera...
es verdad que si vamos a algo bien hecho "algo teorico" llevado a la practica este diseño tiene sus errores pero... en la practica se comporto bien!!

con respecto a una antena direccional... se me hacia complicado colocarla en el llaverito del CR  :laugh:
lo que te esta pasando puede ser lo mismo que me paso a mi!! coloca en la pata de salida de señal del Rx el osciloscopio y medi el ancho de los pulsos!! en mis primeros programas esos anchos me variaban a medida que me alejaba!! es decir se achicaban!! esto lo solucione utizando serin y serout (ya que lo desarrolle con picbasic... con una velocidad de envio de datos de 2400

bueno si lo solucionaste y no era nada de esto... esto seguramente le servira a otro compañero del foro!!

tambien te digo algo en mis primeros desarrollos logre llegar a tener 80 mts de alcanse pero.. despues en la practica se me disparaba de nada la alarma se le metia ruido o tenias que apuntar muy bien y segun la posicion que colocaba el llavero funcionaba o no... a lo que voy es que utilizando un buen sistema de antenas en una zona limpia de ruidos se pueden alcanzar esas distancias...

un abrazo ramon