Autor Tema: Comunicación entre pics con módulos RF AUREL.  (Leído 4775 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado wannaky

  • PIC12
  • **
  • Mensajes: 92
Comunicación entre pics con módulos RF AUREL.
« en: 25 de Mayo de 2011, 12:08:43 »
Buenas... he visto que en el foro ya se ha hablado de estos módulos, pero son hilos muy viejos y posiblemente tengan mucho polvo encima ya... jejeje...

he creado este tema para ver si me podéis echar una mano con unas placas que estoy montando... se trata de comunicar dos pics mediante estos módulos de RF, TX: http://www.selectronic.fr/includes_selectronic/pdf/AUREL/TX-SAWSZ_UM.PDF y RX: http://www.proghard.com/doc/datasheet/aurelBC-NBK.pdf.

Os comento lo que he estado haciendo:
He montado las dos placas y primero las he comunicado entre ellas a través de la UART conectándoles RX-TX TX-RX directamente con cables y funcionan correctamente  :-/ :-/ :-/
Y ahora viene lo malo... al instalar los módulos ya no hace nada :( :( :(   he seguido las especificaciones del fabricante, he variado las velocidades de transmisión, ahora estoy probando con 300bps y no funciona, le he puesto los condensadores de desacople como indica.

aquí está el código del emisor:
Envía los caracteres "H" "O" "L" "A" por el puerto serie al pulsar un pulsador.
Código: [Seleccionar]
//Codigo del TX con módulo AUREL
#include "16F877.h"

//Configuramos el reloj a 4MHz
#use delay(clock=4000000)
#include "lcd.c"

//Configuramos los parámetros del puerto RS-232
#use rs232(baud=300,parity=N,bits=8,stop=1,xmit=PIN_C6,rcv=PIN_C7)

#byte porta=0x05
#byte portb=0x06
#byte portc=0x07
#byte portd=0x08

//Configuramos los fuses adecuados
#fuses NOWDT, XT, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG

void borrar_lcd()
{
   lcd_gotoxy(1,1);
   printf(lcd_putc,"                ");
   lcd_gotoxy(1,2);
   printf(lcd_putc,"                ");
   lcd_gotoxy(1,1);
}


//Programa principal
void main(void)
{
   set_tris_b(0b01111111); //Configuramos el puerto B de entrada de B0-B6
   set_tris_a(0b11111111);

   lcd_init();
   printf(lcd_putc,"   MODULO TX    ");
   
   while(TRUE)
   {
      if(!bit_test(porta,0))
      {
      borrar_lcd();
      while(!bit_test(porta,0)){}
      printf("H");
      delay_ms(500);
      printf("O");
      delay_ms(500);
      printf("L");
      delay_ms(500);
      printf("A");
      delay_ms(500);
      lcd_gotoxy(1,1);
      printf(lcd_putc,"H O L A");
      delay_ms(1000);
      }
   }
}

y aquí el código del receptor:
Cuando se activa la interrupción de recepción del puerto serie, mira a ver si corresponde con las letras "H" "O" "L" "A", y las va mostrando por el LCD.
Código: [Seleccionar]
/*
Codigo del RX con módulo AUREL

Enviamos un caracter por el puerto serie y lo muestra por el LCD.
Programa para testear la comunicación entre módulos inalámbricos AUREL

*/

#include "16F877.h"

//Configuramos el reloj a 4MHz
#use delay(clock=4000000)
#include "lcd.c"

//Configuramos los parámetros del puerto RS-232
#use rs232(baud=300,parity=N,bits=8,stop=1,xmit=PIN_C6,rcv=PIN_C7)

#byte porta=0x05
#byte portb=0x06
#byte portc=0x07
#byte portd=0x08

//Configuramos los fuses adecuados
#fuses NOWDT, XT, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOCPD, NOWRT, NODEBUG

char dato=32,dato1=32,dato2=32,dato3=32,dato4=32;

#int_RDA
void RDA_isr(void)
{
   if(kbhit())
   {
      dato=getc();
   }
}

void borrar_lcd()
{
   lcd_gotoxy(1,1);
   printf(lcd_putc,"                ");
   lcd_gotoxy(1,2);
   printf(lcd_putc,"                ");
   lcd_gotoxy(1,1);
}

void main()
{
   lcd_init();
   enable_interrupts(INT_RDA);
   enable_interrupts(GLOBAL);

   printf(lcd_putc,"   MODULO TX    ");
   delay_ms(500);
   borrar_lcd();
   
   while(TRUE)
   {
         if(dato=='H')
         {
            dato1=dato;
         }
         if(dato=='O')
         {
            dato2=dato;
         }
         if(dato=='L')
         {
            dato3=dato;
         }
         if(dato=='A')
         {
            dato4=dato;
         }
      lcd_gotoxy(1,1);
      printf(lcd_putc,"%c %c %c %c", dato1,dato2,dato3,dato4);
   }
}


yo supongo que es problema de ruidos, pero en el código ya desecho los datos que no me interesan, y dudo que tooooodos los bytes que me llegan estén mal.
También he estado leyendo que es aconsejable una codificación manchester, pero de todas formas algo tendría que estar recibiendo. aahhh, y he probado con dos módulos distintos y me sucede lo mismo, por lo que descarto que sean los módulos.

Gracias y un saludo...

PD: otra cosa, de vez en cuando van saliendo los caracteres por pantalla en el receptor sin yo haber pulsado el botón de enviar datos, como si por casualidad el ruido que le llega fuese justamente el dato que espera...  :shock: :shock: :shock:

Desconectado NoSepComo

  • PIC18
  • ****
  • Mensajes: 305
Re: Comunicación entre pics con módulos RF AUREL.
« Respuesta #1 en: 25 de Mayo de 2011, 13:00:43 »
Sin haber leído mucho el código que pusiste, si sospechas de ruido haz un filtrado de las alimentaciones, sobre todo si usas reguladores o trabajas con tensiones "grandes" en algún punto. Te recomiendo colocar algún condensador (pequeñito) en las alimentaciones.
El tema de RF es un poco "guarro", enseguida se mete de todo y la SNR deja de ser aceptable en los transceptores, con lo cual no decodifican bien. También depende del protocolo de transmisión, aunque como he visto usas simplemente el RS232, a lo mejor el fabricante dice algo de eso.
Siento no serte de más ayuda por ahora, tengo pensado hacer algo de esto, si sigues sin resolverlo para entonces quizá nos podamos ayudar.
Saludos!

Desconectado solapower

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 209
Re: Comunicación entre pics con módulos RF AUREL.
« Respuesta #2 en: 25 de Mayo de 2011, 13:17:55 »
Si puedes disponer de un osciloscopio,conectalo al pin RX a ver que tienes.
hace tiempo anduve trasteando con estos módulos: http://www.aurelwireless.com/rf-wireless-modules/product-info.asp?id=315 en un proyecto domótico en el que estoi trabajando y la verdad es que la experiencia fué desalentadora. Como a tí directo RS232 funciona de maravilla, pero con el modulito conectado no había manera
de que se entendieran (mi comunicación era bidireccional), no utilizo interrupción por Rx ,pero ese no es el problema, conectando un osciloscopio ví que se estaban recibiendo constantemente señales aún cuando mi maestro no estuviera emitiendo. Después conecté un analizador lógico y, ya ni te cuento, se veían un tren de bytes evidentemente irreconocibles por mi aplicación.En fin espero no desanimarte pero creo que la RF está muy saturada de señales.

Saludos

Desconectado wannaky

  • PIC12
  • **
  • Mensajes: 92
Re: Comunicación entre pics con módulos RF AUREL.
« Respuesta #3 en: 26 de Mayo de 2011, 07:40:33 »
Buenas, grácias a los dos...

esta tarde miraré a ver que puedo hacer, estoy seguro que es tema de ruidos, ayer le puse unos condensadores para filtrado, pero eran MKT, porque no tenía cerámicos... esta tarde le probaré con los que me indica el datasheet y filtraré todo lo que pueda las alimentaciones.

ya os contaré...

un saludo...

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Comunicación entre pics con módulos RF AUREL.
« Respuesta #4 en: 26 de Mayo de 2011, 09:54:54 »
Hola.

Esos módulos RF siempre reciben ruido cuando el módulo de transmisión no transmite nada, así que durante esos 500mS el receptor va a recibir bytes aleatorios. Al entrar a la interrupción es bueno que asignes un flag para dar aviso de esa interrupción y procesarla en el programa principal.

Si te funcionó cableado, debe funcionarte con los módulos de RF, solo que debes tener en cuenta que el módulo receptor va a recibir muchos bytes aleatorios mientras el módulo transmisor no envíe nada, por ello, la rutina de recepción debe ser de tal manera que filtre el string que estas enviando.

Hice algo así hace un tiempo:


Enviaba una clave, por ejemplo : "ClaveSecreta"  :mrgreen: y en el código del receptor evaluaba que el string recibido sea ese justamente. Para evaluar el string usaba funciones como strcmp con un if

Saludos



El papel lo aguanta todo

Desconectado wannaky

  • PIC12
  • **
  • Mensajes: 92
Re: Comunicación entre pics con módulos RF AUREL.
« Respuesta #5 en: 31 de Mayo de 2011, 07:54:17 »
Bueno, ya he conseguido comunicar con los módulos... el problema era el ruido... al estar probándolo con montajes en protoboard y con cables que parecían lianas   :mrgreen: :mrgreen: y cogía mucho ruido, lo que he hecho es hacer unas pequeñas placas donde soldar los módulos RF y listo  :-/ :-/ :-/ :-/

va bastante bien, incluso sin utilizar una codificación manchester, que para estos módulos es la adecuada por el nivel medio que tiene.

un saludo y gracias a todos...    ;-) ;-) ;-)


 

anything