Autor Tema: Problemas con Xbee en envio de datos.  (Leído 6881 veces)

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

Desconectado Enner

  • PIC10
  • *
  • Mensajes: 47
Problemas con Xbee en envio de datos.
« en: 25 de Abril de 2012, 17:29:17 »
Hey Hola, atodos.

Me decidi a entrar en el mundillo de los Xbee ya que también tenia ganas hace tiempo para experimentar y probar estos modulos.

Ayer recibi dos modulos Xbee serie Pro S2. y una placa Xbee USB Explorer.

Mi idea es que un Xbee este conectado a un PIC y el otro modulo este conectado al PC con la placa USB explorer que es la que tiene conversor RS232 a USB. Ambas tienen que enviar y recibir datos.

El problema es que del PIC es como si no enviase nada al Xbee ya que en la consola (Serial COM) que biene integrada con el programa ProtoID. En el apto. “Recive" no sale Nada.

Pero en cambio puedo recibir datos de la consola Proton IDE, a la pantalla LCD del Micro. Si envio el número 1 en la pantalla del LCD sale 89. Y se enciende el led del Xbee, pero no cuando envio desde el PIC . (Aunque el Numero 1 en ASCII es 1 no 89, no se como lo interpretará…)

Utilizando el programa X-CTU,  el Xbee que va conectado al PC le puse con la “Funcion SET” (ZNET 2.5 Router/END DEVICE AT)  borrando la configuración original de este. Y esta es la nueva Configuración.

Los parámetros Networking:

(0)CH-Operating Chanel

(FFFF) OP-Operating PAN ID

(1111) ID – PAN ID

(1FFE) SC – Scan Channel

(3) SD – Scan Duration

(FF) NJ – Node Join Time

(0) JV – Channel Verification

Los Parametros Addresing:

(FFFE) MY – 16 Bit Network Address

(13A200) SH – Serial Number High

(407043AD) SL- Serial Number Low

(13A200) DH - Destination Address High

(407047A4) DL – Destination Address Low

() NI – Node Indetifier

Serial Interfacing:

(3) BD Baud Rate =9600

 

Ahora el XBEE que va conectado al PIC  le puse con la “Funcion SET” (ZNET 2.5 COORDINATOR AT)  borrando la configuración original de este. Y esta es la nueva Configuración.

Los parámetros Networking:

(11)CH-Operating Chanel

(1111) OP-Operating PAN ID

(1111) ID – PAN ID

(1FFE) SC – Scan Channel

(3) SD – Scan Duration

(FF) NJ – Node Join Time

Los Parametros Addresing:

(0) MY – 16 Bit Network Address

(13A200) SH – Serial Number High

(407047A4) SL- Serial Number Low

(13A200) DH - Destination Address High

(407043AD) DL – Destination Address Low

(COM5) NI – Node Indetifier

Serial Interfacing:

(3) BD Baud Rate =9600

 

Una Vez hecho todo esto. fui la pestalla “Terminal” de X-CTU” y escribi +++

Salio OK todo correcto en amos Modulos.

Os agradeceria vuestra ayuda Haber donde puede estar el error o donde me he podido equivocar.

 

El programa hecho con Proton Compiler es el siguiente:

--------------------------------------------------------------------------- --------------------------------------

 

Device= 18F2550              'SELECCIONO PIC

Declare Xtal 20                  'Fija el Cristal a 20Mhz

 

'Selección de los Pines LCD  ------------------------------------------------

Declare LCD_Type ALPHA         'Declara el tipo de pantalla en alphanumerico

Declare LCD_Lines 1                'LCD 1,2o4 Filas en este caso es de 1

Declare LCD_Interface 4          'LCD a 4 Bits

Declare LCD_DTPort PORTB     'Definimos el Bus de Puerto LCD

Declare LCD_DTPin PORTB.4    'Empezamos desde el puerto B4 hasta el B7

Declare LCD_RSPin PORTB.3    'Puerto B3 Pin RS LCD   

Declare LCD_ENPin PORTB.2    'Puerto B2 Pin E  LCD

'Configuracion serial XBEE  ------------------------------------------------

DeclareHserial_Parity= Odd     'Desabilito la paridad

Declare Hserial_Clear=On       'Overflof del buffer

Declare Hserial_Baud 9600      'Fijo la velocidad del puerto

Declare Rsout_Pin= PORTC.6  'PuertoC.6 como Salida de datos

Declare Rsin_Pin= PORTC.7   'PuertoC.7 como Entrada de Datos

Declare Rsout_Mode= TRUE    'Habilito Salida de datos

Declare Rsin_Mode= TRUE      'Habilito Entrada de Datos

Dim  X As Byte                      'Declaro X como byte

SymbolBackLight = PORTA.1   'Luz Backligh de la LCD

 

TXSTA.5=1                    'Habilitar la recepcion

RCSTA.7=1                    'Habilitar la comunicacion asincrona o sincrona

RCSTA.4=1

TRISC =%10000111       'Configuro In/Out Puerto C

TRISA =%00000001       'Configuro In/Out Puerto A

HighBackLight                'Habilito el BackLight LCD

Print$FE,1,"Xbee Pruebas"

DelayMS1500                 'Retardo

Cls                                'Borra Pantalla LCD

 

\'///////////////////////////////////////////////////////////////////////// /////////////

'///////  PROGRAMA PRINCIPAL

\'///////////////////////////////////////////////////////////////////////// /////////////

INI:                               'Etiqueta

For X = 0 To 255

   RSOut X                          'Envia los valores X a la PC

   Print$FE,1,"Dato: ",Dec X   'Escribe los valores X en la LCD

   DelayMS 200                  'Retardo 200ms

Next X

GoTo INI

End

 

Saludos y Gracias

Desconectado lopgar71

  • PIC10
  • *
  • Mensajes: 22
Re: Problemas con Xbee en envio de datos.
« Respuesta #1 en: 10 de Mayo de 2012, 14:59:03 »
Ensaya bajando la velocidad de transmisión a 1200.

saludos!

Desconectado Enner

  • PIC10
  • *
  • Mensajes: 47
Re: Problemas con Xbee en envio de datos.
« Respuesta #2 en: 22 de Mayo de 2012, 08:34:43 »
Hola,
Perdonar por la tardanza pero estuve de viaje y no pude probar nada.
Por fin los XBEE se comunican entre ellos pero....

Me gustaria saber por que cuando transmito del XBEE que esta conectado al PIC 18F2550, a la PC que esta conectado con otro XBEE, me salen en la consola del PC códigos raros en vez de lo que realmente quiero transmitir.

 Es decir si yo transmito esto del PIC al PC: (Teoria)
 7 x 1= 7
 7 x 2= 14
 "
 "
 "
 7 x 10= 70

 En la Consola del PC visualizo esto: (Practica)

 ãÿCýýCý˜ãýý˜Ãýcý˜ýŽîãÿCýýý˜cýý˜Ãýcý˜ýŽîãÿCýýCý˜ãýý ˜Ãýcý˜ýŽîãÿCý˜ýÀÿ˜ýý˜Ãýcý



 ------------------------------------------------------------
 Aquí os dejo el código:
 -------------------------------------------------------------

 Device = 18F2550
 Declare Xtal 20

 ALL_DIGITAL true

 Dim x As Byte

 Hserial_TXSTA = %100000    'Tranmision en MODO ASINCRÓNICO
 HSERIAL_BAUD 1200            'Fijo Baud rate
 Rsout_Pin = PORTC.6            'Pin Salida Datos (TX-Out)
 Rsout_Mode = 0
 Hserial_Clear = On                 'LIMPIAMOS EL BUFFER DESPUÉS DE CADA RECEPCIÓN

 INI:


 For x=1 To 10
 HRSOut "7 X ", Dec x, "= ", Dec x * 7 , 13
 Next x

 Goto INI
 END

Gracias
Saludos.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Problemas con Xbee en envio de datos.
« Respuesta #3 en: 22 de Mayo de 2012, 15:02:22 »
Me huele a un tema de baudios, ¿el Xbee está transmitiendo a la misma velocidad que el PC espera los datos?

Desconectado Enner

  • PIC10
  • *
  • Mensajes: 47
Re: Problemas con Xbee en envio de datos.
« Respuesta #4 en: 22 de Mayo de 2012, 18:58:09 »
Hola Nocturno,
Al decirme eso fui a propiedades del PC, Administrador de dispositivos>Puertos y a COM5 que es donde tengo conectado el XBEE con una tarjeta explorer USB y lo tenia a 9600, lo cambie y puse 1200 tal como tengo los dos XBEE.
pero continua haciendo lo mismo.

Ejecute el programa X-CTU haber que es lo que veia en su consula y no vi esos simbolos (ãÿCýýCý˜ãýý˜Ãýcý˜ýŽîãÿCýýý˜cýý˜), si no vi esto otro (..C..........C.......C..........C........C...) etc... pero no lo que en teoria tiene que verse.

Los fuses:

Device =  18F2550          'SELECCIONO PIC
 Declare Xtal 20              'Fija el Cristal a 20Mhz
 Config_Start                  'Fuses para el programador
   FOSC=HSPLL_HS         'Seleciona el tipo de Oscilador (Externo o Interno y la clase: XT,HS etc...)
   PLLDIV=5                    'Pone PPLDIV a 5 = 20MHZ (PLL Prescaler Selection bits)
   CPUDIV=OSC4_PLL6    'Pone el CPUDIV a 4      (CPU System Clock Postscaler)   OSC3_PLL4 '
   USBDIV=2                   'USBPLL=PLL / USB Clock Selection bit-USB clock source comes from the 96 MHz PLL divided by 2
   BOR=OFF                     'Boden a 0
   PWRT=On
   WDT=OFF
   LVP=OFF
   MCLRE=OFF
 Config_End

Gracias...
« Última modificación: 23 de Mayo de 2012, 07:23:43 por Enner »

Desconectado Enner

  • PIC10
  • *
  • Mensajes: 47
Re: Problemas con Xbee en envio de datos.
« Respuesta #5 en: 25 de Mayo de 2012, 06:27:33 »
Otra duda que tengo es... No será porculpa de la tarjeta (Xbee mini-USB adapter) que pasa de RS a USB.
Aunque tengo dos (Xbee mini-USB adapter) para cada PC, Los XBEE cuando estan conectados a varios PC se comunican perfectamente.

Pero cuando hago las pruebas del XBEE conectado al PIC y el otro a la PC... bueno ya sabeis...

Esta es la placa Mini-USB adapter: http://www.ebay.es/itm/ws/eBayISAPI.dll?ViewItem&item=280845443252&ssPageName=ADME:L:OU:ES:1123

Pero ya no se que hacer y que probar...

Saludos.

Desconectado Enner

  • PIC10
  • *
  • Mensajes: 47
Re: Problemas con Xbee en envio de datos.
« Respuesta #6 en: 25 de Mayo de 2012, 19:57:08 »
Hola de nuevo..

Esta tarde he probado otra cosa , he quitado el modulo XBEE de la tarjeta USB Adpater, y he conectado la salida del PIC directamente a la entrada de la tarjeta USB adpater.
Y sigue sin funcionar, sigo viendo en la consola caracteres raros.

Saludos

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: Problemas con Xbee en envio de datos.
« Respuesta #7 en: 26 de Mayo de 2012, 07:33:12 »
No se si ya se ha hecho o dicho en el hilo, pero por lo que se empieza cuando se tienen problemas es unir el TX con el Rx y probando en el hyperterminal del Windows si se reciben las propias pulsaciones de tecla generadas con el teclado del ordenador, por supuesto con la opción eco del hyperterminal desactivada. Esto es solo para probar que el adaptador serie está funcionando.
Saludos desde Granada, España.

Desconectado Enner

  • PIC10
  • *
  • Mensajes: 47
Re: Problemas con Xbee en envio de datos.
« Respuesta #8 en: 03 de Junio de 2012, 03:28:36 »
Bueno Ya funciona.

 Despues de varias semanas de pruebas encontré el fallo.

 Para aquellos que tienen el mismo problema semejante a los míos y aun no lo han resuelto y se tiran de los pelos. Espero que esto os ayude.

 El lenguaje de programación que empleo es el Proton Basic.

 Los caracteres raros que veía en la pantalla en la consola de comunicación que no tenían nada que ver con los datos que enviaba a través del XBEE al Xbee que estaba conectado a la PC, eran por culpa de la configuración en los fuses del micro y alguna desentonación en el código del programa. Al final tuve que ponerme de codos en la mesa y leer el datasheet del PIC . Os lo recomiendo cuando se ha probado todo y el circuito esta bien montado etc…
 Aprendí y vi que hay mucha gente en los foros que comenten el error en sus programas que mezclan comandos tipo Hardware y comandos de Software e inflan sus códigos de más. Esto pude dar error en la ejecución de código en el micro y que el programa no fluya como tal.
 También me fije que hay gente que en sus programas no tienen en cuenta los parámetros en los fuses y sus ajustes, cuando se trata al menos de la comunicación sea UART, USART,EUSART todo es lo mismo pero hay ciertas mejoras o XTAL.

 Cuando queremos desarrollar un proyecto con ciertas características y ahorrar tiempo vamos haber si hay algún ejemplo que se aproxime al que tenemos en mente y nos dirigimos a los foros o a la web y nos encontramos miles y miles, no habrá ningún tipo de problema si el diseñador da fe de que ese circuito funciona con ese código. Si da la casualidad que el hardware que utiliza es el que necesitamos y es justamente ese pues adelante y WALA!! funciona.
 Pero que pasa si en ese proyecto que encontramos el hardware que emplea es pequeño y el micro tiene pocas I/O etc… o no es el que teníamos en mente y necesitamos un micro más potente. Pues nada lo cambiamos y alteramos un poco el código a nuestras necesidades etc… y a veces funciona o no!!.

 En mi caso no funciono ya que había cierta prisa en hacer y acabar el proyecto y no vi algunas cosas obvias, también me enfrentaba por primera vez a los XBEE y comunicaciones inalámbricas (todo un reto) pero en cierto modo el Hardware esta bien montado y el código en cierta manera estaba correcto, a veces los pequeños detalles no se aprecian.
 Aprendí que hay una cierta relación entre la CPUDIV (Sistema de reloj de la CPU Postscaler), USBDIV (Reloj USB Selección de bits) y el FOSC, si sobretodo es un reloj externo y no *interno que llevan algunos micros. Bueno pues el resultado de todo esto más las declaraciones en el código del programa pueden hacernos travesuras ya que los tiempos precisos y el sincronismo entre ellos pierden relación.

 Es muy Importante tener en cuenta esta relación ya que cuando se emplea un oscilador (Xtal) externo seguramente esos parámetros haya que modificarlos para que todas las operaciones que tiene que hacer el Micro y el sincronismo con periféricos externos se han correctos.

 También encontré muchos errores por la web en las declaraciones y en el cálculo de SPBRG (Caudal Baud Rate),la relación que hay en la velocidad del Micro y la de comunicación serial en BPS (Baudios por segundos) y la configuración optima de los registros (RCSTA, TXSTA).

TXSTA: TRANSMISION (REGISTRO DE CONTROL) OUT
RCSTA: RECEPCION (REGISTRO DE CONTROL) IN
BAUDCON: VELOCIDAD DE REGISTRO DE CONTROL (NO Disponible en Proton Pero hay otros Comandos).

 Todas estas relaciones y repito!! son muy importantes para que todo vaya en armonía (sincronizidad) y evitemos sorpresas. En el DataSheet del micro en el apto Comunicación Serial hay una formula para el ajuste de SPBRG y las características del puerto de ese micro especifico para tenerlo en cuenta a la hora de escribir el código y emplear comandos adecuados que se adapten al hardware y sacar mas provecho al hardware a través del software.
 También nos encontramos tablas calculadas con diferentes ejemplos, acordaros de (SYNC,BRGH y BRG16) y si es modo ASYNCHRONOUS o SYNCHRONOUS.

Para el cálculo del SPBRG: (ejemplo)
 Para un FOSC de 16 MHz, velocidad de transmisión de 9600, Modo Asíncronos, 8-bit BRG:
 Caudal Baud Rate = FOSC/(64 ([SPBRGH:SPBRG] + 1))
 Ejemplo para SPBRGH:SPBRG:
 X = ((FOSC/Desired Baud Rate)/64) – 1
 = ((16000000/9600)/64) – 1
 = [25.042] = 25
 Tasa calculada en baudios = 16000000/(64 (25 + 1))
 = 9615
 Error = (Calculo Baud Rate - velocidad de transmisión deseada) / velocidad de transmisión deseada
 = (9615 – 9600)/9600 = 0.16%

 Espero que os haya ayudado…
 Saludos.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Problemas con Xbee en envio de datos.
« Respuesta #9 en: 03 de Junio de 2012, 03:37:26 »
Me alegro que lo hayas resuelto.

Y esa conclusión que has sacado sobre la necesidad de leer el datasheet del micro es muy útil, ¡especialmente si lo lees antes de empezar!  :D

Desconectado Enner

  • PIC10
  • *
  • Mensajes: 47
Re: Problemas con Xbee en envio de datos.
« Respuesta #10 en: 03 de Junio de 2012, 04:58:46 »
Como todos sabemos los datasheet son parte fundamental de lectura para saber las características de cualquier componente electrónico (La Biblia de los componentes).

Si es verdad hay que leerlos antes de hacer cualquier proyecto para ir seleccionando los componentes que irán en el diseño y si estos cumplirán con nuestras expectativas a la hora final.
Pero el datasheet es un muy buen amigo como hojas de consultas. A veces creemos que los PIC aunque el fabricante intenta mantener compatibilidades entre estos,

Nos creemos que lo sabemos todo, y si hay ciertas cosas que se nos escapan de las manos (somos humanos!!) y nos equivocamos.

Pero para eso están para consultar cuando tenemos fallos en el proyecto o en el código y algo esta pasando de una forma anormal y los cientos de páginas que puede llevar a tener un datasheet allá encontraremos seguro la respuesta.

Reflexión:
Todos somos humanos y nos  equivocamos. Lo importante es saber reconocer los errores, cosa que no todos hacen para poder enderezarlos, y ayudar a otras personas que no los cometan.

Saludos.



Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Problemas con Xbee en envio de datos.
« Respuesta #11 en: 03 de Junio de 2012, 06:08:53 »
Desde luego. Sabias palabras


 

anything