Projet Station Météo Pro : nouvel abri construit

Depuis le démarrage de la station, j’avais constaté une légère surestimation des températures en comparaison avec les stations météo environnantes. Le fait que la sonde soit sur le toit était un problème. J’ai donc installé un nouvel abri météo dans le jardin.

Fabrication de l’abri

Je suis reparti sur un abri à coupelle imprimé en 3D (merci chérie) (sources stl ici) dont l’intérieur des coupelles a été peint en noir pour absorber la chaleur. Le reste des coupelles est peint en blanc.

L’abri est composé d’une coupelle chapeau plus large que les autres (pour protéger des intempéries), d’une coupelle pleine, de 4 coupelles creuses, et d’un support bas.

Avant peinture
Intérieur des coupelles en noir
Dessus peint en blanc

Puis l’ensemble a été assemblé à l’aide de tiges filetées de 5mm. J’ai rajouté des écrous aux entretoises existantes pour une meilleure circulation d’air.

L’ensemble a été fixé sur un mat de 2m de haut pour être au dessus de la haie côté ouest. L’abri est à 10m d’un grand sapin, seul obstacle près. Je n’ai pas pu faire autrement.

Depuis la maison, j’ai tiré environ 70m de câble pour aller jusqu’à la sonde !

Vue vers l’est
Vue vers le sud
Vue vers l’ouest

La sonde

J’ai d’abord testé avec un SHT31, via le protocole i2c. Bien mal m’en a pris, le protocole i2c ne supporte pas la longueur et ne fonctionne plus au bout de quelques mètres …

Dans mon stock, j’avais encore des sondes 1wire DS18B20, que j’affectionne particulièrement. Après avoir checké la datasheet, la longueur n’était pas un problème. Me voilà parti pour câbler la sonde.

Sonde DS18B20
Raccord câble – sonde

Code source

Pour fiabiliser les mesures, j’ai fait comme avec le BME280 : j’ai fait une moyenne sur 1 min. Mais attention, le DS18B20 a quelques variations à la mesure. J’ai donc enregistré les valeurs dans un tableau (20 valeurs en 1 min), puis trier le tableau par valeurs croissantes (cf. la librairie ArduinoSort) puis j’ai écarté les extrêmes (3 à chaque fois). J’ai fait la moyenne des valeurs restantes pour être au plus près de la réalité. Voici ci dessous le code de test :

#include <DallasTemperature.h>
#include <ArduinoSort.h>


unsigned long previousMillis=   0;
unsigned long previousMillis2=  0;
unsigned long delaiAnemometre = 3000L;    //3 secondes
unsigned long delaiProgramme =  60000L;   //60 sec

int tab_index = 0;
int tab_indexMin = 0;
int tab_indexMax = 0;

int nbValeur = 0;
float tempFinale(0);

float cumul(0);
float temp(0);
static float tab[20]; 

void setup()
{
  Serial.begin(9600);
  Serial.println("starting ...");
}

void loop()
{  
  unsigned long currentMillis = millis(); // read time passed
  if (currentMillis - previousMillis > delaiAnemometre){
    previousMillis = millis();
    OneWire oneWire(8);
    DallasTemperature sensors(&oneWire);  
    sensors.begin();  
    sensors.setResolution(11); //0,125°C
    sensors.requestTemperatures(); // Send the command to get temperatures
    Serial.print("Temp");
    Serial.print(":");
    temp = sensors.getTempCByIndex(0);
    if((temp == -127) or (temp > 70)){
      Serial.println("N/A");
    }
    else{
     // Serial.println(temp);        
      tab[tab_index] = temp; //remplir tableau avec 10 valeurs du capteur qui se suivent
      Serial.print(tab_index);
      Serial.print(" : ");
      Serial.println(tab[tab_index]);  
      tab_index++;
    } 
  }

  //Toutes les minutes, compilation des valeurs et envoi au serveur  
  if (currentMillis - previousMillis2 > delaiProgramme){
    previousMillis2 = millis();
    sortArray(tab, tab_index);
    tab_indexMin = 3;
    tab_indexMax = tab_index - 4;
    
    for (int i = tab_indexMin ; i < tab_indexMax ; i++){   
          cumul += tab[i] ; //somme des valeurs du tableau
          nbValeur++;
    }
    Serial.println("----------------");
    Serial.print("Temp moy : ");
    tempFinale = cumul/nbValeur;
    Serial.println(tempFinale);  
    Serial.println("----------------");
    cumul = 0;
    nbValeur = 0;
    tab_index = 0;
  }   
} 

Conclusion

Après quelques péripéties de code, tout s’est bien passé. La valeur de la température est désormais beaucoup plus proche de la réalité grâce à cet abri.

2 Comments

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.