🧠 Introduzione
In questo progetto finale realizziamo una vera centralina smart home con Arduino, capace di gestire contemporaneamente più sensori e attuatori in modo organizzato e modulare.
A differenza dei progetti precedenti, qui non abbiamo solo automazioni semplici, ma un sistema strutturato che integra:
Arduino diventa il cuore di una piccola casa intelligente, in grado di prendere decisioni autonome e reagire in tempo reale alle condizioni dell’ambiente.
Questo progetto rappresenta la sintesi completa di tutto il percorso fatto nei 100 progetti.
In questo progetto finale realizziamo una vera centralina smart home con Arduino, capace di gestire contemporaneamente più sensori e attuatori in modo organizzato e modulare.
A differenza dei progetti precedenti, qui non abbiamo solo automazioni semplici, ma un sistema strutturato che integra:
- monitoraggio ambientale
- controllo luci automatico
- gestione temperatura
- sistema di sicurezza base
- interfaccia utente con display
Arduino diventa il cuore di una piccola casa intelligente, in grado di prendere decisioni autonome e reagire in tempo reale alle condizioni dell’ambiente.
Questo progetto rappresenta la sintesi completa di tutto il percorso fatto nei 100 progetti.
🧰 Materiale necessario
- Arduino UNO
- Sensore DHT11
- Sensore LDR
- Sensore PIR (movimento)
- Display LCD 16x2 I2C
- 2 Relè (luci + ventola)
- 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
Sensori
DHT11
Display LCD (I2C)
Attuatori
⚠️ Tutti i GND devono essere collegati insieme.
Sensori
DHT11
- VCC → 5V
- GND → GND
- DATA → Pin 2
- Un lato → 5V
- Altro lato → A0
- Resistenza → tra A0 e GND
- VCC → 5V
- GND → GND
- OUT → Pin 3
Display LCD (I2C)
- VCC → 5V
- GND → GND
- SDA → A4
- SCL → A5
Attuatori
- Relè luci → Pin 7
- Relè ventola → Pin 8
- Buzzer → Pin 9
⚠️ Tutti i GND devono essere collegati insieme.
📚 Librerie necessarie
- DHT.h
- LiquidCrystal_I2C
💻 Codice Arduino
// ============================================
// Progetto 100 - Centralina smart home Arduino
// Sistema completo domotico modulare
// ============================================
#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;
int pir = 3;
// Attuatori
int releLuci = 7;
int releVentola = 8;
int buzzer = 9;
// Soglie
float sogliaTemp = 28;
int sogliaLuce = 500;
void setup() {
lcd.init();
lcd.backlight();
dht.begin();
pinMode(releLuci, OUTPUT);
pinMode(releVentola, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(pir, INPUT);
Serial.begin(9600);
}
void loop() {
// Lettura sensori
float temp = dht.readTemperature();
int luce = analogRead(ldr);
int movimento = digitalRead(pir);
// Controllo errore
if (isnan(temp)) {
lcd.clear();
lcd.print("Errore sensore");
return;
}
// Luci automatiche
if (luce < sogliaLuce) {
digitalWrite(releLuci, HIGH);
} else {
digitalWrite(releLuci, LOW);
}
// Controllo temperatura
if (temp > sogliaTemp) {
digitalWrite(releVentola, HIGH);
} else {
digitalWrite(releVentola, LOW);
}
// Sicurezza movimento
if (movimento == HIGH) {
digitalWrite(buzzer, HIGH);
} else {
digitalWrite(buzzer, LOW);
}
// Display stato sistema
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("T:");
lcd.print(temp);
lcd.setCursor(8, 0);
lcd.print("L:");
lcd.print(luce);
lcd.setCursor(0, 1);
lcd.print("Mov:");
lcd.print(movimento);
delay(2000);
}
// Progetto 100 - Centralina smart home Arduino
// Sistema completo domotico modulare
// ============================================
#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;
int pir = 3;
// Attuatori
int releLuci = 7;
int releVentola = 8;
int buzzer = 9;
// Soglie
float sogliaTemp = 28;
int sogliaLuce = 500;
void setup() {
lcd.init();
lcd.backlight();
dht.begin();
pinMode(releLuci, OUTPUT);
pinMode(releVentola, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(pir, INPUT);
Serial.begin(9600);
}
void loop() {
// Lettura sensori
float temp = dht.readTemperature();
int luce = analogRead(ldr);
int movimento = digitalRead(pir);
// Controllo errore
if (isnan(temp)) {
lcd.clear();
lcd.print("Errore sensore");
return;
}
// Luci automatiche
if (luce < sogliaLuce) {
digitalWrite(releLuci, HIGH);
} else {
digitalWrite(releLuci, LOW);
}
// Controllo temperatura
if (temp > sogliaTemp) {
digitalWrite(releVentola, HIGH);
} else {
digitalWrite(releVentola, LOW);
}
// Sicurezza movimento
if (movimento == HIGH) {
digitalWrite(buzzer, HIGH);
} else {
digitalWrite(buzzer, LOW);
}
// Display stato sistema
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("T:");
lcd.print(temp);
lcd.setCursor(8, 0);
lcd.print("L:");
lcd.print(luce);
lcd.setCursor(0, 1);
lcd.print("Mov:");
lcd.print(movimento);
delay(2000);
}
⚙️ Come funziona
Arduino legge continuamente tutti i sensori:
In base ai dati:
Il display LCD mostra lo stato del sistema in tempo reale.
Arduino legge continuamente tutti i sensori:
- temperatura (DHT11)
- luce ambientale (LDR)
- movimento (PIR)
In base ai dati:
- accende le luci quando è buio
- attiva la ventola quando fa caldo
- attiva un allarme in caso di movimento
Il display LCD mostra lo stato del sistema in tempo reale.
🔁 Varianti possibili
- Controllo via WiFi (ESP8266)
- App mobile
- Salvataggio dati
- Sistema smart completo