Station météo v2

sation_météo_image

Salut tout le monde !

Il y a quelque temps, je présentais la première version de ma station météo un peu simple qui envoyait des données sur ThingSpeak. Cette première version avait l’avantage d’être seule et de ne pas avoir de protocole particulier étant donné qu’elle ne faisait que récupérer les données de l’Arduino pour les exporter sur ThingSpeak avec la Raspberry. Le seul protocole utilisé était de récupérer les données sur le port USB.

Cette nouvelle version apporte quelques modifications. En effet, j’ai ajouté des modules pour avoir des données de température dans le salon et à l’extérieur. Pour ces deux nouveaux modules, j’ai utilisé des Adafruit HUZZAH ESP8266 (image ci-dessous)

image_huzzah_ESP8266

 

Et j’ai installé un capteur d’humidité et température (DHT11) que je trouve pas précis pour le module du salon. Ce module intérieur dans la salon est comme ci-dessous:

image_huzzah_meteo_top

image_huzzah_météo_bottom

Et sur le module extérieur j’ai installé aussi un capteur de température et humidité DHT11 où je viens récupérer uniquement l’humidité, un capteur Dallas ds18b20, et un capteur d’eau. Voici le module extérieur:

image_station_out_bottom image_météo_out_in image_météo_out_top

 

On peut voir plusieurs éléments sur ce module extérieur. Le premier est que j’ai installé ce matériel dans une boite étanche, cette boite est une boite de dérivation d’électricité que l’on trouve en magasin de bricolage. Ce type de boite à l’avantage d’être étanche, compacte, et a des sorties de câbles que l’on peut ouvrir pour passer nos câbles. Ensuite on peut aussi voir que les câble-management dans la boite n’est pas au top, en effet, j’ai soudé les éléments entre-eux de manière à ce que ça fonctionne et pas spécialement à ce que se soit jolie. La troisième chose c’est que le capteur de pluie sur le dessus de la boite est collé avec de la colle chaude au pistolet pour faire l’étanchéité, et on peut aussi voir que le capteur est oxydé. En effet en étant sur Grenoble, les pluies sont souvent acides et le capteur prend cette eau acide et donc s’oxyde. Et en enfin le capteur de température Dallas est collé directement sur la boite en extérieur. Ce capteur étant étanche, cela ne pose aucun problème à ce qu’il soit mis directement en extérieur.

Ces capteurs envoient aussi les données sur ThingSpeak pour pouvoir les consulter comme je veux en utilisant l’API. Je parlerai dans un prochain article de l’interface de visualisation de mes données météo.

 

Concernant le code dans les cartes, dans celui du module extérieur je l’ai configuré comme ceci:

/*Bibliothèques */ 
#include "DHT.h" 
#include <ESP8266WiFi.h> 
#include <DallasTemperature.h> 
#include <OneWire.h>  
/*Definition des variables */ 
const char* ssid     = "SSID"; 
const char* password = "PASSWORD"; 
 
// ThingSpeak Settings 
const char* server = "api.thingspeak.com"; 
String apiKey1 = "API_KEY"; 
OneWire oneWire(13); 
DallasTemperature sensors(&oneWire); 
DeviceAddress sensorDeviceAddress;  
 
#define DHTPIN 12 
#define DHTTYPE DHT11 
DHT dht(DHTPIN, DHTTYPE, 12); 
WiFiClient client; 
 
void setup() { 
  dht.begin(); 
  Serial.begin(9600); 
  sensors.begin(); 
  sensors.getAddress(sensorDeviceAddress, 0); 
  sensors.setResolution(sensorDeviceAddress, 12);  
  delay(10); 
   
   
//On se connecte au wifi 
 
Serial.println(); 
Serial.print("Connexion à "); 
Serial.println(ssid); 
WiFi.begin(ssid, password); 
while (WiFi.status() !=WL_CONNECTED) { 
  delay(500); 
} 
Serial.println(); 
Serial.println("Wifi connecté"); 
Serial.println("Adresse IP: "); 
Serial.println(WiFi.localIP()); 
} 
 
void loop() { 
 
  //Maintenant qu'on est connecté, on récupère les valeurs de température et humidité 
  float humidity = dht.readHumidity(); 
  Serial.println(dht.readHumidity()); 
  float temperature = dht.readTemperature(); 
  Serial.println(dht.readTemperature()); 
  sensors.requestTemperatures(); 
  Serial.println(sensors.getTempCByIndex(0)); 
  if (client.connect(server,80)){ 
    String postStr = apiKey1; 
           postStr +="&field1="; 
           postStr += String(temperature); 
           postStr += "&field2="; 
           postStr += String(humidity); 
           postStr += "&field3="; 
           postStr += String(sensors.getTempCByIndex(0)); 
           postStr += "\r\n\r\n"; 
     client.print("POST /update HTTP/1.1\n"); 
     client.print("Host: api.thingspeak.com\n"); 
     client.print("Connection: close\n"); 
     client.print("X-THINGSPEAKAPIKEY: "+apiKey1+"\n");  
     client.print("Content-Type: application/x-www-form-urlencoded\n");  
     client.print("Content-Length: ");  
     client.print(postStr.length());  
     client.print("\n\n");  
     client.print(postStr); 
  } 
  client.stop(); 
delay(10000); 
} 

 

Et pour la carte du module du salon:

#include "DHT.h" 
#include <ESP8266WiFi.h> 
 
/*Definition des variables */ 
const char* ssid     = "SSID"; 
const char* password = "PASSWORD"; 
 
// ThingSpeak Settings 
const char* server = "api.thingspeak.com"; 
String apiKey1 = "API_KEY"; 
 
#define DHTPIN 12 
#define DHTTYPE DHT11 
DHT dht(DHTPIN, DHTTYPE, 12); 
WiFiClient client; 
 
void setup() { 
  dht.begin(); 
  Serial.begin(9600);  
  delay(10); 
   
   
//On se connecte au wifi 
 
Serial.println(); 
Serial.print("Connexion à "); 
Serial.println(ssid); 
WiFi.begin(ssid, password); 
while (WiFi.status() !=WL_CONNECTED) { 
  delay(500); 
} 
Serial.println(); 
Serial.println("Wifi connecté"); 
Serial.println("Adresse IP: "); 
Serial.println(WiFi.localIP()); 
} 
 
void loop() { 
 
  //Maintenant qu'on est connecté, on récupère les valeurs de température et humidité 
  float humidity = dht.readHumidity(); 
  Serial.println(dht.readHumidity()); 
  float temperature = dht.readTemperature(); 
  Serial.println(dht.readTemperature()); 
  if (client.connect(server,80)){ 
    String postStr = apiKey1; 
           postStr +="&field1="; 
           postStr += String(temperature); 
           postStr += "&field2="; 
           postStr += String(humidity); 
           postStr += "\r\n\r\n"; 
     client.print("POST /update HTTP/1.1\n"); 
     client.print("Host: api.thingspeak.com\n"); 
     client.print("Connection: close\n"); 
     client.print("X-THINGSPEAKAPIKEY: "+apiKey1+"\n");  
     client.print("Content-Type: application/x-www-form-urlencoded\n");  
     client.print("Content-Length: ");  
     client.print(postStr.length());  
     client.print("\n\n");  
     client.print(postStr); 
  } 
  client.stop(); 
delay(10000); 
} 

 

Le cheminement du code est le suivant:

  • Importation des librairies
  • Connexion au wifi
  • Initialisation des capteurs dans le void Setup
  • Récupération des informations et envoie des données sur ThingSpeak dans le void loop

Ces deux modules me permettent donc de pouvoir visualiser les températures et humidités du salon et de l’extérieur. Dans le but de pouvoir gérer et visualiser toujours plus d’informations dans mon habitat, je pense encore améliorer mon module intérieur mais je n’en dis pas plus.

Si vous voulez voir la version 1 de la station je vous laisse aller ici.

Je vous laisse là-dessus, et vous dis à bientôt !

F.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

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