STATION METEO RASPBERRY PI AVEC MODULE SENSE-HAT

Carte Raspberry Pi 4 avec Sense-Hat

Bonjour à toutes et à tous,

Nous sommes trois étudiants en deuxième année de classe préparatoire intégrée à Polytech Angers. Notre équipe est composée de : Dorian BRIODEAU, Hugo CRIBIER et Adrien PAULIN. Étant tous les trois intéressés par les domaines de l’informatique et de l’électronique, c’est assez naturellement que nous avons choisi ce projet de station météo Raspberry Pi avec le module Sense-Hat.

Présentation

L’objectif de notre projet est de réaliser une station météo qui mesure la température, la pression et l’humidité d’une pièce. Un usage possible de ces données serait le suivi de l’énergie consommée d’un bâtiment. Ces données doivent être consultables sur internet. Le capteur utilisé est le Sense-Hat, branché sur un Raspberry Pi 4.

Ainsi, les objectifs et contraintes du projet sont :

  • Le capteur doit mesurer la température, la pression atmosphérique et l’humidité de l’air.
  • Les données doivent être sauvegardées au format “.csv”.
  • Les données doivent être consultables dans une base de données.

Il existe de nombreuses façons de récupérer les données du capteur et de les rendre disponible sur internet. À travers ce rapport, nous allons détailler la méthode que nous avons utilisée pour y parvenir. Les données du projet ont été récoltées à Polytech Angers (Hall de technologie).

Le Raspberry Pi 4 est un nano-ordinateur. Comme son nom l’indique, c’est un très petit ordinateur, capable de tenir dans une main, ainsi pour interagir avec le Raspberry, nous utilisons un écran, un clavier et une souris. Sur ce nano-ordinateur est fixé le module Sense-Hat. Il s’agit d’une carte électronique qui possède plusieurs fonctionnalités. La première est de mesurer diverses variables comme la température, la pression et l’humidité. La seconde est de pouvoir utiliser une matrice LED pour afficher un message par exemple. Pour interagir avec le Sense-Hat, nous utilisons le langage de programmation Python.

Raspberry Pi 4 et son module Sense-Hat

Évolution du Projet

1. Récupération des données

Pour commencer, nous avons créé un programme python qui, chaque heure, collecte et écrit les données météorologiques souhaitées dans un fichier CSV

Aperçu CSV

2. Adafruit

Ensuite, nous avons recherché comment rendre les mesures disponibles sur internet. Nous avons trouvé une plateforme internet : Adafruit. C’est un broker MQTT : un relais qui reçoit des données et les transmet à la demande d’utilisateurs. 

Schéma explicatif du rôle d’un broker MQTT

Pour uploader les nouvelles données collectées chaque heure sur Adafruit, nous avons trouvé MQTT (Message Queuing Telemetry Transport). Il s’agit d’un protocole en langage Python que l’on peut utiliser pour transférer les mesures du Raspberry vers Adafruit.

L’avantage d’Adafruit est de proposer une interface de présentation des données (dashboard) visuelle avec des graphiques, des jauges, …

Dashboard Adafruit
Accéder à Adafruit

L’inconvénient d’Adafruit est que les données ne sont stockées que pendant 60 jours, ce qui pose problème pour les analyser sur le long terme.

3. 000WebHost

Afin de pallier ce problème, nous avons décidé de développer un site internet (en plus d’Adafruit), sur lequel il est possible de consulter toutes les données. Pour cela, nous avons utilisé 000WebHost qui est un hébergeur gratuit sur lequel nous avons mis en ligne notre site codé en HTML/CSS pour gérer son apparence et en PHP pour gérer la base de données que nous avons créée.

Pour télécharger le fichier CSV avec toutes les mesures collectées par le Raspberry, nous l’importons chaque heure (pour avoir sa version actualisée) sur 000WebHost et un lien dans notre code HTML permet de le télécharger directement sur le site web. Pour mettre à jour la base de données, nous importons un autre fichier CSV avec les mêmes valeurs mais respectant certaines conditions de format pour être utilisable (“,” pour séparer les données ; pas de titre de colonne). Nous utilisons cette base de données notamment pour afficher sur notre site web la dernière mesure importée.

Pour transférer les fichiers sur le site web, nous avons utilisé un programme python sur le Raspberry qui utilise FTP (File Transfert Protocol). C’est un protocole permettant de transférer des fichiers entre plusieurs appareils à travers le réseau internet. Ainsi, nous avons pu transférer les fichiers CSV de la carte Raspberry vers les serveurs 000WebHost. Cependant, il arrive que le transfert avec FTP ne fonctionne pas à cause d’un trafic trop élevé, ainsi les valeurs ne sont pas toujours actualisées sur le site.

Page Accueil Site Web
Accéder au site Web

Conclusion

Schéma récapitulatif de notre projet

En conclusion, la carte Raspberry exécute un programme Python, qui permet de prendre les mesures de températures, de pression et d’humidité et de les inscrire dans des fichiers CSV. Le programme envoie ensuite les mesures sur Adafruit via MQTT où elles sont visibles 60 jours, et les fichiers sur 000Webhost via FTP. Enfin, ces opérations sont automatisées et répétées chaque heure grâce à l’insertion dans le programme Python d’une boucle infinie et d’une pause de 3600 secondes. 

Néanmoins, les mesures de température collectées par le Sense-Hat ne sont pas correctes. En effet, comme ce dernier se trouve très proche du Raspberry, la mesure collectée est la température du nano-ordinateur qui à tendance à chauffer lorsqu’il est en fonctionnement. Ainsi, les températures mesurées sont surestimées et nécessitent une correction pour exploitation.

Tuteur : Hassan Bouljroufi