Autor Tema: Creando una RED de XBee por RF usando PC.  (Leído 39332 veces)

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

Desconectado IAO

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 702
Re: Creando una RED de XBee por RF usando PC.
« Respuesta #15 en: 18 de Septiembre de 2007, 20:22:38 »
Holaaa:

Sr. PicMouse:
Yo ya soy mayor.  Pero me uno a lo que dice el Sr. Navaismo. Cuando sea grande quiero ser como usted. :-) :D


Buen proyecto me gusta. Lo felicito. De verdad.

Bye('_').
"No hay caminos para lograr la PAZ. La PAZ es el camino"... (Mahatma Gandhi).
Mentes Superiores discuten Ideas, Proyectos. Mentes Promedio discuten Acontecimientos y Sucesos. Mentes Pobres discuten sobre Personas.

Desconectado jdaniels

  • PIC10
  • *
  • Mensajes: 49
Re: Creando una RED de XBee por RF usando PC.
« Respuesta #16 en: 24 de Septiembre de 2007, 23:51:44 »
Saludos PICmouse, hace como un mes compre esos modulos RF exactamente los que tu tienes, la pregunta es como RAYOS! hiciste esa placa la compraste o que? yo mande hacer una porque sabes q ese modulo no cae en el protoboard, pero mayor complicacion en ninguna tienda tenian para hacer huecos pequeños (0.51mm) que es el grosor de los pines del modulo, y la tuya le veo asi como perfecta, por eso dime la compraste o eres un maestro haciendo baquelitas jaja

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2062
Re: Creando una RED de XBee por RF usando PC.
« Respuesta #17 en: 27 de Septiembre de 2007, 18:45:37 »
Hola idaniels!
Mira la plaquita para probar en el protoboard la puedes comprar aqui junto con las bases para poderlas conectar al proto.
http://www.sparkfun.com/commerce/product_info.php?products_id=8276

De momento las tienen agotadas pero espera unos dias que de seguro las vuelven a reponer!

Saludos

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2062
Re: Creando una RED de XBee por RF usando PC.
« Respuesta #18 en: 28 de Septiembre de 2007, 15:26:09 »
Hola idaniels!
Mira la plaquita para probar en el protoboard la puedes comprar en la red hay varias, reviza en el foro que alli hay algunos links.


Saludos

Desconectado Picavid

  • PIC12
  • **
  • Mensajes: 89
    • www.seguridomo.es
Re: Creando una RED de XBee por RF usando PC.
« Respuesta #19 en: 22 de Octubre de 2007, 00:48:25 »
Hola, cuando vi este proyecto, me gustó la idea de poder crear una comunicación bidireccional con estos módulos, y a por ello fui. El usb-xBee, perfecto. Por otro lado, tengo otro xBee con un PIC 16F913 y ahí empezamos un poco con el problema.

Aprovecho este hilo, ya que no se por donde está el problema. Bien, como he dicho el usb-xBee, perfecto. Envía y recibe uno o varios bytes correctamente enviados por el pic, pero al reves, no.

Cuando el pic recibe, salta la interrupcion y se pone a leer, pero si hay más de dos bytes (incluidos los de fin [0x0D y/o 0x0A], el xBee se bloquea, no el pic.

El pic lo programo en CCS (soy muy novato en el C) y he probado de leer tanto con gets(), como llenando un bufer con getc(). Tanbién he probado distintas velocidades (1200, 9600,19200 -el CCS no me deja poner a 57600 o 115200??-). Con gets(), el pic se resetea por wdt ya que no llega a recivir el RC (0x0D).

Los modulos estan configurados con las definiciones de fábrica (comunicacion multimódulo).

El PIC funciona con oscilador interno a 8Mhz.Como dato curioso, no me funciona el sleep en el pic y no sé porque.

A alguien se le ocurre que puede ser? Porqué el módulo del PC funciona bien y el otro no?

Saludos,

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Creando una RED de XBee por RF usando PC.
« Respuesta #20 en: 22 de Octubre de 2007, 01:06:00 »
Si le estas colocando el circuito de acople para bajar de 5V a 3.3 y para subir de 3.3 a 5V?? El Xbee viene de fabrica para trabajar a 9600bps modo PUNTO a PUNTO HALF-FUPLEX.  Por eso si se quiere cambiar esa forma de trabajar, ya habría que implementar un control de datos así como se hace en el protocolo RS485.  Solo uno puede transmitir.

A mi nunca se me ha bloqueado el XBEE, eso e parece muy raro. Revisa lo de los voltajes que te digo, luego miramos otras cosas.

SALUDOS!

Desconectado Picavid

  • PIC12
  • **
  • Mensajes: 89
    • www.seguridomo.es
Re: Creando una RED de XBee por RF usando PC.
« Respuesta #21 en: 22 de Octubre de 2007, 05:49:48 »
Gracias PICmouse por tu rápida respuesta.
El circuito se alimenta en su integridad a 3.3V. En cuanto a configuración, Sí, a 9600, MY=0, DH=0, DL=FFFF, de manera que uno emite y todos escuchan. Los dos módulos están configurados igual. Es como si el buffer Rx del xBee se colapsara con sólo 3 bytes (segun entiendo del manual tiene para 100). Mas datos:
-Circuito con PIC: -Alimentado directamente con un FA a 3.3V (la intención es que funciones con una pila de litio de 3V), -Ahora mismo desconectada la funcion sleep del xBee (después sí, con SM=4), el envio de una trama hacia el PC, es perfecta(p.e. "inicializando". Se recibe perfecta en el PC, acabando la trama con 0x0D y 0x0A), configuración como he dicho antes (MY=0, DH=0, DL=FFFF), incluso le he hecho el reset a traves del PIC (+++, ATRE), -1 ó 2 bytes los recibe perfectos. Con más de 2 ya se bloquea el xBee (p.e. 0x31, 0x32, 0x0D; ó: 0x31, 0x32, 0x33).
-Circuito PC: El chip conversor, autoalimentado; el xBee, a traves de un regulador.
Otros datos:
-También me he hecho un mando a distancia (fue uno de los motivos de provar lo del xBee). Éste, ahora solo emite un carácter más el 0x0D y 0x0A, con lo cual, también bloquea el xBee (el de destino). Este circuito tambien tiene un 16F913 y TAMPOCO funciona la función sleep en el pic. el xBee lo pongo a dormir y despierto por el pin 9 con SM=1.

El envío del PC al pic, lo que probado tanto los carácteres sólos, como acabando con 0x0D, como con 0x0D y 0x0A. En todos el mismo resultado.

  Lo curioso es que el xBee del PC recibe la cadena completa perfecto y el del PIC no. Los pic tienen activado el wdt y desconectado el mclr. Ambos con oscilador interno a 8 Mhz y los pines como i/o. Tienen activada la interrupción de fallo de oscilador, RB, RDA y LowBatt. En los dos no funciona el sleep del PIC, pero eso, después. Lo comento por si tuviera alguna relación.
  Según el manual del xBee, se puede bloquear si se llena el buffer, aunque teoricamente, lo único que haría es perder los datos sobrantes, pero no dice, y eso me parece, que pasa si al descargar el buffer del xbee hacia el pic, éste último fuera lento o pasara algo raro en el proceso. ¿Podría ser que el pic tardara demasiado entre interrupcion e interrupcion?, me explico y no se mucho, pero, el pic creo que tiene el buffer de entrada de 2 bytes, que deben ser los que yo leo, y luego que pasa? sale de la interrupcion y tiene que volver a entrar? o se queda ahí. En C, tanto he puesto while (kbhit()) ... y leer con getc(), como if (kbhit()) ... y leer tanto con getc, como gets y un monton de pruebas más.

  Si falla el sleep del pic (incluso con todas las interrupciones deshabilitadas), podría fallar o ir lenta la del RDA? Por eso también prové a reducir la velocidad del pic-xbee a 1200, pero nada.

  Estas han sido mis primeras experiencias con el xbee, pero también con el C y con el 16F913, así que voy un poco o más bien, bastante perdido.

  El protocolo de comunicación, quisiera dejarlo así (del xBee), y ponerlo en la trama de datos, ya que el circuito del que hablamos, debe recibir datos del PC y del mando a distancia.

  Confío en que podais darme alguna pista, porque le he dado muchísimas vueltas y no lo consigo.

  Saludos, David.

Desconectado Picavid

  • PIC12
  • **
  • Mensajes: 89
    • www.seguridomo.es
Re: Creando una RED de XBee por RF usando PC.
« Respuesta #22 en: 22 de Octubre de 2007, 10:31:56 »
Hola de nuevo, aún no lo tengo, pero leyendo la ayuda del CCS sobre "#use rs232", dice:

Warning:
The PIC UART will shut down on overflow (3 characters received by the hardware with a GETC() call).  The "ERRORS" option prevents the shutdown by detecting the condition and resetting the UART.

 con lo cual he añadido la opcion ERRORS en la directiva, y de momento no se bloquea (ahora no se si la Uart o el xBee), a pesar de que solo lee los 2 primeros.

  Sigo investigando...

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Creando una RED de XBee por RF usando PC.
« Respuesta #23 en: 22 de Octubre de 2007, 11:26:23 »
Para trabajar con la USART no se recomienda trabajar con Oscilador Interno.  La usart requiere una señal de reloj muy precisa, ya que la única forma de sincronizar los datos, es por el oscilador del PIC, entonces los osciladores internos del PIC soy muy buenos para practicas con poca precisión.

Si quieres trabajar con voltajes de 3.3V, te recomiendo uses PIC versión LF, si le trabajas con uno normal, el PIC trabajara a empujones y no es estable.  Tu tienes el 16F913 pero realmente debes tener es el 16LF913. El datasheet dice que funcionan desde 2.5 hasta 5V, pero ese rango de voltajes pertenece a la versión LF.

Si quieres usar el WDT y al tiempo el Xbee con la comunicación RS232, en CCS debes definir la USART de esta forma:

#use rs232(baud=9600, xmit=PIN_A2,rcv=PIN_A3, RESTART_WDT)

Puedes montar el esquemático del circuito donde esta el PIC y el XBEE??? sacamos si es problemas del Xbee o del PIC.  Si no, hacemos un programa de prueba a ver cual sera el problema.

Desconectado Picavid

  • PIC12
  • **
  • Mensajes: 89
    • www.seguridomo.es
Re: Creando una RED de XBee por RF usando PC.
« Respuesta #24 en: 22 de Octubre de 2007, 14:40:42 »
Hola PICmouse,

  no tengo hecho esquematico, pero adjunto el PCB en proteus y así sirve para quien lo pueda utilizar. En concreto y para quien lo aproveche, tiene las medidas de la base de un interruptor de casa (es importante hacer una carátula o algo que lo cubra porque hay 220V). El circuito lo quiero utilizar tanto para las persianas eléctricas como para luces, etc. la carga de 220 es controlado por opto y triac, segun indica el libro "Microcontrolador pic16f64, de RAMA". Lleva un conector con "-salida led, -masa, y 2 entradas de pulsadores, y el otro es para el ICSP. El resto está definido en el circuito. Si no puedes verlo, trato de hacer el esquema. El pin9 del xBee que está conectado al pic, ahora mismo no lo tengo ni definido en el programa.

  Tengo por aqui un 18F2550 también en smd, ¿te parece que haga la prueba de cambiarlo?

  En cuando a la definición del rs232, sí, lo tengo así, pero con los pines correspondientes (c6, c7). A lo que te he comentado en el último post, ha quedado:
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,ERRORS)
  Así ya no se bloquea nada, pero sólo lee los dos primeros bytes. El restart_wdt() me parece mas oportuno no ponerlo en el rs232 para evitar que se quede colgado mientras lee. Prefiero que reinicialice si falla. Sabes como leer el error? leyendo o, mas bien transmitiendo el contenido de rs232_errors, sale vacío.
  En la interrupcion de osc_fail, le tengo puesto reset_cpu(), y no veo aparentemente que se resetee.
  En CCS, ahora mismo tengo (la última de las muchas pruebas):

#int_RDA
void RDA_isr()
{int8 Total;
restart_wdt();
on(buzz);
contBuff=0;
while (kbhit())
   {Entrada[contBuff]=getc();
   contBuff++;}
off(buzz);}

 donde Entrada está definido antes de todas las funciones con:
int8  ContBuff=0;
int const LenBuff=64;
char Entrada[LenBuff];

Ah, el buffer se limpia despues de cada eco, poniendo los 64 bytes a 0x00.
Ahora mismo en el main, mira si contBuff>0, entonces lo escribe hacia el PC.

Para mas ... también uso la eeprom interna para almacenar el estado de las salidas y los tiempos. (inicialmente funciona bien).

No se si será problema del compilador, pero en una ocasión, cambiando varias veces el sleep de posicion dentro del main, FUNCIONO!!! (como dice algún hilo del foro, no en su sitio, pero si al final del main); lo volví a dejar como estaba, Y SEGUIA FUNCIONANDO!!!. Seguí con las pruebas del xBee, y de repente volvió a dejar de funcionar.

 PD: También prové otra version del CCS, y hace igual.

 Adjunto el diseño y el programa en ccs. (el programa ahora está muy mal debido a todas las pruebas que le he hecho)

Saludos,

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Creando una RED de XBee por RF usando PC.
« Respuesta #25 en: 22 de Octubre de 2007, 16:30:04 »
Y el PIC es versión LF??

Desconectado Picavid

  • PIC12
  • **
  • Mensajes: 89
    • www.seguridomo.es
Re: Creando una RED de XBee por RF usando PC.
« Respuesta #26 en: 23 de Octubre de 2007, 00:14:46 »

Desconectado Picavid

  • PIC12
  • **
  • Mensajes: 89
    • www.seguridomo.es
Re: Creando una RED de XBee por RF usando PC.
« Respuesta #27 en: 23 de Octubre de 2007, 06:22:53 »
¿brujería, virus, extraterrestres, ... , o simplemente desconocimiento?

Bueno, he vuelto a empezar de nuevo y ....  :shock:

A veces va y a veces no!!! Por que? De momento sólo he descubierto lo siguiente:

#int_LOWVOLT
void LOWVOLT_isr()
{
//on(buzz);delay_ms(3000);   //Así sólo recibe 2 bytes y bloquea Uart.
on(buzz);                  //Así recibe correctamente
}

Por mentira que parezca es así. El nuevo programa está "pelao". Sólo lee del RDA y después lo envía. Iré añadiendo las funciones haber que pasa.

Si consigo más información, abriré un hilo en C.

Independientemente, agradezco el apoyo y el tiempo que me has ofrecido PICmouse.

Saludos, David

PD: Dejo una copia por si alguien no se lo cree y quiere provarlo. Por cierto, el sleep() sigue sin funcionar!

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Creando una RED de XBee por RF usando PC.
« Respuesta #28 en: 23 de Octubre de 2007, 10:45:15 »
Pero, por eso te pedía el esquemático de tu circuito, el PCB no me dejo claro como era la conexión.  Pasame el esquema, simulo el circuito en proteus y con eso, hacemos un programa que te corra bien.

SALUDOS!

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Creando una RED de XBee por RF usando PC.
« Respuesta #29 en: 23 de Octubre de 2007, 10:46:23 »
No, es el normal. 16F913 I/SS

http://ww1.microchip.com/downloads/en/DeviceDoc/41250F.pdf

Por eso te digo, ese no te va a funcionar bien a 3.3V, si quieres trabajar a 3.3V debes usar el 16LF913.


 

anything