Communication sans fils (NRF24L01+ et mega 2560)

Bonjour à tous,

Cela fait quelque jours que j’essaye de faire fonctionner mon NRF24L01+ avec mon arduino mega2560 mais sans succès.

J’ai vu les problèmes d’alimentation avec ce type de composant et cette arduino, j’ai donc essayé avec une alimentation externe et également avec un condensateur entre le VCC(+3.3) et le GND de l’arduino. Mais rien à faire.

Voici mon cablage : CSN => pin 10
CE => pin 9
MOSI => pin 51
SCK => pin 52
MISO => pin 50

Et voici mon code :

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "printf.h"

// Hardware configuration: Set up nRF24L01 radio on SPI bus plus pins 9 & 10 
RF24 radio(9, 10);

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

void setup() 
{
  Serial.begin(57600);
  pinMode(53, OUTPUT);
  printf_begin();
  printf("\n\rRF24/examples/GettingStarted/\n\r");
  printf("*** Initialisation de la liaison radio.\n\r");

  // Setup and configure rf radio
  SPI.begin();
  radio.begin();                          // Start up the radio
  radio.setAutoAck(1);                    // Ensure autoACK is enabled
  radio.setRetries(15,15);                // Max delay between retries & number of retries
  radio.setDataRate(RF24_250KBPS);
  radio.setPALevel(RF24_PA_MAX);
  radio.setChannel(70);
  radio.setCRCLength(RF24_CRC_8);
  radio.openWritingPipe(pipes[1]);
  radio.openReadingPipe(1,pipes[0]);
  
  radio.startListening();                 // Start listening
  radio.printDetails();                   // Dump the configuration of the rf unit for debugging
}

void loop(void)
{   
    radio.stopListening();                                    // First, stop listening so we can talk.  
    printf("Now send.\n\r");
    unsigned long time = 69;                             // Take the time, and send it.  This will block until complete
    if (!radio.write( &time, sizeof(unsigned long)))
    {  
      printf("failed.\n\r");  
    }
    else
    {
      printf("OK.\n\r");
    }
        
    radio.startListening();                                    // Now, continue listening
    unsigned long started_waiting_at = micros();               // Set up a timeout period, get the current microseconds
    boolean timeout = false;                                   // Set up a variable to indicate if a response was received or not
    
    while ( ! radio.available() )
    {                             // While nothing is received
      if (micros() - started_waiting_at > 200000 )
      {            // If waited longer than 200ms, indicate timeout and exit while loop
          timeout = true;
          break;
      }      
    }
        
    if ( timeout )
    {                                             // Describe the results
        printf("Failed, response timed out.\n\r");
    }
    else
    {
        unsigned long got_time;                                 // Grab the response, compare, and send to debugging spew
        radio.read( &got_time, sizeof(unsigned long) );
        // Spew it
        printf("Sent %lu, Got response %lu, round-trip delay: %lu microseconds\n\r",time,got_time,micros()-got_time);
    }
    // Try again 1s later
    delay(5000);
}

Je passe toujours dans l’erreur lors du send. Par contre, j’arrive parfaitement à configurer le NRF24L01+.

Quelqu’un a-t-il une idée?

Merci d’avance.

jeremy62100:

  radio.setPALevel(RF24_PA_MAX);[color=#222222][/color]

radio.setChannel(70);

Si tes modules pour tes tests sont trop proche, passe les PALevel a MIN.
fait un test aussu avec le scanner de bande pour voir si ton Channel n'est pas trop proche d'un WIFI ou autre.
Perso, je serais, avec 70, en plein milieu d'une zone peturbée, j'ai mis 100.

Avec ces deux conseil, ça devrait rouler.

A+

caape:
Si tes modules pour tes tests sont trop proche, passe les PALevel a MIN.
fait un test aussu avec le scanner de bande pour voir si ton Channel n'est pas trop proche d'un WIFI ou autre.
Perso, je serais, avec 70, en plein milieu d'une zone peturbée, j'ai mis 100.

Avec ces deux conseil, ça devrait rouler.

J'ai testé avec tes deux conseils, mais toujours la même erreur.

Est ce que cela peut venir du fait que j'utilise les pin 9(CE) et 10(CSN)?

Quel câblage a tu utilisé toi ?

Merci.