probleme de liaison module NRF24

bonjour à tous , en faisant diff tests sur des modules NRF24 et en suivant un tuto ( excellent ) dans le ''carnet du maker '' j'ai changé la valeur Mirf.configRegister(RF_SETUP, 0x26); pour voir si la communication allait etre plus rapide ! car je trouvais qu'il y avait beaucoup de latence entre l'envoie des valeurs et la reception ... bref et depuis que j'ai tenter de changer cette valeur je n'arrive plus à faire communiquer mon montage j'ai essayé Mirf.configRegister(RF_SETUP, 0x07); mais rien y fait !!!

il y a t'il un moyen de remettre les valeurs par défauts ( en fait ça fonctionnait !!) merci à vous et bonne journée

Postez vos codes

merci JML pour ton aide voici les codes :slight_smile: :

/**
 * Exemple de code pour la bibliothèque Mirf – Client d'envoi de tableau de valeurs
 */

#include <SPI.h>      // Pour la communication via le port SPI
#include <Mirf.h>     // Pour la gestion de la communication
#include <nRF24L01.h> // Pour les définitions des registres du nRF24L01
#include <MirfHardwareSpiDriver.h> // Pour la communication SPI
 
 
 
 
void setup() {
  Serial.begin(9600);
   
  Mirf.cePin = 9; // Broche CE sur D9
  Mirf.csnPin = 10; // Broche CSN sur D10
  Mirf.spi = &MirfHardwareSpi; // On veut utiliser le port SPI hardware
  Mirf.init(); // Initialise la bibliothéque

  Mirf.channel = 9; // Choix du cannal de communication (128 canaux disponible, de 0 à 127)
  int valeurs ;
  Mirf.payload = sizeof(int)*6;
  // Taille d'un message (maximum 32 octets)
  Mirf.config(); // Sauvegarde la configuration dans le module radio

  Mirf.setTADDR((byte *) "nrf02"); // Adresse de transmission
  Mirf.setRADDR((byte *) "nrf01"); // Adresse de réception
   
  Serial.println("Go !"); 
}
 
void loop() {
  
  int valeurs[6];
 
 
 
  valeurs[0] = analogRead(0);  // potar 1 
  valeurs[1] = analogRead(1); // potar 2
  valeurs[2] = analogRead(2);  // potar 1 
  valeurs[3] = analogRead(3); // potar 2
  valeurs[4] = analogRead(4);  // potar 1 
  valeurs[5] = analogRead(5); // potar 2
  
  
  Mirf.send((byte *) &valeurs); // On envoi le message
  
}
/**
 * Exemple de code pour la bibliothèque Mirf – Serveur d'envoi de tableau de valeurs
 */

#include <SPI.h>      // Pour la communication via le port SPI
#include <Mirf.h>     // Pour la gestion de la communication
#include <nRF24L01.h> // Pour les définitions des registres du nRF24L01
#include <MirfHardwareSpiDriver.h> // Pour la communication SPI



int Led1 = 2;
int Led2 = 3;
int Led3 = 4;
int Led4 = 5;
int Led5 = 6;
int Led6 = 7;



void setup() {
  
     Serial.begin(9600);
  
     pinMode(Led1, OUTPUT);
     pinMode(Led2, OUTPUT);
      pinMode(Led3, OUTPUT);
     pinMode(Led4, OUTPUT);
      pinMode(Led5, OUTPUT);
     pinMode(Led6, OUTPUT);
     
  Mirf.cePin = 9; // Broche CE sur D9
  Mirf.csnPin = 10; // Broche CSN sur D10
  Mirf.spi = &MirfHardwareSpi; // On veut utiliser le port SPI hardware
  Mirf.init(); // Initialise la bibliothéque

  Mirf.channel = 9; // Choix du cannal de communication (128 canaux disponible, de 0 à 127)
  int valeurs;
  Mirf.payload = sizeof(int)*6; // Taille d'un message (maximum 32 octets)
  Mirf.config(); // Sauvegarde la configuration dans le module radio

  Mirf.setTADDR((byte *) "nrf01"); // Adresse de transmission
  Mirf.setRADDR((byte *) "nrf02"); // Adresse de réception

  Serial.println("Go !"); 
  
  
  
  analogWrite(Led1,  0);
  analogWrite(Led2,  0);
  analogWrite(Led3,  0);
  analogWrite(Led4,  0);
  analogWrite(Led5,  0);
  analogWrite(Led6,  0);
  
}

void loop() {
  
  int valeurs[6];
    
  
    Mirf.getData((byte *) &valeurs); // Réception du paquet
    
    
    Serial.print(valeurs[0]); 
    int val0 = map(valeurs[0], 0, 1023, 0, 255 );
    analogWrite(Led1,  val0);
    
    Serial.print(valeurs[1]); 
    int val1 = map(valeurs[1], 0, 1023, 0, 255 );
    analogWrite(Led2,  val1);
    
     Serial.print(valeurs[2]); 
    int val2 = map(valeurs[2], 0, 1023, 0, 255 );
    analogWrite(Led3,  val2);
    
    Serial.print(valeurs[3]); 
    int val3 = map(valeurs[3], 0, 1023, 0, 255 );
    analogWrite(Led4,  val3);
    
    Serial.print(valeurs[4]); 
    int val4 = map(valeurs[4], 0, 1023, 0, 255 );
    analogWrite(Led5,  val4);
    
    Serial.print(valeurs[5]); 
    int val5 = map(valeurs[5], 0, 1023, 0, 255 );
    analogWrite(Led6,  val5);
  
   
  
}

comment sont câblés et alimentés les NRF24?

il y a 3 tutos en lignes

Exemple de communication sans fil nRF24L01+
Autre Exemple de communication sans fil nRF24L01+ avec échange de structure

et celui de Henri (site externe): Tuto NRF24L01 et ARDUINO

Pouvez vous tester un des code avec le montage tel que décrit pour voir si les modules répondent correctement? (ces petites bêtes sont sensibles à leur alimentation)

en fait mon montage fonctionnait tres bien avant que je ne rajoute la valeur : ''Mirf.configRegister(RF_SETUP, 0x26);

pour essayer de voir si la communication était plus rapide et c'est depuis que j'ai inseré la modif de cette valeur apres '' mirf config "" comme expliqué sur ce tuto (https://www.carnetdumaker.net/articles/communiquer-sans-fil-avec-un-module-nrf24l01-la-bibliotheque-mirf-et-une-carte-arduino-genuino/)

et depuis plus de communication entre les modules ?

est ce que , une fois qu'on change cette valeur , elle reste en mémoire dans le module NRF ou bien c'est uniquement dans la carte Arduino ?

merci à toi

la fonction configRegister() va modifier des registres du composant nrf24l01 par son interface SPI

void Nrf24l::configRegister(uint8_t reg, uint8_t value)
// Clocks only one byte into the given MiRF register
{
    csnLow();
    spi->transfer(W_REGISTER | (REGISTER_MASK & reg));
    spi->transfer(value);
    csnHi();
}

mais de mémoire je crois que rebooter le nrf24l01 suffit à remettre les choses comme il faut

vous n’avez pas répondu aux questions…

  • comment sont câblés et alimentés les NRF24?
  • Pouvez vous tester un des code avec le montage tel que décrit pour voir si les modules répondent correctement? (ces petites bêtes sont sensibles à leur alimentation)