⭐⭐⭐ Wyzwanie
⏱️ 30 minut
Sprytny wentylator
Budujesz termostat. Gdy zrobi się cieplej niż 25 stopni, przekaźnik kliknie i się włączy. Tak Arduino może na przykład włączyć mały wentylator na baterię. Na ekranie widzisz temperaturę i czy wentylator jest włączony.
🧰 Czego potrzebujesz?
🔌
Kabel USB + Przewody połączeniowe🗺️ Schemat podłączenia
Poprowadź przewody od Arduino do każdej części. Kolory przewodów możesz wybrać samodzielnie.
| Od | Do |
|---|---|
Arduino UNO · D2 |
Czujnik temperatury DHT11 · DAT |
Arduino UNO · 5V |
Czujnik temperatury DHT11 · VCC |
Arduino UNO · GND |
Czujnik temperatury DHT11 · GND |
Arduino UNO · D7 |
Przekaźnik 5V · S |
Arduino UNO · 5V |
Przekaźnik 5V · + |
Arduino UNO · GND |
Przekaźnik 5V · - |
Arduino UNO · A4 |
Ekranik OLED 0,91" · SDA |
Arduino UNO · A5 |
Ekranik OLED 0,91" · SCL |
Arduino UNO · 5V |
Ekranik OLED 0,91" · VCC |
Arduino UNO · GND |
Ekranik OLED 0,91" · GND |
🛠️ Tak to zbudujesz
- Podłącz DHT11: DAT do pin 2, VCC do 5V i GND do GND.
- Podłącz przekaźnik: S do pin 7, + do 5V i − do GND.
- Podłącz ekran OLED: SDA do A4, SCL do A5, VCC do 5V i GND do GND.
- Chcesz naprawdę coś przełączać? Użyj tylko baterii albo niskiego napięcia na COM i NO, nigdy gniazdka.
💻 Kod
// Sprytny wentylator (termostat)
// Robi się za ciepło? Wtedy przekaźnik się włącza, na przykład dla wentylatora.
// Na ekranie widzisz temperaturę i czy wentylator jest włączony.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
const int DHT_PIN = 2; // DAT z DHT11 na pin 2
const int PRZEKAZNIK_PIN = 7; // S z przekaźnika na pin 7
const float WLACZ_POWYZEJ = 25.0; // Powyżej tej temperatury wentylator się włącza
const float WYLACZ_PONIZEJ = 24.0; // Poniżej tej temperatury znów się wyłącza
DHT dht(DHT_PIN, DHT11);
Adafruit_SSD1306 ekran(128, 32, &Wire, -1); // OLED: SDA = A4, SCL = A5
bool wentylatorWlaczony = false;
void setup() {
Serial.begin(9600);
pinMode(PRZEKAZNIK_PIN, OUTPUT);
digitalWrite(PRZEKAZNIK_PIN, LOW); // Zacznij z wyłączonym przekaźnikiem
dht.begin();
ekran.begin(SSD1306_SWITCHCAPVCC, 0x3C);
ekran.setTextColor(SSD1306_WHITE);
}
void loop() {
float temperatura = dht.readTemperature();
if (!isnan(temperatura)) {
// Dwie granice, aby przekaźnik nie klikał ciągle włącz i wyłącz
if (temperatura > WLACZ_POWYZEJ) wentylatorWlaczony = true;
if (temperatura < WYLACZ_PONIZEJ) wentylatorWlaczony = false;
digitalWrite(PRZEKAZNIK_PIN, wentylatorWlaczony ? HIGH : LOW);
}
ekran.clearDisplay();
ekran.setTextSize(2);
ekran.setCursor(0, 0);
if (isnan(temperatura)) {
ekran.print(F("DHT11 ?"));
} else {
ekran.print(temperatura, 1);
ekran.print((char)247);
ekran.print(F("C"));
}
ekran.setTextSize(1);
ekran.setCursor(0, 22);
ekran.print(wentylatorWlaczony ? F("Wentyl.: WL") : F("Wentyl.: wyl"));
ekran.display();
Serial.print(F("Temp.: "));
Serial.print(temperatura);
Serial.println(wentylatorWlaczony ? F(" C -> WL") : F(" C -> wyl"));
delay(2000);
}
🧠 Co robi kod?
- DHT11 mierzy temperaturę. Powyżej 25 stopni włączamy przekaźnik.
- Dopiero poniżej 24 stopni przekaźnik znowu się wyłączy. Dzięki tym dwóm granicom nie klika ciągle włącz i wyłącz.
- Ekran OLED pokazuje temperaturę oraz „Wentyl.: WL” albo „wyl”.
🎯 Spróbuj…
- Dodaj dwa przyciski, aby ustawiać temperaturę graniczną wyżej i niżej
- Niech LED świeci, gdy wentylator jest włączony
- Niech wentylator włączy się też wtedy, gdy wilgotność powietrza będzie powyżej 70%
🚀 Zbuduj ten projekt z Codey: otwórz codey.online/pl/starter-kits/uno/projects/thermostat i kliknij ZRÓB TO. Wtedy kod i schemat podłączenia będą od razu gotowe.
Codey Online to produkt od OTRONIC