Preguntas sobre SE8R01 (NRF24L01)

1

Pronto recibiré algunos SE8R01 (2.4 GHz inalámbricos) para usar en mi nuevo proyecto (usando Arduino).

El hoja de datos se puede encontrar aquí .

En mi proyecto, quiero usar varios dispositivos que necesitan enviar mensajes a un controlador (maestro). Que en base a eso envía mensajes de vuelta (inmediatamente o más tarde). Por eso es realmente una comunicación bidireccional. Pero todos los dispositivos (esclavos) tienen comunicación con un solo dispositivo. Así que el flujo de trabajo es algo así como:

  • El esclavo 1 envía datos al maestro
  • El maestro envía datos al esclavo 1
  • Slave 2 envía datos a Master
  • El maestro envía datos al esclavo 2
  • Slave 3 envía datos a Master
  • El maestro envía datos al esclavo 3

Si el Maestro debe ser el iniciador de todo, el posible flujo de trabajo también es posible:

  • El maestro pide datos al esclavo 1
  • El maestro envía datos al esclavo 1
  • El maestro pide datos al esclavo 2
  • El maestro envía datos al esclavo 2
  • El maestro pide datos al esclavo 3
  • El maestro envía datos al esclavo 3

Algunos esclavos de datos enviados al maestro deben devolverse rápidamente (dentro de unos 10 ms), otros datos son menos críticos. Esto depende del esclavo.

En la hoja de datos en el párrafo 7.6 se maneja MultiSlave. Esta es una red 6-1 (probablemente similar pero no exactamente como NRF24L01). No sé por qué el SE8R01 y el NRF24L01 son diferentes (pensé que son compatibles).

De todos modos, en el modo MultiSlave, parece que hasta 6 dispositivos son transmisores y 1 es receptor. Pero en mi ejemplo, quiero ambos: transmisor y receptor. El MultiSlave usa un protocolo que cambia el transmisor y el receptor internamente, pero me pregunto si puedo usar este MultiSlave y el protocolo si manualmente voy a cambiar esto.

¿O debería hacer mi propio protocolo?

Actualización: parece que NRF24L01 es el mismo, el 'protocolo' es ShockBurst en NRF24L01 y el modo MultiSlave se llama MultiCeiver

    
pregunta Michel Keijzers

1 respuesta

1

El modo multi-esclavo (no los felicito por la elección de la redacción) realmente es solo una función de conveniencia para ofrecerle canales "lógicos" en diferentes direcciones; no trae ninguna nueva topología de RF / red.

Entonces, si no quieres comunicaciones 1: N, pero M: N, simplemente no lo uses. En su lugar, dirija los paquetes como quiera, directamente.

El dispositivo, que lee desde las máquinas estatales, no tiene ningún tipo de arbitraje: la estrategia de Control de acceso al medio (MAC) es simple, sin ranuras Aloha , y parece que no puedo encontrar un retroceso exponencial allí, así que, errr, no use esto para nada donde tenga una probabilidad sustancial (digamos: 5% o más) de dos paquetes que chocan en el aire: obtendrás retransmisiones en colisión, nuevas transmisiones en colisión con estas retransmisiones, e incluso cuando los primeros transmisores alcancen su número máximo de retransmisiones y simplemente se den por vencidos, obtendrás ACK que chocarán con retransmisiones del los segundos Un ciclo vicioso.

Por lo tanto, esto está totalmente bien, por ejemplo, una red de nodos que ocasionalmente envían un paquete corto; no está bien una vez en promedio, más del 15% del tiempo que el aire necesita ser utilizado por los paquetes. (Por ejemplo, si el paquete promedio + ACK es 1ms, no debe transmitir más de 150 paquetes por segundo en toda la red ; 150 · 1ms = 150ms = 15% de 1s).

    
respondido por el Marcus Müller

Lea otras preguntas en las etiquetas