Conceptos básicos de comunicación inalámbrica basados en la biblioteca NRF24 para Arduino

2

Bueno, como ya sabrá, hay una asombrosa biblioteca para arduino llamada NRF24 , que se usa para control , en el momento en que probé todos los ejemplos incluidos, e incluso hice algunas modificaciones.

Quiero ir más allá, pero hay algunos conceptos básicos que echo de menos, los he probado en google, en el sitio principal, observando más de cerca los ejemplos, pero nada, simplemente no entiendo algunas cosas. Tengo muchas ganas de profundizar, pero siento que falta un buen tutorial. Estas son algunas de las cosas que no entiendo.

¿Qué es una tubería? Cómo cambia si quiero que hablen 2 o 6 nodos.

const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };

código extraído del ejemplo básico .

¿Qué significan los números?

Tal vez después de la explicación, veré cómo resolver el siguiente problema, pero por si acaso; ¿Cómo necesito configurar los conductos si mi red es estática 6 nodos, una base? Los nodos algunas veces envían datos a la base y luego la base responde con algunos otros datos al nodo emisor ...

    
pregunta DomingoSL

1 respuesta

5

Para citar la hoja de datos:

  

Un canal de datos es un canal lógico en el canal de RF físico.

En el uso previsto, cada nodo transceptor obtendrá su propia "dirección" de canalización. Esto esencialmente indica que la lógica de recepción utiliza para saber cuándo escuchar entre todos los ruidos de radio que pueden estar en el canal físico particular (es decir, la frecuencia) que está utilizando. Puede elegir cualquier número, sin embargo, algunos números son más difíciles de seleccionar en ese ruido que otros.

Ahora en ese ejemplo, hay dos números de tubería. pipes[0] es usado por el código de muestra como la dirección destino , a la que se enviarán los mensajes del nodo. pipes[1] se usa como la dirección receptora , por lo que el transceptor ACK'ed los mensajes "ping" marcados para F0F0F0F0D2 y los almacenará (en un búfer pequeño) para que los recupere su microprocesador.

El código de muestra también hace un "pong" de nivel superior enviando un nuevo mensaje al remitente, quien se supone que está escuchando los mensajes que comienzan con F0F0F0F0E1 ( pipes[0] ) - presumido y necesidad de configuración en el código porque la estructura del paquete nRF24 no incluye la dirección del remitente, solo el receptor.

[Perdón por confundir esto, pero una vez que entiendas lo anterior, debes cambiar las cosas y pretender que el patrón de dirección transmitido es en realidad la identidad remitente . Esto está implícito en el hecho de que un transceptor puede escuchar hasta 6 direcciones de canalización que antes eran "destinatarias" ± simultáneamente en lo que respecta a su microprocesador.

En el uso normal, los paquetes se reconocen automáticamente y se reintentan automáticamente, por lo que solo un nodo debe enviarse por canalización (es decir, la dirección); de lo contrario, dos nodos escucharán ACK entre sí y los intentos confusos de reintento pueden abundar. Sin embargo, si desactiva la función de ACK automático e implementa su propio protocolo de nivel superior para la confiabilidad, puede hacer que todos los dispositivos en una frecuencia particular también escuchen / envíen en el mismo patrón de dirección de canalización particular. La ventaja aquí es que evita la limitación de que un transceptor nRF24 solo puede manejar el recibo automáticamente para five o seis direcciones de canalización simultáneamente. Si desea tener más nodos de "remitente" (en el sentido de volteado) que eso, debe administrar compartirlos.]

    
respondido por el natevw

Lea otras preguntas en las etiquetas