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.
Code sur GitHub ↗ Rapport (PDF) ↗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.
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.
Température, humidité, vent, lumière
Décodage des trames et décision
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.
Ce qui est mesuré.
| Grandeur | Capteur et méthode |
|---|---|
| Température & humidité | Capteur de type DHT : °C et humidité relative. |
| Vent | Ané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. |
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.
// É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(); } }
Quand bouger les volets.
| Condition | Action des volets |
|---|---|
| Plus de 30 °C | Fermés, pour garder la fraîcheur. |
| Entre 20 et 30 °C | À moitié ouverts. |
| Peu de lumière | Ouverts, pour profiter de la lumière naturelle. |
| Vent fort | Fermés, pour éviter les dégâts. |
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.
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.