Station météo

Introduction

Le but de cette page est de vous présenter ma station météo. Ce site étant axé sur l'électronique et l'instrumentation, je ne vais pas présenter le code en lui-même. Je vais vous présenter les capteurs utilisés, la méthode utilisée pour l'enregistrement des données, la transmission de données entre les cartes, et bien sur, le montage (d'abord réalisé sur plaquette d'essais puis soudé !).

Le projet n'est pas terminé. Certes, il est fonctionnel, mais pour l'instant, je suis obligé de passer par l'interface de communication d'Arduino pour récupérer les précieuses données. Le prochain objectif est de récolter les données avec LabVIEW.

Petite précision: J'ai réalisé cette station météo durant les vacances d'été avant mes cours de pilotage du 3e semestre (que vous pouvez retrouver dans la section Notions d'Electronique...). La méthode utilisée n'est pas optimale, et je n'ai pas le courage de tout reprendre sur la programmation des cartes ! "Après tout si ca marche !..."

Bonne lecture !!

Capteurs

Tempérarture et Humidité: DHT22

DHT22
Capteur DHT22
Température / Humidité
DHT22_Datasheet
Extrait de la fiche technique du capteur (datasheet)

Tout en un ! Ce capteur permet d'obtenir la température (en celsius ou en fahrenheit), et le taux d'humidité dans l'air. La plage de fonctionnement du capteur pour la température est de -40C a +80C, ce qui convient largement pour notre station meteo. Pour l'humidité, elle est de 0% a 100%.
Ce capteur possède également une meilleure précision au niveau des mesures par rapport au DHT11.

Luminosité: Photorésistance

Comme son nom l'indique, c'est un composant qui voit sa résistivité varier en fonction de la luminosité. Il suffit de lire la broche analogique de la carte Arduino.

Petite amélioration à effectuer: Pour l'instant, je ne fais que lire la broche analogique de la carte. Je dois maintenant comparer la valeur lue à un niveau d'éclairement A suivre !

Haut de page

Cartes Arduino utilisées

J'utilise 2 cartes:

La carte UNO me permet d'avoir un espace de stockage important (environ 50 mesures de température/humidité/luminosité) avec une petite marge pour éviter les plantages... En sachant que l'on peut régler la fréquence d'enregistrement, en enregistrant tous les jours, j'ai de quoi tenir un peu moins de 2 mois avant que le processus de moyennage de l'historique débute...Largement acceptable pour ce que j'en fais !

Haut de page

Enregistrement des données: Moyennage

Problème - Situation

Problème: La mémoire de la carte est limitée. Une fois pleine, que faire pour enregistrer une nouvelle valeur ?

Il a fallu décider de l'utilité précise de la station.

Comportement du programme lors de l'enregistrement d'une valeur lorsque la mémoire n'est pas pleine

Les valeurs seront stockées dans des "cases". Dans cette partie, je vais (tenter) de vous expliquer ce qui ce passe lorsqu'il reste des cases de libre. En clair, nous pouvons continuer d'enregistrer des valeurs sans déclencher le processus de moyennage.

Nous appellerons "jetons" le nombre d'enregistrements dans une case. Attention ! Pour moi, un "enregistrement", (ou "jeton") est composé de 3 valeurs: (Température, Humidité et Luminosité) à un instant t !

Si la mémoire n'est pas pleine à la date t:

Enregistrement
Enregistrement des données

Lorsque la mémoire est pleine...

Si la mémoire est pleine, la première version du programme applique ces règles: (on rappelle que nous voulons moyenner les valeurs les plus anciennes et garder un maximum de valeurs dans un passé récent)

Voici le processus en image !
Enregistrement
Lorsque la mémoire est pleine...

En vous montrant cette image, je ne vous dis pas tout ! Il y a d'autres processus difficilement observables (voir invisibles) sur le tableur :)

Bien sur, l'exemple est très "simplifié" car il n'y a que 7 cases. Ma station météo en comporte 55.
Et le processus de moyennage est plus accentué sur ma station que sur l'exemple, c'est à dire qu'il n'y a que très peu de cases fusionnées, et les plus anciennes contiennent beaucoup de jetons.

Voici ce que donne une récupération de données: (classé chronologiquement)

Enregistrement c3
La fréquence d'enregistrement était de 15 secondes (pour les besoins de la démonstration), et la station a enregistré pendant 55 minutes.
4 cases ont été fortement moyennées (car elles ont un nombre de jetons important). Les autres n'ont pas été moyennées puisque le nombre de jeton est de 1.
On peut également le voir avec l'heure... Les cases ayant 1 seul jeton sont espacées de 15 secondes (=fréquence d'enregistrement souhaitée). Celles contenant plus de jetons sont plus espacées dans le temps...

Avec ce processus, nous avons une "(très) vague idée" de ce qui s'est passé il y a longtemps, mais au fur et à mesure qu'on se rapproche du présent, nous avons une idée de plus en plus précise !
Résultat en image:

Enregistrement c
Voici ce que donne le tracé de la résistivité (=luminosité) en fonction du temps, du tableau ci-dessus.
Le dernier point n'est pas une erreur, mais il correspond au moment ou j'ai allumé la lumière pour arrêter l'éxpérience !

Améliorations possibles...

Cette méthode peut paraître idéale... Mais le fait de moyenner mes valeurs me fait perdre des informations ! (mes données sont naturellement moins précises !). L'idéal serait de pouvoir conserver les données brutes. Cela me permettrait de voir les éventuelles variations, ou éventuelles erreurs de mesure (valeurs abérrantes).

J'envisage pour cela de transformer (voir refaire) ma station, de telle sorte à ce que celle-ci puisse transmettre la valeur brute à un serveur (sur mon réseau local). Un PC pourrait récupérer constament les valeurs brutes. Plus besoin de moyenner (en effet, plus de problèmes de stockage sur la carte Arduino)

Pour l'instant, c'est encore à l'état de projet, j'ai commencé à regarder comment mettre en place ce dispositif (notamment avec mes cours de Systèmes de Mesures en Réseaux de mon 3e semestre que je mettrai peut-être à disposition sur le site...).
J'ai déjà un module me permettant de transmettre des données sur un serveur local (NodeMCU ESP8266), ainsi qu'un programme LabVIEW permettant d'interroger le serveur et de récupérer les données.

Mon seul problème (pour l'instant) est que la carte alimente mes capteurs en 3.3V (alors que ceux-ci doivent être alimentés en 5V), ce qui provoque la transmission de données abérantes. Et puis, cette méthode m'oblige à laisser un PC allumé 24h/24 !!!


Affaire à suivre !

Haut de page

Transmission des données

Je parle de manière plus précise de la transmission/réception de données en liaison série dans mes cours/TP de Pilotage.
Télécharger mon compte rendu de TP correspondant: Communication de données en liaison série RS232 (GPS) - [fichier PDF] (nouvel onglet)

Principe général

Je dois gérer "plusieurs communications". Les ordres sont donnés par le PC sous forme de commandes (exemple: lettre "h" pour avoir l'historique, "s" pour obtenir l'historique et le supprimer après...). La carte UNO exécute les actions suivant la lettre reçue ("h" ou "s"). La carte NANO sert de relai entre le PC et la carte UNO.

Cependant, ce schéma comporte un problème. Nous avons ici une liaison série, avec un maitre (qui donne les ordres, et qui écoute les resultats), et un esclave qui execute les ordres (transmission des données au bon moment). Il ne peut y avoir que 2 appareils qui communiquent ensemble ! (car il n'y a pas d'"adressage" dans ce type de liaison)
Dans ce type de communication, il y a 3 connexions: La masse, la transmission et la reception de données. Or, dans mes explications, il y a 3 appareils, et dans l'état actuel des choses, certains ports de communication sont reliés à plusieurs appareils. Par exemple, la broche de reception de la NANO est reliée au PC (pour recevoir les ordres), et à la carte UNO (pour recevoir les données). PROBLEME !!!!

La solution est de mettre en place 2 liaisons de communications. La première s'effectue (via le port USB) entre la carte NANO et le PC. La seconde voie de communication s'effectue via un câble soudé par mes soins entre les 2 cartes Arduino (UNO + NANO).
Regardez le schéma ci-dessous, vous comprendrez mieux !

Schéma récapitulatif

Tx-Rx
Broches Tx et Rx

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Schema fonctionnel de la transmission de donnees de la station meteo
Schéma fonctionnel de la transmission de données

Haut de page

Montage global des capteurs

Montage global des capteurs
Montage global des capteurs

Haut de page

Quelques photos...

Photo station meteo sur plaquette d'essais
Montage sur plaquette d'essais pour tester le montage, les capteurs et autres fonctionnalités
(bouton pour régler la fréquence d'enregistrement, diode pour controler l'état de la machine...)


Photo station meteo assemblee
Les tests sont bons. Soudure des câbles, branchements des différentes cartes (Arduino et Nano)
et mise en boite. Station prête à être utilisée !


Photo station météo reception des donnees sur PC
Réception des données avec le logiciel de programmation d'Arduino.
La réception avec LabVIEW ne devrait pas tarder !


Haut de page