⭐⭐⭐ Uitdaging
⏱️ 30 minuten
Slimme ventilator
Je bouwt een thermostaat. Wordt het warmer dan 25 graden, dan klikt het relais aan. Zo kan je Arduino bijvoorbeeld een ventilatortje op een batterij aanzetten. Op het scherm zie je de temperatuur en of de ventilator aan staat.
🧰 Wat heb je nodig?
🔌
USB-kabel + Jumperkabels🗺️ Aansluitschema
Volg de draden van de Arduino naar elk onderdeel. De kleuren van de draden mag je zelf kiezen.
| Van | Naar |
|---|---|
Arduino UNO · D2 |
Temperatuursensor DHT11 · DAT |
Arduino UNO · 5V |
Temperatuursensor DHT11 · VCC |
Arduino UNO · GND |
Temperatuursensor DHT11 · GND |
Arduino UNO · D7 |
Relais 5V · S |
Arduino UNO · 5V |
Relais 5V · + |
Arduino UNO · GND |
Relais 5V · - |
Arduino UNO · A4 |
OLED-schermpje 0,91" · SDA |
Arduino UNO · A5 |
OLED-schermpje 0,91" · SCL |
Arduino UNO · 5V |
OLED-schermpje 0,91" · VCC |
Arduino UNO · GND |
OLED-schermpje 0,91" · GND |
🛠️ Zo bouw je het
- Sluit de DHT11 aan: DAT naar pin 2, VCC naar 5V en GND naar GND.
- Sluit het relais aan: S naar pin 7, + naar 5V en − naar GND.
- Sluit het OLED-scherm aan: SDA naar A4, SCL naar A5, VCC naar 5V en GND naar GND.
- Wil je echt iets schakelen? Gebruik dan alleen een batterij of lage spanning op COM en NO, nooit het stopcontact.
💻 De code
// Slimme ventilator (thermostaat)
// Wordt het te warm? Dan schakelt het relais aan, bijvoorbeeld voor een ventilator.
// Op het scherm zie je de temperatuur en of de ventilator aan staat.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
const int DHT_PIN = 2; // DAT van de DHT11 op pin 2
const int RELAIS_PIN = 7; // S van het relais op pin 7
const float AAN_BOVEN = 25.0; // Boven deze temperatuur gaat de ventilator aan
const float UIT_ONDER = 24.0; // Onder deze temperatuur gaat hij weer uit
DHT dht(DHT_PIN, DHT11);
Adafruit_SSD1306 scherm(128, 32, &Wire, -1); // OLED: SDA = A4, SCL = A5
bool ventilatorAan = false;
void setup() {
Serial.begin(9600);
pinMode(RELAIS_PIN, OUTPUT);
digitalWrite(RELAIS_PIN, LOW); // Begin met het relais uit
dht.begin();
scherm.begin(SSD1306_SWITCHCAPVCC, 0x3C);
scherm.setTextColor(SSD1306_WHITE);
}
void loop() {
float temperatuur = dht.readTemperature();
if (!isnan(temperatuur)) {
// Twee grenzen, zodat het relais niet steeds aan en uit klikt
if (temperatuur > AAN_BOVEN) ventilatorAan = true;
if (temperatuur < UIT_ONDER) ventilatorAan = false;
digitalWrite(RELAIS_PIN, ventilatorAan ? HIGH : LOW);
}
scherm.clearDisplay();
scherm.setTextSize(2);
scherm.setCursor(0, 0);
if (isnan(temperatuur)) {
scherm.print(F("DHT11 ?"));
} else {
scherm.print(temperatuur, 1);
scherm.print((char)247);
scherm.print(F("C"));
}
scherm.setTextSize(1);
scherm.setCursor(0, 22);
scherm.print(ventilatorAan ? F("Ventilator: AAN") : F("Ventilator: uit"));
scherm.display();
Serial.print(F("Temperatuur: "));
Serial.print(temperatuur);
Serial.println(ventilatorAan ? F(" C -> AAN") : F(" C -> uit"));
delay(2000);
}
🧠 Wat doet de code?
- De DHT11 meet de temperatuur. Boven 25 graden zetten we het relais aan.
- Pas onder 24 graden gaat het relais weer uit. Met die twee grenzen klikt hij niet steeds aan en uit.
- Het OLED-scherm toont de temperatuur en "Ventilator: AAN" of "uit".
🎯 Probeer eens…
- Voeg twee knoppen toe om de grens-temperatuur hoger en lager te zetten
- Laat een LED branden zolang de ventilator aan staat
- Laat de ventilator ook aangaan als de luchtvochtigheid boven de 70% komt
🚀 Bouw dit project met Codey: open codey.online/nl/starter-kits/uno/projects/thermostat en klik op MAAK DIT. Dan staan de code en het aansluitschema meteen klaar.
Codey Online is een product van OTRONIC