Projet 9 - Station météo
Présentation
Ce projet consiste à réaliser une station météo autonome consultable à travers un réseau Wi-Fi. En effet, pour mesurer des données météorologiques de manière précise, il est préférable d’installer les sondes dehors. Or, cette installation avec des capteurs électroniques nécessite une alimentation électrique et une liaison filaire pour transmettre les données à l’intérieur de l’habitation. Cette liaison filaire peut être problématique, car cela nécessite un trou dans un mur ou ailleurs, au détriment de l’étanchéité et de l’isolation de l’habitation.
Pour éviter ces inconvénients, cette station météo fonctionnera de manière autonome (à l’aide d’une batterie) et communiquera ses mesures de pression et de température via un réseau Wi-Fi.
Cette création sera une occasion d’utiliser l’une des cartes Arduino les plus récentes : la MKR1000. Celle-ci offre deux avantages très intéressants pour cette application, à savoir la possibilité d’établir des communications en Wi-Fi et un circuit de charge pour batterie lithium-ion.
Le capteur de température et de pression atmosphérique sera interfacé...
Matériel nécessaire
Le montage s’articule autour de plusieurs éléments :
-
une Arduino MKR1000 ;
-
un capteur météorologique BMP180 ou équivalent (communiquant en I2C) ;
Capteur BPM180
-
une batterie LiPo 3,7 V d’une capacité minimum de 700 mA ;
Batterie lithium-ion
-
une plaque de prototypage.
Schéma et montage
Après l’éventuelle étape de soudure des connecteurs, le montage est assez simple à finaliser.
À noter qu’il est inutile de connecter la batterie dans un premier temps, car l’Arduino sera alimentée par l’ordinateur durant la phase de programmation.
Le capteur BMP180 s’alimente avec la sortie VCC de l’Arduino MKR, qui fournit une tension de 3,3 V, et non de 5 V comme c’est le cas avec les autres cartes. Attention : alimenter le capteur avec une tension de 5 V risquerait de le détruire immanquablement !
Montage de la station météo
Le montage est représenté ici sous forme de simple câblage sur une plaque de prototypage, mais vous pouvez aussi enfermer le montage dans une boîte destinée à le protéger des intempéries. Il faut alors prendre soin de ménager des trous dans la boîte, à l’abri du ruissellement, afin que le capteur puisse faire ses mesures de l’air extérieur, tout en étant protégé de la pluie.
Programmation de l’Arduino
La programmation de la station météo passe par deux phases : mettre en œuvre le capteur pour établir des mesures de température et de pression, puis établir une communication Wi-Fi et créer un miniserveur de page web pour rendre lisibles ces mesures à travers le réseau.
Mais auparavant, il faut configurer l’IDE pour qu’il soit capable de programmer la carte MKR1000.
1. Configurer Arduino IDE pour gérer une nouvelle carte
Il est possible que la carte MKR1000 ne soit pas gérée par défaut par votre IDE Arduino. Dans ce cas, il faut intégrer les définitions de cette carte par l’intermédiaire du Gestionnaire de cartes .
Allez dans Outils - Type de carte - Gestionnaire de carte et saisissez « MKR1000 » dans le champ de recherche :
Installation de la carte MKR1000
Une fois les fichiers de configuration liés à la carte installés, celle-ci apparaît dans le sélecteur.
Sélection de la carte Arduino MKR1000
2. Vérification du fonctionnement du capteur
Dans un premier temps, il s’agit de réaliser des mesures de pression et de température ambiante avec le capteur, et de les afficher dans le moniteur série afin de vérifier le bon fonctionnement du capteur.
Pour cela, une bibliothèque de gestion du BMP180 doit être installée. Il en existe plusieurs, choisissez celle d’Adafruit.
De manière générale, l’IDE Arduino vous indiquera une erreur lors de la compilation s’il ne trouve pas les bibliothèques que vous tentez d’inclure dans le code source. Cela vous donnera une indication sur les bibliothèques à intégrer à partir du Gestionnaire de bibliothèques.
Le code suivant permet de vérifier le bon fonctionnement du capteur et la lecture correcte de la pression et de la température.
Dans les déclarations préalables, les bibliothèques/fichiers externes nécessaires (gestion de la communication via un bus I2C, bibliothèque unifiée Adafruit et pilote du circuit BMP180) sont chargés :
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP180085_U.h>
Par la suite, une instance...
Améliorations possibles
Cette station météo est déjà fonctionnelle, mais il peut être intéressant de l’améliorer.
1. Abriter le circuit
Ce montage étant censé mesurer les conditions météo à l’extérieur, il vaut mieux lui construire un abri. Il faut alors prendre soin de ménager des trous dans la boîte, à l’abri du ruissellement, afin que le capteur puisse prendre ses mesures depuis l’air ambiant, tout en étant protégé de la pluie.
Par ailleurs, en général, la température se mesure à plus de 1 mètre du sol, à l’abri du vent et du soleil direct.
2. Stocker les données sur une longue période
Contrairement aux autres microcontrôleurs de la gamme Arduino, celui de la carte MKR1000 est dépourvu de mémoire EEPROM, permettant de stocker des données sur le long terme. Rien n’empêche par contre d’utiliser un support externe, comme un lecteur de carte SD, qui offre la possibilité de stocker les mesures sur de longues périodes de temps.
Une autre solution est de loguer les données en ligne sur un autre serveur.
3. Réaliser un circuit moins coûteux
La carte MKR1000 de la gamme Arduino est capable de gérer le Wi-Fi, mais elle est aussi assez chère. Il est possible de réaliser un circuit moins coûteux en utilisant une carte Wi-Fi d’un fabricant concurrent de Arduino mais programmable avec l’IDE Arduino : les cartes à base du microcontrôleur ESP8266 développé par le fabricant chinois Espressif. Il en existe une multitude : ESP-01, NodeMCU, emos...
4. Affichage des mesures sous forme de graphes
Cette station météo fonctionne déjà...
Ressources supplémentaires
Comparaison entre la MKR1000 et le module ESP8266 (anglais) :
http://hackaday.com/2016/04/29/esp8266-or-mkr1000/
Ajouter un anémomètre sur votre station météo :
https://fr.vittascience.com/learn/tutorial.php?id=15
Calcul de la température ressentie :