Chronique de la création d’une station météo connectée autonome (2/?)

Cette chronique (qui durera quelques épisodes) a pour objectif de présenter le développement d’un projet numérique à but éducatif. Vous trouvez ici des détails techniques permettant de réaliser une station météorologique connectée et autonome.

Épisode 2   Améliorations et préparation de sortie

Cet épisode décrit l’installation des nouveaux composants de la station ainsi que la création d’un abris en vu d’une première sortie à l’extérieur.

Evolution du projet

Vue d’ensemble

Bien que la plupart des composants aient évolué, la structure principale du projet reste la même : une carte Arduino Mega 2560 R3 récupère et traite sommairement les données renvoyées par les différents capteurs.

Cependant, dans l’optique d’améliorer la connectivité et d’étendre les fonctionnalités de la station pour de futures améliorations, une carte Raspberry Pi 3A+ a été ajoutée.

Amazon : ici (35€)


Figure 1 – Carte Raspberry Pi 3A

Cette carte permettra, entre autres, d’héberger un serveur NodeJS qui gèrera la partie “connectée” de la station (interface de gestion avec données en direct et paramétrage, exécution de scripts Python…).

Remarque : Le choix d'un Raspberry Pi est critiquable énergétiquement parlant. En effet, l'alimentation étant de 5V 3A, la puissance maximale de 15W du Raspberry rendra complexe l'installation de futurs panneaux solaires... Affaire à suivre...

Afin d’avoir une vision plus globale, voici un schéma illustrant la structure du projet :


Figure 2 – Structure du projet

Evolution des composants

Plusieurs modifications ont été apportées aux capteurs utilisés dans le projet. Le choix des composants répond à deux attentes : plus de précision et de robustesse.

  • Température : Sonde numérique étanche DS18B20
  • Cette sonde est initialement calibrée par le fabriquant et présente l’avantage d’avoir une résolution variable allant de 9 (0.5°C) à 12 bits (0.00625°C). La plage de mesure s’étend de -55°C à 125°C avec une précision de 0.5°C entre -10°C et 85°C.
    AliExpress : ici (1.3€)
    La documentation : ici
    Un exemple de mise en oeuvre : ici

  • Pression atmosphérique : Capteur numérique I2C BMP280 3.3 V
  • Ce capteur renvoie une valeur de pression absolue entre 300 et 1100 hPa avec une précision absolue de +/- 1 hPa.
    AliExpress : ici (0.6€)
    La documentation : ici
    Un exemple de mise en oeuvre : ici

  • Humidité : Capteur numérique DHT22
  • Ce capteur renvoie une valeur d’humidité absolue entre 0% et 100% avec une précision absolue de 2% à 5%.
    AliExpress : ici (2.8€)
    La documentation : ici
    Un exemple de mise en oeuvre : ici

  • Particules fines : SDS011
  • Le capteur renvoie les concentration en particules fines (2.5 µm et 10 µm) avec une précision de 15% en s’appuyant sur le principe de diffusion de la lumière par les particules fines.
    AliExpress : (15.5€)
    La documentation : ici
    Un exemple de mise en oeuvre : ici

  • Capteur de gouttes :
  • Le capteur détecte la présence de gouttes à sa surface. Lorsqu’une goutte est présente, la résistance diminue.
    AliExpress : ici (0.8€)
    Un exemple de mise en oeuvre : ici

Descriptif technique

Création de l’abri

Afin de protéger la circuiterie, une boîte en bois recouverte d’une couche de vernis pour bateaux a été construite. Cette dernière se subdivise en deux parties :

  • L’intérieur de la boîte contenant deux boîtes étanches IP55 pour accueillir respectivement la carte Arduino et la carte Raspberry Pi.

  • Figure 3 – Intérieur de la boîte

  • Le haut de la boîte (extérieur) qui accueille les différents capteurs.

  • Figure 4 – Emplacement des capteurs

Afin de protéger les capteurs des intempéries, un toit a été créé. Une des problématiques ici est de protéger les capteurs de l’eau sans pour autant fausser les mesures.

Pour cela, le toit adopte une forme persiennée qui permet la libre circulation de l’air. Ce modèle est inspiré des “assiettes renversées” que l’on retrouve dans la plupart des stations. Un dispositif de montage simple avec fixation par écrous permet un accès rapide aux capteurs en cas de maintenance.


Figure 4 – La station dans son ensemble

Câblage


Figure 5 – Câblage complet de la station

Code Arduino

Le fichier ino et les librairies utilisées : en téléchargement direct

Les deux dernières fonctions du code permettent une communication bidirectionnelle entre la carte Arduino et le Raspberry via le port Serial.

Code NodeJS

Le serveur NodeJS installé sur le Raspberry permet de créer une interface Web en HTML/CSS/JS pour la visualisation des données en direct et le contrôle de la station à distance. Il permet aussi de renvoyer les données vers la base de données de EnSciences ou sur les réseaux sociaux (en utilisant l’API Twitter par exemple).

Je ne détaillerai pas ici la procédure à suivre pour mettre en place le serveur NodeJS mais voici néanmoins quelques liens qui m’ont été utiles :

Installer Raspbian : ici
Configurer l’accès SSH (utile pour travailler sur le Raspberry depuis une autre machine) : ici
Installer NodeJS sur Raspberry Pi : ici
Introduction à NodeJS : ici
Lancer automatiquement le serveur NodeJS au démarrage avec PM2 : ici


Figure 6 – Interface de gestion

Les fichiers pour le serveur NodeJS et l’interface connectée : en téléchargement direct

Remarque : Les ressources mises à disposition ne sont pas fournies "clé en main". Tout au plus, elles peuvent vous apporter des idées pour un projet que vous construiriez vous-même !

Bilan

La station est maintenant fonctionnelle. Vous pouvez d’ailleurs consulter les données en -presque- direct ici.

La suite au prochain épisode…

L’épisode suivant sera consacré à la première sortie de la station et à la vérification de la validité des mesures. L’ajout du Raspberry permettra aussi l’intégration d’une caméra et d’un script Python pour la détection des nuages dans le ciel et le calcul de la couverture nuageuse.