Projet capteur DHT11 température/humidité avec indicateurs LED et buzzer piézo
Composants
| Capteur DHT11 (4 broches) | 1 |
| Arduino UNO | 1 |
| LEDs : 1 verte, 2 rouges | 3 |
| Résistances 220 Ω (pour LEDs) | 3 |
| Haut-parleur piézo (buzzer passif) | 1 |
| Fils de connexion | 12 |
Logiciels
- Arduino IDE
- Bibliothèques : Adafruit_Sensor + DHT-sensor-library
Fonctionnement
Projet débutant : lecture température/humidité via DHT11, affichage série + indicateurs visuels/sonores selon seuils de température :
- ≤ 20 °C : « Trop froid » → LED rouge (A0) + bip piézo (1s)
- 21–26 °C : « Température idéale » → LED verte (A1) allumée 2s
- ≥ 27 °C : « Trop chaud » → LED rouge (A2) + bip piézo (1s)
Mesure toutes les 2 secondes. Gestion d'erreur si lecture échoue.
Câblage
- DHT11 : VCC→5V, GND→GND, DATA→Pin 5
- LED « Froid » (rouge) : Anode→A0 via 220Ω, Cathode→GND
- LED « Idéal » (verte) : Anode→A1 via 220Ω, Cathode→GND
- LED « Chaud » (rouge) : Anode→A2 via 220Ω, Cathode→GND
- Piézo : Pin 9 (PWM) + GND
Code complet
#include <Adafruit_Sensor.h>
#include <DHT.h>
#define DHTPIN 5
#define DHTTYPE DHT11
#define LED_COLD A0
#define LED_PERFECT A1
#define LED_HOT A2
#define SPEAKER_PIN 9
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println(F("Test DHT11 !"));
dht.begin();
pinMode(LED_COLD, OUTPUT);
pinMode(LED_PERFECT, OUTPUT);
pinMode(LED_HOT, OUTPUT);
pinMode(SPEAKER_PIN, OUTPUT);
}
void loop() {
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(F("Erreur lecture DHT !"));
return;
}
Serial.print(F("Humidité: ")); Serial.print(h); Serial.print(F(" %\t"));
Serial.print(F("Temp: ")); Serial.print(t); Serial.println(F(" *C"));
if (t <= 20.0) {
Serial.println(F("Trop froid !"));
digitalWrite(LED_COLD, HIGH);
tone(SPEAKER_PIN, 1000, 1000); // 1kHz, 1s
delay(1000);
digitalWrite(LED_COLD, LOW);
}
else if (t > 20.0 && t < 27.0) {
Serial.println(F("Température idéale !"));
digitalWrite(LED_PERFECT, HIGH);
delay(2000);
digitalWrite(LED_PERFECT, LOW);
}
else if (t >= 27.0) {
Serial.println(F("Trop chaud !"));
digitalWrite(LED_HOT, HIGH);
tone(SPEAKER_PIN, 2000, 1000); // 2kHz, 1s
delay(1000);
digitalWrite(LED_HOT, LOW);
}
}
Note : le code original utilisait digitalWrite(speakerPin, HIGH/LOW) ce qui ne produit qu'un clic. Remplacé par tone() pour un vrai bip audible. La condition if (20 < t < 27) en C++ ne fait pas ce qu'on croit (évalué gauche→droite) ; corrigé en t > 20.0 && t < 27.0.
Schéma Fritzing
Fichier .fzz fourni dans le projet original (renommé depuis un schéma TMP36).
Idées d'amélioration
- Ajouter écran LCD/I2C pour affichage local
- Seuils configurables via potentiomètre ou Bluetooth
- Journalisation sur carte SD avec horodatage
- Alertes par email/notification (ESP8266/ESP32)
- Contrôle relais pour chauffage/ventilateur
Projet pédagogique parfait pour découvrir les capteurs environnementaux, les bibliothèques Arduino, et la logique conditionnelle.
Processus de fabrication
- Réaliser votre premier projet IoT avec Raspberry Pi, DHT11 et ThingSpeak
- Construire un système aéroponique automatisé avec Raspberry Pi et capteur d'humidité
- Intégration d'un capteur thermocouple avec l'Arduino Portenta H7 via le MAX6675
- Construire un jeu gyroscopique temps réel avec Arduino Nano et capteur MPU-6050
- Capteur CO2 K30 : Surveillance en temps réel de la qualité de l'air intérieur
- Unopad : contrôleur MIDI Arduino fluide pour Ableton Live
- Enregistreur de Température et Humidité Arduino avec DHT11 et Shield Ethernet
- Bocal Intelligent IoT avec ESP8266, Arduino et Capteur Ultrasonique – Surveillance Temps Réel
- Capteur d'obstacle IR simple avec Arduino — LED IR + Photodiode