Retour aux projets

Station météo connectée IoT

Concevoir un objet connecté mesurant température et humidité, transmettant les données par WiFi vers une interface web affichant en temps réel les mesures. Projet couvrant les notions d'IoT, capteurs, réseau et données.

3e-Terminale
8-12 séances
Avancé

Imaginez pouvoir consulter la température de votre salle de classe depuis votre smartphone, où que vous soyez. C'est le principe des objets connectés (IoT) qui transforment notre quotidien, des thermostats intelligents aux capteurs agricoles. Dans ce projet, vous allez créer votre propre station météo connectée : un capteur DHT11 relié à une carte ESP8266 enverra les mesures via WiFi vers une page web dynamique. La problématique est la suivante : comment concevoir un système embarqué capable d'acquérir, transmettre et visualiser des données environnementales en temps réel ?

Objectifs pédagogiques

  • Comprendre l'architecture d'un objet connecté (capteur, microcontrôleur, réseau, interface).
  • Programmer une carte ESP8266 pour lire un capteur DHT11 et envoyer les données en HTTP via WiFi.
  • Créer une interface web simple (HTML/CSS/JavaScript) pour afficher et actualiser les mesures.
  • Analyser et interpréter les données collectées pour valider le fonctionnement du système.

Matériel nécessaire

  • Carte ESP8266 (NodeMCU ou Wemos D1 Mini)
  • Capteur DHT11 (température et humidité)
  • Câbles Dupont (mâle-femelle) et breadboard
  • Câble micro-USB pour alimentation et programmation
  • Ordinateur avec Arduino IDE (ou PlatformIO) installé
  • Réseau WiFi disponible (ou point d'accès mobile)

Étapes du projet

1

Prise en main du matériel et câblage

Commencez par identifier les composants : la carte ESP8266 (avec son microcontrôleur et module WiFi intégré) et le capteur DHT11 (3 broches : VCC, Data, GND). Câblez le DHT11 sur la breadboard : reliez VCC à la broche 3.3V de l'ESP8266, GND à GND, et Data à une broche numérique (par exemple D4). Vérifiez les connexions avec un multimètre en mode continuité pour éviter les courts-circuits. Ce câblage est crucial car une erreur de broche peut endommager le capteur ou la carte.

2

Programmation de la lecture du capteur

Dans l'IDE Arduino, installez la bibliothèque 'DHT sensor library' (via le gestionnaire de bibliothèques). Écrivez un premier sketch qui initialise le capteur sur la broche D4 et lit température et humidité toutes les 2 secondes. Utilisez les fonctions dht.readTemperature() et dht.readHumidity() et affichez les valeurs dans le moniteur série. Testez en soufflant sur le capteur pour vérifier la réactivité. Cette étape valide la partie acquisition, base de tout système IoT.

3

Connexion WiFi et envoi des données

Ajoutez au sketch la connexion WiFi en utilisant la bibliothèque ESP8266WiFi. Déclarez vos identifiants réseau (SSID et mot de passe) dans des variables. Utilisez WiFi.begin() dans le setup() et attendez la connexion avec un while. Ensuite, créez une fonction qui envoie les données vers un serveur local (par exemple via une requête HTTP GET vers un script PHP sur votre PC, ou vers un service comme ThingSpeak). Pour un test simple, vous pouvez allumer une LED sur une broche quand la connexion est établie. Comprendre le rôle de l'adresse IP et du port est essentiel pour la communication réseau.

4

Création de l'interface web de visualisation

Développez une page HTML simple qui reçoit les données. Si vous utilisez un serveur local (ex: XAMPP), créez un fichier PHP qui stocke les valeurs dans un fichier texte ou une base SQLite. Côté client, écrivez du JavaScript avec fetch() pour interroger le serveur toutes les 5 secondes et mettre à jour un affichage (paragraphes ou graphique avec Chart.js). Par exemple, un bloc <p id='temp'>...</p> sera modifié dynamiquement. Cette interface rend le projet concret et visuel.

5

Intégration et test complet du système

Assemblez le tout : la carte ESP8266 alimentée envoie les mesures du DHT11 via WiFi vers votre serveur local. Ouvrez la page web sur un smartphone connecté au même réseau pour voir les données en direct. Testez en changeant la température (main chaude près du capteur) et observez le délai de mise à jour. Ajustez le taux d'échantillonnage (par exemple 10 secondes) pour éviter de surcharger le réseau. Validez la robustesse : que se passe-t-il si le WiFi est coupé ? Ajoutez une gestion d'erreur (reconnexion automatique).

6

Analyse et amélioration du projet

Collectez des données sur une durée (10 minutes) et exportez-les dans un tableur pour tracer une courbe. Discutez de la précision du capteur (le DHT11 a une précision de ±2°C). Proposez des améliorations : ajout d'un écran OLED pour affichage local, envoi vers un dashboard en ligne (ThingSpeak, Blynk), ou déclenchement d'alerte par email si température dépasse un seuil. Cette étape développe l'esprit critique et la démarche d'ingénieur.

⚠️ Points de vigilance

  • ⚠️Alimentation : ne pas dépasser 3.3V sur les broches de l'ESP8266, le DHT11 supporte 3.3V à 5V mais préférez 3.3V pour éviter les surtensions.
  • ⚠️Connexion WiFi : le mot de passe réseau ne doit pas être commité sur GitHub ; utilisez un fichier de configuration séparé ou des variables d'environnement.
  • ⚠️Bibliothèque DHT : vérifiez que le type de capteur est correctement défini (DHT11, DHT22) dans le code, sinon les lectures seront erronées.
  • ⚠️Délai d'envoi : espacez les requêtes HTTP d'au moins 5 secondes pour ne pas saturer le réseau ou le serveur (risque de timeout).
  • ⚠️Sécurité : en environnement scolaire, utilisez un réseau local dédié (pas le réseau administratif) et désactivez l'accès public à l'interface web.

Erreurs fréquentes à éviter

Le capteur renvoie toujours 0 ou -999.

✅ Solution : Vérifiez le câblage : la broche Data doit être sur une broche numérique (ex: D4) et non sur une broche analogique. Assurez-vous que la bibliothèque DHT est installée et que le type de capteur est correct (DHT11). Testez avec un autre capteur si possible.

La carte ESP8266 ne se connecte pas au WiFi.

✅ Solution : Vérifiez le SSID et le mot de passe (attention aux majuscules). Assurez-vous que le réseau est en 2.4 GHz (l'ESP8266 ne supporte pas le 5 GHz). Redémarrez la carte et le routeur. Utilisez WiFi.scanNetworks() pour lister les réseaux disponibles.

La page web n'affiche pas les données (blanc ou erreur).

✅ Solution : Vérifiez que le serveur local est bien lancé (Apache, PHP). Testez l'URL directement dans le navigateur : http://localhost/votre_fichier.php. Assurez-vous que le fichier PHP a les droits d'écriture pour stocker les données. Utilisez la console du navigateur (F12) pour voir les erreurs JavaScript.

Les données affichées sont figées ou ne se mettent pas à jour.

✅ Solution : Vérifiez que le code JavaScript utilise setInterval() ou setTimeout() pour rafraîchir la page. Assurez-vous que le capteur envoie bien de nouvelles données (regardez le moniteur série). Si le serveur met en cache, ajoutez un paramètre aléatoire à l'URL (ex: ?t=Date.now()).

La carte chauffe ou ne répond plus après quelques minutes.

✅ Solution : Cela peut être dû à un court-circuit ou à une alimentation instable. Vérifiez les connexions, utilisez un condensateur de 100µF entre VCC et GND du capteur. Réduisez la fréquence d'envoi des données. Si le problème persiste, remplacez la carte.

💡 Conseils du prof

  • 💡Avant de commencer, faites un schéma de câblage sur papier pour éviter les erreurs.
  • 💡Utilisez des noms de variables explicites (temperature, humidite) et commentez votre code pour faciliter la relecture.
  • 💡Pour gagner du temps, préparez un squelette de code avec les bibliothèques incluses et la structure setup/loop.
  • 💡Testez chaque étape indépendamment : d'abord le capteur seul, puis le WiFi, puis l'envoi, puis l'affichage.
  • 💡Encouragez les élèves à personnaliser l'interface (couleurs, logo, graphique) pour les motiver.

🚀 Pour aller plus loin

  • 🚀Ajouter un deuxième capteur (par exemple un capteur de luminosité LDR) et afficher plusieurs données sur la même page.
  • 🚀Mettre en place un système d'alertes : si la température dépasse 30°C, envoyer un email via un service comme IFTTT ou Twilio.
  • 🚀Créer un tableau de bord avec plusieurs stations (chaque groupe a sa propre carte) et centraliser les données sur un serveur commun.

Compétences travaillées

CT 4.2 : Analyser le fonctionnement d'un objet technique.CT 5.1 : Programmer un système informatique.CT 5.3 : Communiquer via un réseau.CT 6.1 : Mesurer et interpréter des grandeurs.
Techno