Station météo connectée

De Wiki de Projets IMA

Cahier des charges

Présentation générale du projet

Notre projet consiste en la création d'une station météo nous donnant la température, éventuellement l'humidité et la luminosité.
Nous devons avoir un système basse consommation, c'est pourquoi nous devons utiliser un système de mise en veille.

Objectif du projet

L'objectif sera de pouvoir offrir la possibilité à un utilisateur d'obtenir un certain nombre de données météorologiques en temps réel via une page web.

Description du projet

Nous devons avoir un système embarqué qui récupérera des informations météorologiques telles que la température, la pression, l'humidité, la luminosité.
Ces données seront envoyées en wifi à un serveur web qui affichera les informations météorologiques en temps réel.
Nous nous intéresserons donc au côté Gestion d'énergie avec un mode veille/éveil de notre système embarqué, également au stockage des données, sûrement dans une base de données et leur affichage sur une page web.
(Nous pourrons utiliser le serveur web créé en Projet de PRA).

Choix techniques : matériel et logiciel
  • Nous utiliserons une carte équipée d'un microcontrôleur et d'un module Wifi à savoir : HUZZAH ESP8266 proposé par Adafruit Industries :
https://www.adafruit.com/products/2471
  • Nous coderons le tout via l'IDE Arduino.
  • Nous utiliserons notre machine virtuelle pour stocker les données et les publier sur le site créé en Projet PRA.
  • Nous n'avons pas encore réfléchi au sujet de l'alimentation (batterie, pile...)

Étapes du projet

Partie 1 : Récupérer une donnée (température dans un premier temps) et la stocker sur notre machine virtuelle

Partie 2 : Interface web et affichage des données

Partie 3 : Mode veille et activation du réveil

Partie 4 : Essais en extérieur

Suivi de l'avancement du Projet

Mise en jambe

Nous nous sommes intéressés au choix du matériel et à la prise en main de celui-ci.
Nous avons donc travaillé avec l'ESP8266 d'Adafruit Industries via l'IDE Arduino.

Accès à une page web avec l'ESP8266

Nous avons dans un premier temps cherché à savoir comment utiliser le module wifi et récupérer par exemple une page web. Nous avons utilisé un exemple contenu dans la bibliothèque Adafruit, permettant de réaliser une requête HTTP en se connectant à un réseau Wifi. Le module se connecte donc à notre smartphone en Wifi et effectue une requête HTTP basique vers un site quelconque, puis nous renvoie le code html de la page.

Envoi de données

Avant de s'intéresser aux capteurs que nous intégrerons par la suite, nous avons regardé comment envoyer une donnée (rentrée en statique dans le code Arduino) et l'afficher sur une page web. Pour ce, nous avons simplement fait une requête http sur une page php comportant un script. Nous avons mis un script basique qui crée un fichier et écrit dedans la valeur de la donnée. Nous affichons le contenu du fichier sur notre page web d'application. Cette page php sera donc uniquement appelée par notre ESP8266 et les valeurs seront affichées sur une page web. Les données sont contenues dans l'url et récupérées par le script php.

Stockage des données

Pour le stockage des données, nous avions dans un premier temps pensé à une base de données mais nous nous sommes plutôt tourné vers un stockage dans un fichier json pour l'affichage de celui-ci dynamiquement en javascript.

Interface Web

Nous avons pensé à une interface user-friendly dynamique grâce à AngularJS. Nous allons d'ailleurs y afficher, en plus des données météorologiques envoyées par notre station météo, les détails de notre système : Les technologies, le code, un lien vers le wiki... Les données sont injectées dans la page web dynamiquement à partir du fichier json contenant les valeurs grâce à angular. Le tableau de données pourra être trié par date, heure, température, humidité.

http://iot.thibautscholaert.com/
Application Android

L'application Android affichera les données dans une ListView, du relevé le plus récent au plus ancien. Une requête vers le fichier JSON correspondant est exécutée, et chaque relevé (date-heure-température-humidité) est enregistré dans une base de données SQLite dans le téléphone. La liste est constituée à partir de cette base de données. Pour un relevé, la date, l'heure, la température et l'humidité sont affichés dans un même item. La liste sera actualisable via un bouton spécialement affecté. L'idée de l'application nous étant venue assez tard, l'affichage de cette liste reste (pour l'instant ?) basique, sans mise en forme particulière.

Mode Veille

Nous avons également pensé comme prévu à un mode veille question d'économie d'énergie. L'objet connecté sera en mode veille presque tout le temps et se réveillera toutes les 30 minutes pour envoyer les données instantanées : température, humidité, date et heure. Cette tâche prend très peu de temps, de l'ordre de quelques secondes, ce temps dépend beaucoup du temps de connection à la borne Wifi (notre téléphone). Nous avons donc un système basse consommation grâce à ce mode veille/réveil. Aussi, le système embarquera une batterie d'une tension de 3V qui est capable d'alimenter le module ESP8266.