⭐⭐ Débutant avancé
⏱️ 20 minutes
Mini-station météo
Tu fabriques une mini-station météo. Le DHT11 mesure la température et l’humidité, et le petit écran OLED les affiche.
🧰 De quoi as-tu besoin ?
🗺️ Schéma de branchement
Suis les fils de l’Arduino vers chaque pièce. Tu peux choisir toi-même les couleurs des fils.
| De | Vers |
|---|---|
Arduino UNO · D2 |
Capteur de température DHT11 · DAT |
Arduino UNO · 5V |
Capteur de température DHT11 · VCC |
Arduino UNO · GND |
Capteur de température DHT11 · GND |
Arduino UNO · A4 |
Petit écran OLED 0,91" · SDA |
Arduino UNO · A5 |
Petit écran OLED 0,91" · SCL |
Arduino UNO · 5V |
Petit écran OLED 0,91" · VCC |
Arduino UNO · GND |
Petit écran OLED 0,91" · GND |
🛠️ Voici comment le construire
- Branche le DHT11 : DAT vers pin 2, VCC vers 5V et GND vers GND.
- Branche l’écran OLED : SDA vers A4, SCL vers A5, VCC vers 5V et GND vers GND.
- Astuce : deux pièces ont besoin de 5V et GND. Utilise les bandes + et − de ta breadboard.
💻 Le code
// Mini-station meteo
// Le DHT11 mesure la temperature et l'humidite. Le petit ecran OLED les affiche.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
const int DHT_PIN = 2; // DAT du DHT11 est sur la pin 2
DHT dht(DHT_PIN, DHT11);
Adafruit_SSD1306 ecran(128, 32, &Wire, -1); // OLED de 128 x 32 pixels (SDA = A4, SCL = A5)
void setup() {
Serial.begin(9600);
dht.begin();
if (!ecran.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // 0x3C est l'adresse de l'ecran
Serial.println(F("Ecran non trouve. Verifie les fils de SDA et SCL."));
while (true); // Arret : sans ecran, cela ne sert a rien
}
ecran.setTextColor(SSD1306_WHITE);
}
void loop() {
float temperature = dht.readTemperature(); // En degres Celsius
float humidite = dht.readHumidity(); // En pour cent
ecran.clearDisplay();
ecran.setTextSize(2);
ecran.setCursor(0, 0);
if (isnan(temperature) || isnan(humidite)) { // La mesure ne marche pas ?
ecran.setTextSize(1);
ecran.print(F("DHT11 introuvable"));
} else {
ecran.print(temperature, 1);
ecran.print((char)247); // Le signe degre
ecran.println(F("C"));
ecran.print(humidite, 0);
ecran.print(F("% hum."));
Serial.print(F("Temperature: "));
Serial.print(temperature);
Serial.print(F(" C Humidite: "));
Serial.print(humidite);
Serial.println(F(" %"));
}
ecran.display(); // C'est seulement maintenant que tout arrive vraiment sur l'ecran
delay(2000); // Le DHT11 ne peut mesurer qu'une fois toutes les 2 secondes
}
🧠 Que fait le code ?
- Le DHT11 est sur la pin 2. Avec
readTemperature()etreadHumidity(), nous lisons les valeurs. - L’écran OLED parle avec SDA (A4) et SCL (A5). Avec
print(), nous mettons du texte sur l’écran. - Toutes les 2 secondes, il y a une nouvelle mesure. La mesure ne marche pas ? Alors tu vois un message.
🎯 Essaie un peu…
- Affiche aussi la température en Fahrenheit
- Allume une LED s’il fait plus de 25 degrés
- Garde en mémoire la température la plus haute d’aujourd’hui et affiche-la aussi
🚀 Construis ce projet avec Codey : ouvre codey.online/fr/starter-kits/uno/projects/weather-station et clique sur FAIS ÇA. Alors le code et le schéma de branchement sont tout de suite prêts.
Codey Online est un produit de OTRONIC