Problème avec NRF24L01

Bonjour,

J'essaie de faire communiquer 2 arduino entre eux avec des modules NRF24L01. Mais (comme vous vous en doutez :grinning: ) ça ne marche pas.

Je doit lire l'état d'un bouton sur une télécommande et puis l'envoyer sur le recepteur et simplement le faire s'afficher sur le moniteur série. J'ai déjà vérifier que l'état du bouton était bien reçu sur la télécommande avec son moniteur série.

Quand je regarde le moniteur série du récepteur, pluseurs zéro puis 3 ou 4 nombre "aléatoires" se suivent en continu que le bouton soit ouvert ou fermé.
Voici un exemple de ce que je vois :
18:19:46.737 -> Etat bouton : 16448
18:19:46.772 -> Etat bouton : 0
18:19:46.772 -> Etat bouton : 16448
18:19:46.805 -> Etat bouton : 16448
18:19:46.839 -> Etat bouton : 0
18:19:46.839 -> Etat bouton : 30326
18:19:46.874 -> Etat bouton : 0
18:19:46.874 -> Etat bouton : 30326
18:19:46.908 -> Etat bouton : 0
18:19:46.942 -> Etat bouton : 30326
18:19:46.942 -> Etat bouton : 0
18:19:46.976 -> Etat bouton : 30326
18:19:46.976 -> Etat bouton : 30326

Voici le code de la télécommande :

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


#define RF24_CE 7
#define RF24_CS 8
#define MonAdresse  (uint8_t *) "MySat"

RF24 radio(RF24_CE,RF24_CS);

int n;

void setup (void){
  Serial.begin(9600);
  Serial.println("Emetteur RF24");
  
  radio.begin();
  radio.setChannel(10);
  radio.setAutoAck(false);
  radio.openWritingPipe(MonAdresse);

  pinMode(2, INPUT_PULLUP);
}



void loop () {
  
  int sensorVal = digitalRead(2);
  Serial.print("Valeur bouton : ");
  Serial.println(sensorVal);

  
  radio.write(&sensorVal, sizeof(sensorVal));
  delay(10);
}

Et celui du récepteur :

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

#define RF24_CE 7
#define RF24_CS 8
#define TonAdresse (uint8_t *) "MySat"

RF24 radio(RF24_CE,RF24_CS);

void setup () { 
  Serial.begin(9600);
  Serial.println("Recepteur RF24");
  radio.begin();
  radio.setChannel(10);
  radio.setAutoAck(false);
  radio.openReadingPipe(1,TonAdresse);
  radio.startListening();
}

int valBout;

void loop (void) {
  if ( radio.available() ) {
    radio.read(&valBout, sizeof(valBout));
    Serial.print("Etat bouton : ");
    Serial.println(valBout);
  }
}

Il y a surement de bêtes fautes, excuser moi : je débute :slight_smile:

Et si vous vous demandez pourquoi je fais ça, c'est parce que je participe à Robotix's Junior (équivalent belge des Trophés de Robotique) :smiley:

D'avance merci pour votre aide,
Benjamin

Bonjour,

Essaies d'augmenter le delay()
A 9600 bauds le récepteur n'a pas le temps d'afficher le message. Tu devrais utiliser une vitesse de 115200bds pour Serial.

J'ai essayé ça mais ça n'a pas l'air de marcher...

Par contre je viens de remarquer que les chiffres du récepteur continue de défiler bizarrement même quand je débranche l'alimentation de la télécommande. Est ce normal ?

Merci

Bonjour,
as tu mis un condo de forte valeur entre +3.3V et le GND, pour moi cela a résolu mes problèmes.
Cdt.
Marcus

Bonjour,

J'ai un petit module qu'on alimente en 5 volts et qui régule la tension donc je ne pense pas que ce soit ça

Quelqu'un d'autre a une idée ?

Merci,
Benjamin