¿Cómo puedo entregar de forma inalámbrica ~30B de datos a ~10 periféricos aproximadamente cada 50ms?

Estoy pensando en un sistema donde 10 o más periféricos necesitan recibir 30-50B de datos cada 50 milisegundos (cada periférico obtiene datos únicos). El rendimiento total requerido puede no ser enorme (6-10 kB/s), pero el problema radica en la cantidad de dispositivos que necesitan recibir los datos.

He investigado el uso de BLE, pero aunque el rendimiento total se encuentra dentro del máximo posible de ~ 35 kB/s, lo que quiero no es posible debido al límite estricto de intervalos de conexión de 20 ms. Otra solución que consideré es usar un transmisor de RF simple y receptores de RF que lo escuchen simultáneamente. Tendría que encargarme manualmente de la corrección de errores, etc., pero no tendría que preocuparme por cambiar entre los receptores, lo que lleva un tiempo precioso. Un problema con eso también incluiría la incapacidad de tener dos de esos sistemas desplegados uno cerca del otro sin el riesgo de que los transmisores hablen entre sí.

Entonces, ¿qué otras soluciones hay disponibles para mí?

¿Cómo le indicaría un receptor al transmisor que tiene un error de datos? ¿Qué pasaría entonces? ¿Incluyen los datos la carga útil y la dirección y los bits de preámbulo?
Es posible que pueda usar BLE como baliza, no hay una conexión, solo arroja datos para que todos los escuchen. No estoy seguro de los detalles (por lo tanto, comentar, no responder), pero hay algo que investigar
@Andyaka: no lo haría. En este caso, perder un dato de vez en cuando no dañaría el sistema, siempre que el receptor sepa que los datos recibidos no son válidos.
@Sanuuu En ese caso, no necesita punto a punto y puede optar por una solución de transmisión que puede ser más rápida y simple.

Respuestas (3)

Sospecho que el uso de transceptores nRF24L01+ resolvería esto por usted. Teóricamente bueno para 1 o 2 Mbps, menos reconocimientos y cierta sobrecarga de paquetes, y aún debería poder mantener más de 100 kbps de datos de usuario sin ningún esfuerzo dramático.

NRF24L01+ definitivamente sería capaz, los iba a recomendar.
Gracias, creo que funcionarían bien, ¡especialmente con la ventaja adicional de un costo por unidad relativamente bajo!

Podría echar un vistazo al protocolo IEEE 802.15.4 . Hay un montón de transceptores por ahí. Esto le permitiría transmitir todos los datos del dispositivo para todos los periféricos en un paquete cada 50 ms (el tiempo de transmisión para un paquete como este será <1 ms). Suponiendo que no necesita una red de malla, esto podría funcionar bien para usted y minimizar la latencia.

Las radios IEEE 802.15.4 usan CDMA, por lo que no se pisarán entre sí cuando transmitan en el mismo espacio de RF.

Sin una red de malla, estaría ejecutando una configuración en estrella con el "maestro" en el centro del concentrador y sus periféricos actuando como puntos en su estrella.

Buena suerte, suena como un proyecto divertido.

Obtenga un transmisor simple de 433 MHz y algunos receptores, envíe un preámbulo de datos, luego una dirección, luego los datos y luego un par de bytes CRC. Si necesita enviar datos a receptores específicos, incruste la dirección y los datos en un flujo largo intercalado con CRC para que el receptor correcto sepa lo que está buscando. En otras palabras, desarrolle un protocolo simple y compre algunos TX y RX baratos y debería estar en el negocio. Es posible que 433 MHz no esté permitido en su país, pero habrá una frecuencia que lo esté.

Como dije en mi pregunta original, consideré esta solución y la consideré no apropiada debido a la diafonía cuando se usa más de un transmisor.
Puede extender esto fácilmente a dos sistemas usando una banda de frecuencia diferente o haciendo que los dos transmisores respeten el uso del tiempo del otro.
Tiempo: el transmisor tendría que estar funcionando prácticamente de forma continua con la velocidad de datos que necesito, por lo que la división del uso del tiempo no sería factible. Además, prefiero usar el mismo hardware en todos los sistemas que construyo, por lo que seleccionar manualmente diferentes frecuencias para los transductores no funcionaría.
Opte por el doble de la velocidad de datos o encuentre formas de reducir la carga útil de datos. Por otro lado, ambas son cosas sensatas para hacer de todos modos.