🧠 Introduzione
In questo progetto realizziamo un sistema completo di monitoraggio ambientale capace non solo di rilevare temperatura e umidità, ma anche di segnalare condizioni critiche tramite LED e buzzer.
A differenza dei progetti base, qui introduciamo una logica di controllo che permette ad Arduino di valutare lo stato dell’ambiente e reagire automaticamente quando vengono superate determinate soglie.
I dati vengono visualizzati su un display LCD, mentre il sistema segnala lo stato tramite indicatori visivi e acustici, rendendo il progetto molto più vicino a una soluzione reale.
Questo tipo di sistema è utilizzato in ambiti come:
In questo progetto realizziamo un sistema completo di monitoraggio ambientale capace non solo di rilevare temperatura e umidità, ma anche di segnalare condizioni critiche tramite LED e buzzer.
A differenza dei progetti base, qui introduciamo una logica di controllo che permette ad Arduino di valutare lo stato dell’ambiente e reagire automaticamente quando vengono superate determinate soglie.
I dati vengono visualizzati su un display LCD, mentre il sistema segnala lo stato tramite indicatori visivi e acustici, rendendo il progetto molto più vicino a una soluzione reale.
Questo tipo di sistema è utilizzato in ambiti come:
- serre e coltivazioni
- monitoraggio domestico
- ambienti sensibili
- automazione intelligente
🧰 Materiale necessario
- Arduino UNO
- Sensore DHT11
- Display LCD 16x2 con I2C
- 2 LED (verde e rosso)
- 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
Display LCD (I2C)
LED
Buzzer
⚠️ Tutti i GND devono essere collegati insieme.
Sensore DHT11
- VCC → 5V Arduino
- GND → GND Arduino
- DATA → Pin 2 Arduino
Display LCD (I2C)
- VCC → 5V Arduino
- GND → GND Arduino
- SDA → Pin A4 Arduino
- SCL → Pin A5 Arduino
LED
- LED verde → Pin 6 Arduino (con resistenza)
- LED rosso → Pin 7 Arduino (con resistenza)
Buzzer
- Positivo → Pin 8 Arduino
- Negativo → GND
⚠️ Tutti i GND devono essere collegati insieme.
📚 Librerie necessarie
- DHT.h
- LiquidCrystal_I2C
💻 Codice Arduino
// ============================================
// Progetto 98 - Monitor ambiente avanzato
// Display + LED + Buzzer
// ============================================
#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);
// Indicatori
int ledOK = 6;
int ledAllarme = 7;
int buzzer = 8;
// Soglie
float sogliaTemp = 30;
float sogliaUmid = 70;
void setup() {
lcd.init();
lcd.backlight();
dht.begin();
pinMode(ledOK, OUTPUT);
pinMode(ledAllarme, OUTPUT);
pinMode(buzzer, OUTPUT);
Serial.begin(9600);
}
void loop() {
float temperatura = dht.readTemperature();
float umidita = dht.readHumidity();
// Controllo errore sensore
if (isnan(temperatura) || isnan(umidita)) {
lcd.clear();
lcd.print("Errore sensore");
delay(2000);
return;
}
// Visualizzazione dati
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("T:");
lcd.print(temperatura);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("U:");
lcd.print(umidita);
lcd.print("%");
// Logica ambiente
if (temperatura > sogliaTemp || umidita > sogliaUmid) {
digitalWrite(ledOK, LOW);
digitalWrite(ledAllarme, HIGH);
digitalWrite(buzzer, HIGH); // attiva allarme
} else {
digitalWrite(ledOK, HIGH);
digitalWrite(ledAllarme, LOW);
digitalWrite(buzzer, LOW); // spegne allarme
}
delay(2000);
}
// Progetto 98 - Monitor ambiente avanzato
// Display + LED + Buzzer
// ============================================
#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);
// Indicatori
int ledOK = 6;
int ledAllarme = 7;
int buzzer = 8;
// Soglie
float sogliaTemp = 30;
float sogliaUmid = 70;
void setup() {
lcd.init();
lcd.backlight();
dht.begin();
pinMode(ledOK, OUTPUT);
pinMode(ledAllarme, OUTPUT);
pinMode(buzzer, OUTPUT);
Serial.begin(9600);
}
void loop() {
float temperatura = dht.readTemperature();
float umidita = dht.readHumidity();
// Controllo errore sensore
if (isnan(temperatura) || isnan(umidita)) {
lcd.clear();
lcd.print("Errore sensore");
delay(2000);
return;
}
// Visualizzazione dati
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("T:");
lcd.print(temperatura);
lcd.print("C");
lcd.setCursor(0, 1);
lcd.print("U:");
lcd.print(umidita);
lcd.print("%");
// Logica ambiente
if (temperatura > sogliaTemp || umidita > sogliaUmid) {
digitalWrite(ledOK, LOW);
digitalWrite(ledAllarme, HIGH);
digitalWrite(buzzer, HIGH); // attiva allarme
} else {
digitalWrite(ledOK, HIGH);
digitalWrite(ledAllarme, LOW);
digitalWrite(buzzer, LOW); // spegne allarme
}
delay(2000);
}
⚙️ Come funziona
Arduino legge temperatura e umidità dal sensore DHT11 e visualizza i dati sul display LCD.
Se i valori superano le soglie impostate, il sistema attiva:
Se i valori sono normali, rimane acceso il LED verde.
Questo permette di avere un sistema di monitoraggio immediato e facilmente comprensibile.
Arduino legge temperatura e umidità dal sensore DHT11 e visualizza i dati sul display LCD.
Se i valori superano le soglie impostate, il sistema attiva:
- LED rosso
- buzzer
Se i valori sono normali, rimane acceso il LED verde.
Questo permette di avere un sistema di monitoraggio immediato e facilmente comprensibile.
🔁 Varianti possibili
- Sensore DHT22
- Display OLED
- Invio dati via WiFi
- Storico dati su SD