Station météo
Système embarqué de collecte et d'enregistrement de données météorologiques.
CESI · Systèmes embarqués · Projet d'équipe

- Destination
- Équiper des navires
- Cible
- ATmega328, 2 Ko de RAM
- Grandeurs
- Pression, humidité, luminosité, température
- Livraisons
- Analyse, architecture, maquette, documentation
Points clés
- Quatre grandeurs mesurées : pression, humidité, luminosité, température
- Enregistrement horodaté sur carte SD
- Interface de consultation embarquée
- Documentation utilisateur rédigée
Comment ça marche
- 1
Analyser avant de câbler
Le système a d'abord été décrit en UML et SysML : ce qu'il doit faire, quels acteurs interviennent, comment les blocs s'articulent. Sur un projet embarqué, ce détour n'est pas un exercice scolaire : une fois la carte câblée et le boîtier fermé, changer d'avis coûte un démontage.
- 2
L'architecture du programme
Fonctions, variables, découpage des responsabilités : la structure logicielle a été posée sur le papier avant d'être écrite. Sur un microcontrôleur, chaque variable globale consomme une mémoire qui se compte en kilooctets, et le compilateur ne prévient pas quand il n'en reste plus assez pour la pile.
- 3
Les quatre capteurs
Un baromètre pour la pression, un hygromètre pour l'humidité, une photorésistance pour la luminosité et une sonde de température. Chacun a sa propre façon de répondre : certains rendent une valeur numérique directement lisible, d'autres une tension qu'il faut convertir et étalonner.
- 4
L'enregistrement
Chaque relevé est écrit sur carte SD avec son horodatage, afin qu'on puisse rejouer une période après coup et pas seulement lire l'instant présent. C'est ce qui sépare un afficheur d'une station de mesure : la première ne sert qu'à celui qui regarde, la seconde produit une donnée exploitable plus tard.
- 5
La consultation sur place
Une interface embarquée permet de lire les valeurs courantes et l'historique sans brancher d'ordinateur. Sur un navire, c'est une contrainte d'usage plus qu'un confort : personne ne va chercher un portable pour savoir si la pression baisse.
Essayez vous-même
La boucle de la station, telle qu'elle tourne sur le microcontrôleur. Débranchez un capteur pour voir ce qui se passe.
Pression
1011hPa
Humidité
75%
Luminosité
470lx
Température
12.5°C
Relevés : 0 · Écritures carte SD : 0
Les valeurs sont simulées : le prototype n'a pas laissé de jeu de données publiable. Ce que la démonstration montre est le rythme de la boucle : les capteurs sont lus à chaque tour, l'écriture sur carte SD n'a lieu qu'un tour sur dix parce qu'elle est bien plus lente, et débrancher un capteur ne fige pas les autres.
Le contexte
Concevoir une station météo embarquée destinée à équiper des navires. Les mesures servent à deux choses : une lecture immédiate pour l'équipage, et un historique conservé sur carte SD pour analyse ultérieure. L'intérêt du sujet tient à sa destination : un système exposé aux embruns, alimenté sans garantie, et que personne ne viendra redémarrer.
Ce que change un microcontrôleur
Écrire pour un ATmega328 n'a pas grand-chose à voir avec écrire pour un ordinateur. Deux kilooctets de mémoire vive, pas de système d'exploitation, pas d'allocation dynamique raisonnable, et un programme qui doit tourner des semaines sans fuite ni remise à zéro.
- Pas de mémoire allouée à la volée : tout est dimensionné à la compilation, sinon la pile finit par mordre sur les données
- Les chaînes de caractères coûtent cher : un simple message d'erreur occupe une part notable de la mémoire disponible
- L'écriture sur carte SD est lente et doit être espacée, sinon elle bloque la lecture des capteurs
- Un capteur qui ne répond pas ne doit pas figer la station : la boucle continue avec les autres grandeurs
Ce que j'en retire
- Programmer sous contrainte mémoire, où chaque variable se justifie
- Modéliser en UML et SysML avant de câbler, parce qu'un montage ne se refactorise pas
- Lire des capteurs de natures différentes et convertir des tensions en grandeurs physiques
- Rendre une donnée persistante et horodatée, donc exploitable après coup
- Rédiger une documentation destinée à quelqu'un qui n'a pas écrit le code