Quiero conectar una Raspberry Pi a un dispositivo basado en ARM MCU de mano que contiene una pantalla y algunos botones para mostrar la información de los comandos Pi y transmitir. Quiero usar nrf24l01 + transceptores de 2.4GHz para eso.
Estoy pensando en cómo configurar el enlace de comunicaciones y, especialmente, si usar o no Enhanced Shock Burst (ESB). ESB es muy práctico ya que es compatible con auto-ack y, por lo tanto, podría liberarme de la gestión manual de ack, que es una molestia especialmente en el dispositivo basado en MCU. Sin embargo, por lo que he entendido de las hojas de datos, ESB requiere que un dispositivo sea un receptor primario y que un dispositivo sea un transmisor primario, y solo este último inicia una nueva transmisión, aunque el primero puede transmitir datos en su respuesta. En mi caso, esto es problemático porque ambos dispositivos reciben eventos externos que provocan la necesidad de una transmisión de datos.
He estado leyendo y básicamente hay tres soluciones posibles para este problema:
-
Configure un dispositivo como PTX y otro como PRX y haga que el PTX envíe mensajes vacíos para que el PRX tenga la oportunidad de enviar sus datos en un paquete de respuesta. Esto parece ser hecho por algunos proyectos. Veo la desventaja de tener tráfico continuo en el aire, lo que es malo para los dispositivos alimentados por batería. Además, el PRX todavía necesita algo de búfer para almacenar los mensajes hasta que llegue una transmisión y el mensaje se pueda enviar en el acuse de recibo.
-
Configura ambos dispositivos como PRX. Si un dispositivo necesita transmitir un mensaje, cambia a la función PTX y transmite el mensaje. La ventaja es que no hay tráfico continuo en el aire y ambos dispositivos pueden transmitir los mensajes según sea necesario. Sin embargo, no encontré que esto se esté haciendo en ninguna parte. Entonces, me pregunto si esto es posible o si hay otras advertencias con esta solución?
-
Ditch Enhanced Shock Burst y crea un protocolo propio. La solución menos favorecida, ya que implica más trabajo y carga más en el controlador. La función de retransmisión automática suena muy bien y sería una pena desperdiciar este potencial.
Así que me pregunto si alguien ya tuvo este problema y cómo lo resolviste. Especialmente me gustaría saber si hay problemas con la posibilidad dos.