Bonjour
je suis sur le projet de faire une station météo avec température intérieur et extérieur et traceur solaire
avec le module NRF24L01en bidirectionnel.
mon problème es, je voudrai envoyer un raz de la température du maxi, mini sur la station extérieur une fois part jour mai cela ne marche pas. je reçois les donnée de l'extérieur qui sont afficher sur l'écran a l'intérieur
voila le code de l'extérieur
/* Arduino Transmitter Code
by Dejan Nedelkovski, www.HowToMechatronics.com
Library: TMRh20/RF24, https://github.com/tmrh20/RF24/ */
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <Servo.h>
#define SEALEVELPRESSURE_HPA (1020.25)
RF24 radio(9, 8); // CE, CSN
const byte address[] [12] = {"00001", "00002"};
Adafruit_BME280 bme;
// 180 horizontal MAX
Servo horizontal; // horizontal servo
int servoh = 90; // 90; // support servo horizontal
int servohLimitHigh = 180; //180
int servohLimitLow = 20; //65
// 65 degrer MAX
Servo vertical; // vertical servo
int servov = 90; // 90; // support servo vertical
int servovLimitHigh = 120; //120
int servovLimitLow = 20; //15
// LDR pin connections
// name = analogpin;
int ldrlt = 2; //LDR top left - BOTTOM LEFT <--- BDG
int ldrrt = 3; //LDR top rigt - BOTTOM RIGHT
int ldrld = 0; //LDR down left - TOP LEFT
int ldrrd = 1; //ldr down rigt - TOP RIGHT
float QNH = 1022.67; //Change the "1022.67" to your current sea level barrometric pressure (https://www.wunderground.com)
const int BME_address = 0x76;
float maxmin;
float pressure;
float temperature;
float extmin_temp = 100;
float extmax_temp = -100;
float extmax_humi = -10;
float extmin_humi = 110;
float altimeter;
float humidity;
float temp_jour = 0;
float data[12];
char charVal[17];
bool radioNumber = 0;
bool role = 0;
void setup() {
Serial.begin(9600);
Serial.println("BMP280/NRF24L01 link");
// servo connections
// name.attacht(pin);
horizontal.attach(5);
vertical.attach(6);
horizontal.write(180);
vertical.write(45);
bme.begin(BME_address);
radio.begin();
radio.openWritingPipe(address[ 1 ]);
radio.openReadingPipe(1,address[ 0 ]);
radio.setPALevel(RF24_PA_MIN);
//radio.startListening();
if (!bme.begin(0x76)) {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
while (1);
}
}
void loop()
{
// reception_raz();
int lt = analogRead(ldrlt); // top left
int rt = analogRead(ldrrt); // top right
int ld = analogRead(ldrld); // down left
int rd = analogRead(ldrrd); // down rigt
// int dtime = analogRead(4)/20; // read potentiometers
// int tol = analogRead(5)/4;
int dtime = 10;
int tol = 50;
int avt = (lt + rt) / 2; // valeur moyenne top
int avd = (ld + rd) / 2; // valeur moyenne en baisse
int avl = (lt + ld) / 2; // valeur moyenne restante
int avr = (rt + rd) / 2; // valeur moyenne à droite
int dvert = avt - avd; // check the diffirence of up and down
int dhoriz = avl - avr;// check the diffirence og left and rigt
Serial.print(avt);
Serial.print(" ");
Serial.print(avd);
Serial.print(" ");
Serial.print(avl);
Serial.print(" ");
Serial.print(avr);
Serial.print(" ");
Serial.print(dtime);
Serial.print(" ");
Serial.print(tol);
Serial.println(" ");
if (-1*tol > dvert || dvert > tol) // check if the diffirence is in the tolerance else change vertical angle
{
if (avt > avd)
{
servov = ++servov;
if (servov > servovLimitHigh)
{
servov = servovLimitHigh;
}
}
else if (avt < avd)
{
servov= --servov;
if (servov < servovLimitLow)
{
servov = servovLimitLow;
}
}
vertical.write(servov);
}
if (-1*tol > dhoriz || dhoriz > tol) // check if the diffirence is in the tolerance else change horizontal angle
{
if (avl > avr)
{
servoh = --servoh;
if (servoh < servohLimitLow)
{
servoh = servohLimitLow;
}
}
else if (avl < avr)
{
servoh = ++servoh;
if (servoh > servohLimitHigh)
{
servoh = servohLimitHigh;
}
}
else if (avl = avr)
{
// nothing
}
horizontal.write(servoh);
}
delay(dtime);
pressure = bme.readPressure()/100; //and conv Pa to hPa
temperature = bme.readTemperature();
altimeter = bme.readAltitude (QNH); //QNH is local sea lev pressure
humidity = bme.readHumidity();
if(temperature > extmax_temp) {extmax_temp = temperature;} // set max temperature
if(temperature < extmin_temp) {extmin_temp = temperature;} // set min temperature
if(humidity > extmax_humi) {extmax_humi = humidity;} // set max temperature
if(humidity < extmin_humi) {extmin_humi = humidity;} // set min temperature
data[0] = pressure;
data[1] = temperature;
data[2] = altimeter;
data[3] = humidity;
data[4] = extmax_temp;
data[5] = extmin_temp;
data[6] = extmax_humi;
data[7] = extmin_humi;
data[8] = temp_jour;
//----- display on local monitor: ------------
Serial.print(data[0]); Serial.print("hPa ");
Serial.print(data[1]);
Serial.write(0xC2); //send degree symbol
Serial.write(0xB0); //send degree symbol
Serial.print("C ");
Serial.print(data[2]); Serial.println("m");
Serial.print(data[3]); Serial.println("%");
Serial.print(data[5]); Serial.println("degre");
Serial.print(data[4]); Serial.println("degre");
Serial.print(data[6]); Serial.println("%");
Serial.print(data[7]); Serial.println("%");
radio.startListening();
if (radio.available()) //nrf24l01 capteur pression reçu
{
radio.read(&data, sizeof(data));
//while (!radio.available())
Serial.println("raz temp et humiditer");
if (temp_jour =1)
{
extmax_humi = -10;
extmin_humi = 110;
extmin_temp = 100;
extmax_temp = -100;
delay(500);
}
else
{
Serial.println ("Aucune radio disponible");
}
}
delay(5);
radio.stopListening();
radio.write(&data, sizeof(data));
// delay(1000);
}
/*void reception_raz()
{radio.startListening();
if (radio.available()) //nrf24l01 capteur pression reçu
{
radio.read(&data, sizeof(data));
//while (!radio.available())
Serial.println("raz temp et humiditer");
if (temp_jour ==1)
{
extmax_humi = -10;
extmin_humi = 110;
extmin_temp = 100;
extmax_temp = -100;
delay(500);
}
else
{
Serial.println ("Aucune radio disponible");
}
}
}*/
et voila le fichier de la station intérieur
station_meteo__recepteur_fini_06_bis.ino (29.4 KB)