comunicación serie Xbee

0

Estoy construyendo una red de malla con xbees, arduinos y sensores.

Ahora mismo tengo 2 enrutadores Xbee y 1 coordinador. Cada módulo xbee tiene un arduino adjunto. Para comunicarme desde el enrutador al coordinador, uso la función Serial.println (). ¿Es posible que cuando 2 enrutadores se comuniquen a través del serial al coordinador, los datos se superpongan? Por ejemplo, si de Router 1 estoy enviando "HELLO" y de router 2 "World", es posible que el coordinador reciba ¿Ambos al mismo tiempo y mostrarán "HELworlLOd"? ¿O el coordinador solo toma 1 "paquete de datos" a la vez? Si es así, ¿qué sucede si el coordinador recibe algunos datos del enrutador 1 y, al mismo tiempo, el enrutador 2 envía un paquete? ¿Se pierde? ¿El protocolo zigbee se encarga de eso y se asegura de que el enrutador lo envíe nuevamente? ¿Tengo que implementar esto en mi código?

¡Gracias!

    
pregunta Mohamed Elhariry

1 respuesta

2

Los datos transmitidos por las radios en modo 'transparente' se empaquetan después de un tiempo de espera configurable de paquetización (RO). Puede haber una forma de forzar la paquetización y la transmisión antes de este tiempo de espera. El retraso predeterminado para el XBee / XBee Pro (XB24-A ... / XBP24-A ...) es 3 veces el carácter. Siempre que envíe su cadena con los caracteres 'espalda con espalda' (no haga una pausa mientras envía datos), debería terminar como un solo paquete. Tenga en cuenta que hay un límite en la longitud del paquete (100 bytes para XBee / XBee Pro): si su mensaje es demasiado largo, se dividirá en más de un paquete. Esto no debería ser un problema si está enviando, por ejemplo, paquetes de 64 bytes una vez por segundo. Además, los módulos XBee deben usar CSMA para limitar las colisiones, por lo que es menos probable que dos nodos en el rango de uno a otro intenten transmitir al mismo tiempo. Los módulos XBee también admiten la retransmisión cuando se opera en modo de unidifusión (dirección de destino único), por lo que si el receptor no recibe un paquete ACK, el transmisor intentará enviarlo nuevamente. El retardo de retransmisión y el recuento parecen estar arreglados por la implementación de MAC y no son configurables, aunque los ACK y las retransmisiones se pueden deshabilitar completamente.

Dependiendo de lo que estés haciendo, podría valer la pena buscar el uso de las radios en modo API. Con el modo API, puede poner en cola los paquetes explícitos para enviar que se garantiza que sean 'atómicos' y no se dividirán. También es la única forma sencilla de administrar redes que son más complicadas que las simples punto a punto, ya que puede especificar la dirección de destino por paquete y extraer la dirección de origen de los paquetes recibidos. También es posible obtener informes de estado de los paquetes transmitidos para ver si el receptor los aceptó o no.

    
respondido por el alex.forencich

Lea otras preguntas en las etiquetas