⭐⭐⭐ Herausforderung
⏱️ 30 Minuten
Smarter Ventilator
Du baust einen Thermostat. Wird es wärmer als 25 Grad, dann klickt das Relais an. So kann dein Arduino zum Beispiel einen kleinen Ventilator mit Batterie einschalten. Auf dem Bildschirm siehst du die Temperatur und ob der Ventilator an ist.
🧰 Was brauchst du?
🔌
USB-Kabel + Jumperkabel🗺️ Schaltplan
Folge den Drähten vom Arduino zu jedem Teil. Die Farben der Drähte darfst du selbst wählen.
| Von | Nach |
|---|---|
Arduino UNO · D2 |
Temperatursensor DHT11 · DAT |
Arduino UNO · 5V |
Temperatursensor DHT11 · VCC |
Arduino UNO · GND |
Temperatursensor DHT11 · GND |
Arduino UNO · D7 |
Relais 5V · S |
Arduino UNO · 5V |
Relais 5V · + |
Arduino UNO · GND |
Relais 5V · - |
Arduino UNO · A4 |
OLED-Display 0,91" · SDA |
Arduino UNO · A5 |
OLED-Display 0,91" · SCL |
Arduino UNO · 5V |
OLED-Display 0,91" · VCC |
Arduino UNO · GND |
OLED-Display 0,91" · GND |
🛠️ So baust du es
- Schließe den DHT11 an: DAT an pin 2, VCC an 5V und GND an GND.
- Schließe das Relais an: S an pin 7, + an 5V und − an GND.
- Schließe das OLED-Display an: SDA an A4, SCL an A5, VCC an 5V und GND an GND.
- Willst du wirklich etwas schalten? Benutze dann nur eine Batterie oder niedrige Spannung an COM und NO, niemals die Steckdose.
💻 Der Code
// Smarter Ventilator (Thermostat)
// Wird es zu warm? Dann schaltet das Relais ein, zum Beispiel für einen Ventilator.
// Auf dem Bildschirm siehst du die Temperatur und ob der Ventilator an ist.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
const int DHT_PIN = 2; // DAT des DHT11 an pin 2
const int RELAIS_PIN = 7; // S des Relais an pin 7
const float AN_UEBER = 25.0; // Über dieser Temperatur geht der Ventilator an
const float AUS_UNTER = 24.0; // Unter dieser Temperatur geht er wieder aus
DHT dht(DHT_PIN, DHT11);
Adafruit_SSD1306 bildschirm(128, 32, &Wire, -1); // OLED: SDA = A4, SCL = A5
bool ventilatorAn = false;
void setup() {
Serial.begin(9600);
pinMode(RELAIS_PIN, OUTPUT);
digitalWrite(RELAIS_PIN, LOW); // Starte mit dem Relais aus
dht.begin();
bildschirm.begin(SSD1306_SWITCHCAPVCC, 0x3C);
bildschirm.setTextColor(SSD1306_WHITE);
}
void loop() {
float temperatur = dht.readTemperature();
if (!isnan(temperatur)) {
// Zwei Grenzen, damit das Relais nicht dauernd an und aus klickt
if (temperatur > AN_UEBER) ventilatorAn = true;
if (temperatur < AUS_UNTER) ventilatorAn = false;
digitalWrite(RELAIS_PIN, ventilatorAn ? HIGH : LOW);
}
bildschirm.clearDisplay();
bildschirm.setTextSize(2);
bildschirm.setCursor(0, 0);
if (isnan(temperatur)) {
bildschirm.print(F("DHT11 ?"));
} else {
bildschirm.print(temperatur, 1);
bildschirm.print((char)247);
bildschirm.print(F("C"));
}
bildschirm.setTextSize(1);
bildschirm.setCursor(0, 22);
bildschirm.print(ventilatorAn ? F("Ventilator: AN") : F("Ventilator: aus"));
bildschirm.display();
Serial.print(F("Temperatur: "));
Serial.print(temperatur);
Serial.println(ventilatorAn ? F(" C -> AN") : F(" C -> aus"));
delay(2000);
}
🧠 Was macht der Code?
- Der DHT11 misst die Temperatur. Über 25 Grad schalten wir das Relais ein.
- Erst unter 24 Grad geht das Relais wieder aus. Mit diesen zwei Grenzen klickt es nicht dauernd an und aus.
- Das OLED-Display zeigt die Temperatur und "Ventilator: AN" oder "aus".
🎯 Probier mal …
- Füge zwei Tasten hinzu, um die Grenz-Temperatur höher und niedriger zu stellen
- Lass eine LED leuchten, solange der Ventilator an ist
- Lass den Ventilator auch angehen, wenn die Luftfeuchtigkeit über 70% kommt
🚀 Baue dieses Projekt mit Codey: Öffne codey.online/de/starter-kits/uno/projects/thermostat und klicke auf BAU DAS. Dann sind der Code und der Schaltplan sofort bereit.
Codey Online ist ein Produkt von OTRONIC