Autor Tema: Aporte-Comunicacion FULL-Duplex con nRF24L01 y Arduino  (Leído 4332 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado humberto 02

  • PIC16
  • ***
  • Mensajes: 184
Aporte-Comunicacion FULL-Duplex con nRF24L01 y Arduino
« en: 11 de Febrero de 2017, 12:50:24 »

Introducción
La tarea que tiene el programa SERVIDOR es enviar un número aleatorio “usando millis()” al Esclavo. Por otro lado el Esclavo independientemente de lo que reciba envía un valor fijo “999” al Servidor.

Una vez que logres esta comunicación podrás jugar del modo que vos quieras o lo necesites. Los mensajes son independientes sin que haya una clave o tiempo para que uno u otro deba responder.

En este caso particular no necesitaba usar Cadena de caracteres, es por eso que solo podrán trabajar con números.

Las conexiones están por todas partes, pero en mi caso solo me quiero dedicar a dejarte un Sketch/Programa/Aplicación. (Inspirado en la explicación de Prometec que me enseño mucho).

SERVIDOR
Código: [Seleccionar]
// MAESTRO.ino

// Creo que no hace falta usar para este ejemplo.
// #include <SPI.h>
// **************
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(9,10); // Rx~ y Tx~
const uint8_t pipes[2] = { 0xF0F0F0F0E1LL, 1 };

void setup(void) {
    pinMode(10, OUTPUT);

    Serial.begin(9600);
    radio.begin();

    radio.setRetries(15,15); // Maximos reintentos
    radio.openWritingPipe(pipes[0]);
    radio.openReadingPipe(1,pipes[0]);
}

void loop(void) {
     delay(2500); // Solo sirve para no desbordar el Visor Serial
     
     // Paramos la escucha para poder hablar
     radio.stopListening();
     unsigned long Numero = millis();
     Serial.print("Mensaje Enviado ");
     Serial.println(Numero);
     bool ok = radio.write( &Numero, sizeof(unsigned long) );
     if (ok){
         Serial.println("ok...");
     }else{   
         Serial.println("SERVIDOR:No pude enviar mi NRO.");
     }

     // Volvemos a escuchar al Esclavo
     radio.startListening();
     if ( radio.available()){
          int AhoraEl;
          radio.read( &AhoraEl, sizeof(int) );
          if (AhoraEl != 0){
              Serial.print("Recibi del Esclavo ");
              Serial.println(AhoraEl);
          }
     }
}

ESCLAVO
Código: [Seleccionar]
// ESCLAVO.ino

// Creo que no hace falta usar para este ejemplo.
// #include <SPI.h>
// **************
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(9,10); // Rx~ / Tx~
const uint8_t pipes[2] = { 0xF0F0F0F0E1LL, 2 };

void setup(void) {
     pinMode(10, OUTPUT);

     Serial.begin(9600);
     radio.begin();

     radio.setRetries(15,15);
     radio.openWritingPipe(pipes[0]);
     radio.openReadingPipe(1,pipes[0]);
}

void loop(void) {
     // Escuchamos al Servidor
     radio.startListening();
     unsigned long ElServidor = 0;
     radio.read( &ElServidor, sizeof(unsigned long) );
     delay(50);
     if (ElServidor !=0) {
         Serial.print("Numero Recibido del Servidor = ");
         Serial.println(ElServidor);
     }
     
     if ( radio.available() ) {
        // Dejamos de escuchar para poder hablar
        radio.stopListening();
        int AhoraYo = 999;
        Serial.print("Enviando Mensaje ");
        Serial.println(AhoraYo);
        bool ok = radio.write( &AhoraYo, sizeof(int) );
        delay(50);
        radio.startListening(); // Redundancia
        if (ok){
           Serial.println("ok...");
        }else{
           Serial.println("ESCLAVO:No pude enviar el 999");
        }
     }
}

Espero que les sirva como ha sido en mi caso personal. Les deseo lo mejor!
« Última modificación: 12 de Febrero de 2018, 15:04:07 por xocas »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Aporte-Comunicacion FULL-Duplex con nRF24L01 y Arduino
« Respuesta #1 en: 11 de Febrero de 2017, 19:06:13 »
Interesante, gracias por tu aporte.

Aunque seria bueno que proveas las direcciones de las librerias


Código: C
  1. #include <nRF24L01.h>
  2. #include <RF24.h>

Ya que si alguno baja alguna otra libreria no le va a funcionar.

Desconectado humberto 02

  • PIC16
  • ***
  • Mensajes: 184
Re:Aporte-Comunicacion FULL-Duplex con nRF24L01 y Arduino
« Respuesta #2 en: 11 de Febrero de 2017, 20:36:15 »
... Aunque seria bueno que proveas las direcciones de las librerias

Ya que si alguno baja alguna otra libreria no le va a funcionar.

Hola JC Respondiendo a tu comentario: aquí esta https://github.com/maniacbug/RF24

Te y les envío un cordial saludo desde E. Ríos


Desconectado humberto 02

  • PIC16
  • ***
  • Mensajes: 184
Re:Aporte-Comunicacion FULL-Duplex con nRF24L01 y Arduino
« Respuesta #3 en: 11 de Febrero de 2018, 13:43:36 »

Con respecto a las librerías empleadas KILLERJC me recomendó decir con que librerías debíamos trabajar para este proyecto y encontre un modo más simple de hacerlo.

sigan estos pasos: Menu IDE Arduino > Programa > Incluir Librería > Gestionar Librerías

Dentro del Gestor de librerías buscar nRF24 cuyo autor sea TMRh20. Con esta librería todo debe andar sobre rieles.

Les deseo lo mejor!
 
« Última modificación: 12 de Febrero de 2018, 15:05:44 por xocas »


 

anything