Bonjour,
J'ai un problème avec mes modules nRF24, il marche a moitie. Le client envoie un code au serveur et le serveur lui retourne un code de confirmation et la rien le client ne reçois rien.... J'ai jamais le message coté client de "Data recu".
Coté client
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
String cmd = "";
void setup(){
Serial.begin(9600);
Mirf.cePin = 9; // CE sur D8
Mirf.csnPin = 8; // CSN sur D7
Mirf.spi = &MirfHardwareSpi; // On veut utiliser le port SPI hardware
Mirf.init(); // Tout est bon ? Ok let's go !
Mirf.channel = 0; // On va utiliser le canal 0 pour communiquer (128 canaux disponible, de 0 à 127)
Mirf.payload = sizeof(unsigned long); // = 4, ici il faut déclarer la taille du "payload" soit du message qu'on va transmettre, au max 32 octets
Mirf.config(); // Tout est bon ? Ok let's go !
Mirf.setTADDR((byte *)"nrf02"); // Le 2eme module va envoyer ses info au 1er module
Mirf.setRADDR((byte *)"nrf01"); // On définit ici l'adresse du 2eme module
Serial.println("Client");
Mirf.powerUpRx();
}
void loop(){
byte data_recu[Mirf.payload];
if (Serial.available()){
cmd = Serial.readString();
Commande();
}
if(Mirf.dataReady())
Serial.println("Data recu");
}
void Commande() {
byte code[Mirf.payload];
Serial.print("Envoie....");
code[0] = 0;
code[1] = 'I';
code[2] = 1;
code[3] = 'A';
Mirf.send(code);
delay(1);
while(Mirf.isSending());
Serial.println("OK");
}
Coté serveur
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
void setup(){
Serial.begin(9600);
Mirf.cePin = 9; // CE sur D8
Mirf.csnPin = 8; // CSN sur D7
Mirf.spi = &MirfHardwareSpi; // On veut utiliser le port SPI hardware
Mirf.init(); // Tout est bon ? Ok let's go !
Mirf.channel = 0; // On va utiliser le canal 0 pour communiquer (128 canaux disponible, de 0 à 127)
Mirf.payload = sizeof(unsigned long); // = 4, ici il faut déclarer la taille du "payload" soit du message qu'on va transmettre, au max 32 octets
Mirf.config(); // Tout est bon ? Ok let's go !
Mirf.setTADDR((byte *)"nrf01"); // Le 2eme module va envoyer ses info au 1er module
Mirf.setRADDR((byte *)"nrf02"); // On définit ici l'adresse du 2eme module
Serial.println("Serveur");
}
void loop(){
byte data_recu[Mirf.payload]; // Tableau de byte qui va stocker le message recu
if(!Mirf.isSending() && Mirf.dataReady())
{ // Si un message a été recu et qu'un autre n'est pas en cours d'emission
Serial.print("Recu ");
Mirf.getData(data_recu); // on récupère le message
afficher_4_octets(data_recu);
delay(1000);
Commande(data_recu);
}
}
void Commande(byte* data_recu){
byte code[Mirf.payload];
if(data_recu[1] == 'I'){
code[0] = 0;
code[1] = 0;
code[2] = 0;
code[3] = 1;
Mirf.send(code);
while(Mirf.isSending());
Serial.println("Envoie OK");
}
}
//Fonction affichage de contrôle
void afficher_4_octets(byte data[4])
{
for (int i=0;i<4;i++)
{Serial.print(data[i]);
Serial.print(" ");
}
}
voilà je comprend pas j'ai essayer de changer les modules de les inverser toujours le même problème, je désespère
Cordialement