← Tous les projets

P—06 · Étude de cas

Station météo connectée

Une sonde dehors, un boîtier dedans, une liaison radio entre les deux. Le système mesure la météo et ouvre ou ferme les volets tout seul en fonction de ce qu’il voit.

RôleSystèmes embarqués & IoT
CadreProjet école · IMT Nord Europe
Matériel2 Arduino · XBee · servos
LangageC / Arduino
Code sur GitHub ↗ Rapport (PDF) ↗
01 — L’idée

Mesurer, puis agir.

Beaucoup de stations météo s’arrêtent à l’affichage d’une valeur. L’objectif ici était d’aller un cran plus loin : que les mesures déclenchent une action physique dans la maison, en l’occurrence l’ouverture et la fermeture des volets.

Et que n’importe qui puisse lire l’écran sans savoir ce qu’est un volt.

02 — Architecture

Deux modules, une liaison radio.

Le système est coupé en deux Arduino indépendants. L’émetteur reste dehors, le récepteur est à l’intérieur près de l’utilisateur. Ils communiquent par XBee, une liaison radio point à point.

Dehors · ÉmetteurArduino E

Température, humidité, vent, lumière

Dedans · RécepteurArduino R

Décodage des trames et décision

SortiesLCD + servos

Affichage et volets motorisés

Cette séparation rend le tout modulaire : on peut changer un capteur sans toucher à l’interface, ou réécrire les règles des volets sans toucher à la sonde.

03 — Capteurs

Ce qui est mesuré.

GrandeurCapteur et méthode
Température & humiditéCapteur de type DHT : °C et humidité relative.
VentAnémomètre à impulsions : on compte les impulsions pour estimer la vitesse en km/h.
LuminositéPhotorésistance (LDR), utilisée pour décider s’il faut laisser entrer la lumière.
04 — Le protocole

Une trame texte, légère.

L’émetteur assemble les mesures dans une chaîne courte et l’envoie sur le port série du XBee. Le récepteur la lit, la découpe, met l’écran à jour puis bouge les servos si besoin.

Station_Meteo_E.ino / _R.inoPseudo-code
// Émetteur : lire, assembler, envoyer
void loop() {
  String frame = "T:" + readTemperature() + ";H:" + readHumidity()
               + ";W:" + readWindSpeed()  + ";L:" + readLight() + ";";
  xbee.print(frame);            // ex. "T:23.4;H:41;W:12;L:380;"
}

// Récepteur : lire, décoder, afficher, agir
void loop() {
  if (xbee.available()) {
    parseFrame(xbee.readStringUntil('\n'));
    updateLCD();
    updateServos();
  }
}
05 — Les règles

Quand bouger les volets.

ConditionAction des volets
Plus de 30 °CFermés, pour garder la fraîcheur.
Entre 20 et 30 °CÀ moitié ouverts.
Peu de lumièreOuverts, pour profiter de la lumière naturelle.
Vent fortFermés, pour éviter les dégâts.
06 — Interface

Lisible par tout le monde.

  • Un écran LCD avec clavier affiche les valeurs en clair, page par page : température, humidité, vent, lumière.
  • Un capteur de geste PAJ7620 permet de changer de page d’un mouvement de la main.
  • L’affichage se rafraîchit à chaque trame reçue.
07 — Ce que j’en retiens

Les acquis.

  • Concevoir un petit protocole de communication et le rendre robuste côté réception.
  • Lire des capteurs en continu tout en pilotant des actionneurs.
  • Penser l’interface pour l’utilisateur final, pas pour l’ingénieur qui a le moniteur série ouvert.