// Codice per il monitoraggio da remoto della temperatura e umidità
// https://www.youtube.com/watch?v=y0l2E-UTLpk
// https://drive.google.com/file/d/1SSqlNJ1aN55LrnEKOAATNueWEznwqnbA/view
/*
Da fare:
- Gestione della temperatura
- Gestione manuale/automatico
- Accensione LED di segnalazione: Power, Manuale/Automatico, Sistema Acceso
*/
#include "Adafruit_Sensor.h"
#include <DHT.h>
//Constants
#define DHTPIN 4 // pin DATI sul GPIO
//#define DHTTYPE DHT11 // Sensore DHT11 (AM2302)
#define DHTTYPE DHT22 // DHT 11 (AM2302)
DHT dht(DHTPIN, DHTTYPE); // Inizializza il sensore
int RelayPIN = 22; //GPIO pin usato dal LED
float temp; // Temperatura ambiente misurata (in °C)
float tempRef = 20; // Temperatura minima per l'accensione del sistema (in °C)
float tempMax = 22; // Temperatura massima per lo spegnomento del sistema (in °C)
float humidity; // Umidità ambiente misurata
void setup() {
Serial.begin(115200); // Inizializzazione del monitor seriale (solo per il debugging!)
pinMode(RelayPIN, OUTPUT);
dht.begin(); // Inizializzazione del sensore
delay(200); // Attendi questo tempo per assicurarti che l'hardware sia stato correttamente inizializzato
}
void loop() {
temp = dht.readTemperature();
humidity = dht.readHumidity();
Serial.print("Sistema: ");
if (temp<tempRef) {
Serial.print(" ON, ");
digitalWrite(RelayPIN,HIGH); // Attua il relay che NO diventa NC (e viceversa)
} else if (temp>tempMax){
Serial.print("OFF, ");
digitalWrite(RelayPIN,LOW); // Disabilita il relay, NO torna NO (e viceversa)
} else { //temperature inferiori a tempRef
Serial.print("OFF, ");
digitalWrite(RelayPIN,LOW); // Disabilita il relay, NO torna NO (e viceversa)
}
Serial.print("Temp : ");
Serial.print(temp, 1);
Serial.print(" °C (Tref: ");
Serial.print(tempRef, 1);
Serial.print(" °C, Tmax: ");
Serial.print(tempMax, 1);
Serial.print(" °C), Umidità : ");
Serial.print(humidity, 0);
Serial.println("% ");
delay(1000); // ritardo per gestire il loop()
}NC
NO
Segnale Alto/Basso
Power