Bonsoir à tous,
Je me suis lancé dans la programmation de mes 2 arduinos UNO avec nRF24L01 ce week-end.
J'ai parcouru le forum et les différents tutos sur le web avant donc:
connexions soudées entre nRF et arduino
Petit condo soudé aux bornes de l'alimentation des nRF.
RF24 library => TMRh20 version
Test programme "Hello world" => OK
Test prog de Robin2 Simple one way transmission Simple nRF24L01+ 2.4GHz transceiver demo - Exhibition / Gallery - Arduino Forum => transmission OK sur mes arduino.
Je me lance dans la programmation de mon projet:
Un arduino (station) envoie une requête de données à un 1er arduino (R1)
R1 reçoit la requête et envoie ses données à la station
Une fois les données reçues, la station envoie une requête de données à un 2ème arduino (R2)
R2 reçoit la requête et envoie ses données à la station
La compilation est ok par contre la station n'arrive pas à établir de connexion avec R1...
bool ok = radio.write(& d, sizeof(d) );
ok ne passe jamais à 1 et R1 reste toujours en attente.
Si vous pouviez jeter un coup d'œil sur la structure de mes 2 programmes car je sèche depuis 2 jours et je dois passer à côté de quelque chose.....
Merci pour votre aide
Code Station
#include <SPI.h>
#include <nRF24L01.h>
#include <printf.h>
#include <RF24.h>
#include <SoftwareSerial.h>
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>
Adafruit_BMP280 bmp;
const byte R1 = "00001";
const byte R2 = "00002";
const byte Station = "00099";
RF24 radio(9, 10);
const char d[] = "request";
int R_1[3];
int R_2[3];
int Station_t[9];
void setup()
{
Serial.begin(9600);
Serial.println("Programme station");
radio.begin();
Serial.print("Radio connected : ");
Serial.println(radio.isChipConnected() ? "YES" : "NO");
radio.setChannel(115);
radio.setDataRate( RF24_250KBPS ) ;
radio.setPALevel(RF24_PA_LOW);
radio.setRetries(15,15);
radio.openWritingPipe(R1);
radio.openReadingPipe(1,Station);
//bmp.begin(0x76);
TryAgain:
bool ok = radio.write(& d, sizeof(d) );
Serial.println(ok);
if (ok)
{
Serial.println("radio.write ok...");
}
else
{
Serial.println("radio.write failed !");
delay(3000);
goto TryAgain;
}
Serial.println("Requète envoyée à R1");
radio.startListening(); // Station as Receiver
}
void loop()
{
if( radio.available() )
{
radio.read( &R_1, sizeof( R_1));
for(int i=0; i<3; i++)
{
Station_t[i] = R_1[i];
Serial.println(R_1[i]);
delay(1000);
}
radio.stopListening(); // Station as Transmitter
radio.openWritingPipe(R2);
radio.write(& d, sizeof(d) );
Serial.println("Requète envoyée à R2");
radio.startListening();
while(1)
{
if( radio.available() )
{
radio.read( &R_2, sizeof( R_2));
for(int i=0; i<3; i++)
{
Station_t[i+3] = R_2[i];
Serial.println(R_2 [i]);
delay(1000);
}
Serial.println("toutes les mesures:");
Station_t[6] = bmp.readTemperature();
Station_t[7] = bmp.readPressure();
Station_t[8] = bmp.readAltitude(1013.25);
for(int i=0; i<9; i++)
{
Serial.println(Station_t[i]);
delay(1000);
}
}
}
}
}
Code R1
#include <SPI.h>
#include <nRF24L01.h>
#include <printf.h>
#include <RF24.h>
#include <DHT.h>
#include "DHT.h"
#include "HX711.h"
#define DHTPIN 4
#define DHTTYPE DHT22
#define calibration_factor 7050.0
#define DOUT 3 // HX711
#define CLK 2 // HX711
HX711 scale;
DHT dht(DHTPIN, DHTTYPE);
const byte R1 = "00001";
const byte Station = "00099";
RF24 radio(9, 10);
const char demande[] = "request";
int mesures[3];
void setup()
{
dht.begin();
Serial.begin(9600);
radio.begin();
Serial.print("Radio connected : ");
Serial.println(radio.isChipConnected() ? "YES" : "NO");
radio.setChannel(115);
radio.setDataRate( RF24_250KBPS ) ;
radio.setPALevel(RF24_PA_LOW);
radio.setRetries(15,15);
//scale.set_scale(calibration_factor);
//scale.tare();
radio.openWritingPipe(Station); // 00099 ST
radio.openReadingPipe(1, R1); // 00001 R1
delay (1000);
Serial.println("en attente requète station...");
delay (1000);
}
void loop()
{
if( radio.available() )
{
Serial.println("une demande est recue");
mesures[0] = dht.readTemperature();
mesures[1] = dht.readHumidity();
mesures[2] = scale.get_units();
Serial.println(dht.readTemperature());
delay(100);
radio.read( &demande, sizeof(demande) );
radio.stopListening(); //R1 as Transmitter
delay(4000);
radio.write(& mesures, sizeof(mesures) );
Serial.println("les mesures sont envoyées à la station");
radio.startListening(); // R1 as Receiver
}
}