⭐⭐⭐ Défi
⏱️ 30 minutes
Ventilateur malin
Tu construis un thermostat. S’il fait plus chaud que 25 degrés, le relais clique et s’allume. Comme ça, ton Arduino peut par exemple allumer un petit ventilateur sur une pile. Sur l’écran, tu vois la température et si le ventilateur est allumé.
🧰 De quoi as-tu besoin ?
🔌
Câble USB + Câbles jumper🗺️ 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 · D7 |
Relais 5V · S |
Arduino UNO · 5V |
Relais 5V · + |
Arduino UNO · GND |
Relais 5V · - |
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 le relais : S vers pin 7, + vers 5V et − vers GND.
- Branche l’écran OLED : SDA vers A4, SCL vers A5, VCC vers 5V et GND vers GND.
- Tu veux vraiment allumer quelque chose ? Utilise seulement une pile ou une basse tension sur COM et NO, jamais la prise de courant.
💻 Le code
// Ventilateur malin (thermostat)
// Fait-il trop chaud ? Alors le relais s'allume, par exemple pour un ventilateur.
// Sur l'ecran, tu vois la temperature et si le ventilateur est allume.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
const int DHT_PIN = 2; // DAT du DHT11 sur pin 2
const int RELAIS_PIN = 7; // S du relais sur pin 7
const float MARCHE_AU_DESSUS = 25.0; // Au-dessus de cette temperature, le ventilateur s'allume
const float ARRET_EN_DESSOUS = 24.0; // Sous cette temperature, il s'eteint de nouveau
DHT dht(DHT_PIN, DHT11);
Adafruit_SSD1306 ecran(128, 32, &Wire, -1); // OLED: SDA = A4, SCL = A5
bool ventilateurAllume = false;
void setup() {
Serial.begin(9600);
pinMode(RELAIS_PIN, OUTPUT);
digitalWrite(RELAIS_PIN, LOW); // Commence avec le relais eteint
dht.begin();
ecran.begin(SSD1306_SWITCHCAPVCC, 0x3C);
ecran.setTextColor(SSD1306_WHITE);
}
void loop() {
float temperature = dht.readTemperature();
if (!isnan(temperature)) {
// Deux limites, pour que le relais ne clique pas sans arret
if (temperature > MARCHE_AU_DESSUS) ventilateurAllume = true;
if (temperature < ARRET_EN_DESSOUS) ventilateurAllume = false;
digitalWrite(RELAIS_PIN, ventilateurAllume ? HIGH : LOW);
}
ecran.clearDisplay();
ecran.setTextSize(2);
ecran.setCursor(0, 0);
if (isnan(temperature)) {
ecran.print(F("DHT11 ?"));
} else {
ecran.print(temperature, 1);
ecran.print((char)247);
ecran.print(F("C"));
}
ecran.setTextSize(1);
ecran.setCursor(0, 22);
ecran.print(ventilateurAllume ? F("Ventilo: ON") : F("Ventilo: off"));
ecran.display();
Serial.print(F("Temperature: "));
Serial.print(temperature);
Serial.println(ventilateurAllume ? F(" C -> ON") : F(" C -> off"));
delay(2000);
}
🧠 Que fait le code ?
- Le DHT11 mesure la température. Au-dessus de 25 degrés, nous allumons le relais.
- Le relais s’éteint seulement sous 24 degrés. Avec ces deux limites, il ne clique pas sans arrêt.
- L’écran OLED affiche la température et "Ventilo: ON" ou "off".
🎯 Essaie un peu…
- Ajoute deux boutons pour monter et baisser la température limite
- Allume une LED tant que le ventilateur est allumé
- Fais aussi démarrer le ventilateur si l’humidité de l’air dépasse 70%
🚀 Construis ce projet avec Codey : ouvre codey.online/fr/starter-kits/uno/projects/thermostat 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