🧠 Introduzione
In questo progetto realizziamo un sistema di mini domotica con Arduino, integrando diversi sensori e attuatori per automatizzare il controllo di un ambiente domestico.
A differenza dei progetti precedenti, qui non abbiamo un singolo obiettivo, ma un sistema completo che gestisce più funzioni contemporaneamente:
Arduino diventa quindi il cervello di una piccola smart home, capace di prendere decisioni in autonomia in base ai dati ricevuti dai sensori.
Questo progetto rappresenta un riepilogo pratico di tutto ciò che hai imparato e una base perfetta per sistemi domotici reali più avanzati.
In questo progetto realizziamo un sistema di mini domotica con Arduino, integrando diversi sensori e attuatori per automatizzare il controllo di un ambiente domestico.
A differenza dei progetti precedenti, qui non abbiamo un singolo obiettivo, ma un sistema completo che gestisce più funzioni contemporaneamente:
- controllo della temperatura
- gestione delle luci automatiche
- segnalazione di allarmi
- visualizzazione su display
Arduino diventa quindi il cervello di una piccola smart home, capace di prendere decisioni in autonomia in base ai dati ricevuti dai sensori.
Questo progetto rappresenta un riepilogo pratico di tutto ciò che hai imparato e una base perfetta per sistemi domotici reali più avanzati.
🧰 Materiale necessario
- Arduino UNO
- Sensore DHT11
- Sensore di luce (LDR)
- Display LCD 16x2 con I2C
- Relè (o LED) per luci
- Ventola (o LED) per temperatura
- Buzzer
- Breadboard
- Cavi jumper
🛒 Componenti e risorse consigliate
👉 Kit Arduino consigliato: https://amzn.to/41fmFNK
💡 Con un solo kit puoi realizzare la maggior parte dei progetti presenti nel sito.
📚 I miei libri consigliati
👉 Arduino per tutti – Volume 1: https://amzn.to/4rGNxB9
👉 Arduino per tutti – Volume 2: https://amzn.to/4bkfaey
👉 Arduino per tutti – Volume 3: https://amzn.to/4bogjAg
👉 Kit Arduino consigliato: https://amzn.to/41fmFNK
💡 Con un solo kit puoi realizzare la maggior parte dei progetti presenti nel sito.
📚 I miei libri consigliati
👉 Arduino per tutti – Volume 1: https://amzn.to/4rGNxB9
👉 Arduino per tutti – Volume 2: https://amzn.to/4bkfaey
👉 Arduino per tutti – Volume 3: https://amzn.to/4bogjAg
🔌 Schema di collegamento
Sensore DHT11
Sensore LDR
Display LCD (I2C)
Attuatori
⚠️ Tutti i GND devono essere collegati insieme.
Sensore DHT11
- VCC → 5V Arduino
- GND → GND Arduino
- DATA → Pin 2 Arduino
Sensore LDR
- Un lato → 5V
- Altro lato → Pin A0
- Resistenza → tra A0 e GND
Display LCD (I2C)
- VCC → 5V
- GND → GND
- SDA → A4
- SCL → A5
Attuatori
- Relè luci → Pin 7
- Ventola → Pin 8
- Buzzer → Pin 9
⚠️ Tutti i GND devono essere collegati insieme.
📚 Librerie necessarie
- DHT.h
- LiquidCrystal_I2C
💻 Codice Arduino
// ============================================
// Progetto 99 - Mini domotica Arduino
// Controllo luci + temperatura + allarme
// ============================================
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
// Sensori
int ldr = A0;
// Attuatori
int releLuci = 7;
int ventola = 8;
int buzzer = 9;
// Soglie
float sogliaTemp = 28;
int sogliaLuce = 500;
void setup() {
lcd.init();
lcd.backlight();
dht.begin();
pinMode(releLuci, OUTPUT);
pinMode(ventola, OUTPUT);
pinMode(buzzer, OUTPUT);
Serial.begin(9600);
}
void loop() {
// Lettura sensori
float temp = dht.readTemperature();
int luce = analogRead(ldr);
// Controllo errore
if (isnan(temp)) {
lcd.clear();
lcd.print("Errore sensore");
return;
}
// Controllo luci automatiche
if (luce < sogliaLuce) {
digitalWrite(releLuci, HIGH); // accende luci
} else {
digitalWrite(releLuci, LOW); // spegne luci
}
// Controllo temperatura
if (temp > sogliaTemp) {
digitalWrite(ventola, HIGH);
digitalWrite(buzzer, HIGH); // allarme caldo
} else {
digitalWrite(ventola, LOW);
digitalWrite(buzzer, LOW);
}
// Visualizzazione su LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("T:");
lcd.print(temp);
lcd.setCursor(0, 1);
lcd.print("L:");
lcd.print(luce);
delay(2000);
}
// Progetto 99 - Mini domotica Arduino
// Controllo luci + temperatura + allarme
// ============================================
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
// Sensori
int ldr = A0;
// Attuatori
int releLuci = 7;
int ventola = 8;
int buzzer = 9;
// Soglie
float sogliaTemp = 28;
int sogliaLuce = 500;
void setup() {
lcd.init();
lcd.backlight();
dht.begin();
pinMode(releLuci, OUTPUT);
pinMode(ventola, OUTPUT);
pinMode(buzzer, OUTPUT);
Serial.begin(9600);
}
void loop() {
// Lettura sensori
float temp = dht.readTemperature();
int luce = analogRead(ldr);
// Controllo errore
if (isnan(temp)) {
lcd.clear();
lcd.print("Errore sensore");
return;
}
// Controllo luci automatiche
if (luce < sogliaLuce) {
digitalWrite(releLuci, HIGH); // accende luci
} else {
digitalWrite(releLuci, LOW); // spegne luci
}
// Controllo temperatura
if (temp > sogliaTemp) {
digitalWrite(ventola, HIGH);
digitalWrite(buzzer, HIGH); // allarme caldo
} else {
digitalWrite(ventola, LOW);
digitalWrite(buzzer, LOW);
}
// Visualizzazione su LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("T:");
lcd.print(temp);
lcd.setCursor(0, 1);
lcd.print("L:");
lcd.print(luce);
delay(2000);
}
⚙️ Come funziona
Arduino legge continuamente i dati dai sensori:
In base ai valori rilevati:
Tutti i dati vengono visualizzati sul display LCD, permettendo un controllo immediato dello stato del sistema.
Arduino legge continuamente i dati dai sensori:
- temperatura (DHT11)
- luce ambientale (LDR)
In base ai valori rilevati:
- accende le luci quando è buio
- attiva la ventola quando fa caldo
- segnala un allarme tramite buzzer
Tutti i dati vengono visualizzati sul display LCD, permettendo un controllo immediato dello stato del sistema.
🔁 Varianti possibili
- Controllo remoto via WiFi
- Aggiunta sensore PIR
- App mobile
- Sistema domotico completo