⭐⭐⭐ Sfida
⏱️ 30 minuti
Ventilatore intelligente
Costruisci un termostato. Se fa più caldo di 25 gradi, il relè fa clic e si accende. Così il tuo Arduino può accendere, per esempio, una piccola ventola con una batteria. Sullo schermo vedi la temperatura e se la ventola è accesa.
🧰 Che cosa ti serve?
🔌
Cavo USB + Cavetti jumper🗺️ Schema di collegamento
Segui i fili dall'Arduino a ogni componente. Puoi scegliere tu i colori dei fili.
| Da | A |
|---|---|
Arduino UNO · D2 |
Sensore di temperatura DHT11 · DAT |
Arduino UNO · 5V |
Sensore di temperatura DHT11 · VCC |
Arduino UNO · GND |
Sensore di temperatura DHT11 · GND |
Arduino UNO · D7 |
Relè 5V · S |
Arduino UNO · 5V |
Relè 5V · + |
Arduino UNO · GND |
Relè 5V · - |
Arduino UNO · A4 |
Piccolo schermo OLED 0,91" · SDA |
Arduino UNO · A5 |
Piccolo schermo OLED 0,91" · SCL |
Arduino UNO · 5V |
Piccolo schermo OLED 0,91" · VCC |
Arduino UNO · GND |
Piccolo schermo OLED 0,91" · GND |
🛠️ Così lo costruisci
- Collega il DHT11: DAT verso pin 2, VCC verso 5V e GND verso GND.
- Collega il relè: S verso pin 7, + verso 5V e − verso GND.
- Collega lo schermo OLED: SDA verso A4, SCL verso A5, VCC verso 5V e GND verso GND.
- Vuoi davvero accendere qualcosa? Usa solo una batteria o bassa tensione su COM e NO, mai la presa di corrente.
💻 Il codice
// Ventilatore intelligente (termostato)
// Fa troppo caldo? Allora il relè si attiva, per esempio per una ventola.
// Sullo schermo vedi la temperatura e se la ventola è accesa.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
const int DHT_PIN = 2; // DAT del DHT11 sul pin 2
const int RELE_PIN = 7; // S del relè sul pin 7
const float ACCESO_SOPRA = 25.0; // Sopra questa temperatura la ventola si accende
const float SPENTO_SOTTO = 24.0; // Sotto questa temperatura si spegne di nuovo
DHT dht(DHT_PIN, DHT11);
Adafruit_SSD1306 schermo(128, 32, &Wire, -1); // OLED: SDA = A4, SCL = A5
bool ventilatoreAcceso = false;
void setup() {
Serial.begin(9600);
pinMode(RELE_PIN, OUTPUT);
digitalWrite(RELE_PIN, LOW); // Inizia con il relè spento
dht.begin();
schermo.begin(SSD1306_SWITCHCAPVCC, 0x3C);
schermo.setTextColor(SSD1306_WHITE);
}
void loop() {
float temperatura = dht.readTemperature();
if (!isnan(temperatura)) {
// Due limiti, così il relè non fa clic di continuo
if (temperatura > ACCESO_SOPRA) ventilatoreAcceso = true;
if (temperatura < SPENTO_SOTTO) ventilatoreAcceso = false;
digitalWrite(RELE_PIN, ventilatoreAcceso ? HIGH : LOW);
}
schermo.clearDisplay();
schermo.setTextSize(2);
schermo.setCursor(0, 0);
if (isnan(temperatura)) {
schermo.print(F("DHT11 ?"));
} else {
schermo.print(temperatura, 1);
schermo.print((char)247);
schermo.print(F("C"));
}
schermo.setTextSize(1);
schermo.setCursor(0, 22);
schermo.print(ventilatoreAcceso ? F("Ventola: accesa") : F("Ventola: spenta"));
schermo.display();
Serial.print(F("Temperatura: "));
Serial.print(temperatura);
Serial.println(ventilatoreAcceso ? F(" C -> accesa") : F(" C -> spenta"));
delay(2000);
}
🧠 Che cosa fa il codice?
- Il DHT11 misura la temperatura. Sopra i 25 gradi accendiamo il relè.
- Solo sotto i 24 gradi il relè si spegne di nuovo. Con questi due limiti non continua ad accendersi e spegnersi.
- Lo schermo OLED mostra la temperatura e "Ventola: accesa" o "spenta".
🎯 Prova anche…
- Aggiungi due pulsanti per alzare e abbassare la temperatura limite
- Fai accendere un LED finché la ventola è accesa
- Fai partire la ventola anche quando l'umidità dell'aria supera il 70%
🚀 Costruisci questo progetto con Codey: apri codey.online/it/starter-kits/uno/projects/thermostat e clicca su FAI QUESTO. Così il codice e lo schema di collegamento sono subito pronti.
Codey Online è un prodotto di OTRONIC