Dudas sobre la implementación de un protocolo simple para XBee Comms

3

Un sistema que estoy desarrollando utilizará módulos XBee para una conexión punto a punto entre un microcontrolador y una PC. Los datos solo se enviarán en una dirección: Micro a PC y a 10-20 fps. La porción de datos de cada cuadro será de 4 bytes. Los módulos XBee se ejecutarán en modo transparente (para comenzar con al menos). En el lado de la PC, estoy usando python para capturar los datos del puerto serie.

Inicialmente, escribí un programa Python muy simple para capturar datos de 4 Bytes a la vez desde el puerto serie, que funcionó bien cuando se probó con una conexión de com virtual (aún no he ejecutado ninguna prueba del mundo real), pero decidió experimentar y terminó implementando una estructura de marco simple como esta.

sync_flag | Payload_length | frame_number | payload

Después de algunas investigaciones descubrí HDLC y ahora estoy considerando implementar algo similar aunque más simple. Antes de esforzarme por hacerlo, me gustaría escuchar lo que otros tienen que decir.

¿Cuándo se merece tal protocolo?

¿Qué has hecho cuando implementaste tus redes XBee?

Al ser algo nuevo en esta área, estoy seguro de que Iv tiene algunos detalles relevantes, pero al mismo tiempo no quería que la pregunta fuera demasiado específica / específica del sistema, pero si fuera necesario actualizaría la pregunta.

    
pregunta volting

3 respuestas

1

Voy a utilizar módulos Xbee. Intentaré utilizar un punto a una red multipunto.

En este momento, planeo tener un identificador de transmisor, tipo de carga útil, longitud de carga útil, carga útil y suma de comprobación: se vería así:

Field            Type    Description   
transmitter_id   uint8   Identifies the transmitting module (0-255)
type             uint8   Type of data (GPS coordinates, hit status, etc.)
length           uint8   Length of payload in bytes
payload          -       Actual payload
checksum         uint16  CRC16 of everything before

Así es como me lo imagino, el formato puede cambiar pero este será el protocolo básico en uso.

    
respondido por el Thomas O
1

Cuando sales del modo transparente, asumo que el XBee expone la carga útil de 802.15.4 marcos para su aplicación. Sin embargo, es posible que sus datos también se almacenen en un marco ZigBee APS / NWK.

enlace

Los datos se envían en paquetes, por lo que no es necesario un encabezado de sincronización

Ya hay un campo de suma de comprobación de 2 bytes (FCS), por lo que no es necesario agregar el suyo

El tamaño de carga útil máximo permitido será inferior a 128 bytes

La entrega y recepción de cuadros no son confiables

La API XBee puede permitirle leer los números de secuencia de los paquetes subyacentes. De lo contrario, necesitará un número de secuencia incremental y un mecanismo de reintento.

    
respondido por el Toby Jaffey
0

Mi situación es un poco más compleja (sistema de automatización del hogar), por lo que podría ser una exageración para usted, pero he decidido utilizar JSON binario protocolo basado en. Es flexible, extensible y realmente fácil de implementar.

    
respondido por el sudarkoff

Lea otras preguntas en las etiquetas