Site icon Danilo Larizza

Termostato con Arduino e DHT11

 

Dopo qualche realizzazione pratica con Raspberry Pi, iniziamo a “smanettare” con Arduino.

Il progetto che andiamo a trattare riguarda un semplice termostato “di fortuna” realizzato in non più di 20 minuti utilizzando un Arduino, un display (compatibile HD44780) e un sensore di temperatura/umidità DHT11.

Avevo l’esigenza di accendere e spegnere una caldaia quando la temperatura ambientale scendeva sotto i 17 gradi…non volendo comprare un termostato nuovo…ho recuperato un display e ho cercato di visualizzare sopra tutti i dati rilevati.

Iniziamo con i collegamenti ….

Il display si collega così …

Connessione display LCD – arduino.cc

Il sensore si collega così …

Connessione sensore DHT11

 

Il relè per l’attivazione della caldaia va al pin 13….in questo progetto non e’ connesso perché e’ parte integrante dell’impianto di riscaldamento preesistente….testeremo il funzionamento con il led presente sulla scheda Arduino.

Prima di iniziare a scrivere il codice vi rimando a due pagine dove troverete le librerie per LCD e DHT11

Ecco il codice….realizzato scopiazzando tra i vari esempi già presenti nell’IDE di Arduino:

// carico le librerie
#include <LiquidCrystal.h>
#include "DHT.h"
// definisco il pin del sensore
#define DHTPIN 8
// definisco il tipo di sensore
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
// definisco a quali pin è connesso il display
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// definisco che il pin 13 è quello a cui è connesso il led
const int ledPin = 13;
void setup() {
// setto il tipo di display (colonne, righe)
lcd.begin(20, 2);
// scrivo sul display le parole fisse
lcd.print("Temperatura");
lcd.setCursor(0,1);
lcd.print("Umidita'");
lcd.setCursor(16,0);
lcd.print("Cald");
pinMode(ledPin, OUTPUT);
}
void loop() {
int t = dht.readTemperature();
int h = dht.readHumidity();
// posiziono il cursore alla colonna 12 e riga 0
lcd.setCursor(12, 0);
lcd.print(t);
lcd.setCursor(12, 1);
lcd.print(h);
// setto il limite di temperatura minore o uguale a 17 gradi
if (t <= 17) {
//
digitalWrite(ledPin, HIGH);
lcd.setCursor(16, 1);
lcd.print("Acc");
}
else {
// turn LED off:
digitalWrite(ledPin, LOW);
lcd.setCursor(16, 1);
lcd.print("Spe");
}
}

 

 

Tutto ciò che trovate dopo le // lo potete eliminare…sono solo commenti per farvi capire cosa succede in quel punto preciso del programma….

Una volta caricato il tutto….compariranno sul display temperatura e umidità dell’ambiente. Se la temperatura e’ inferiore o uguale a 17°C si accenderà il led…e quindi il relè ad esso connesso (tramite un transistor di potenza). Su display comparirà la scritta “Acc” che sta per Acceso.

Superati i 17°C il led si spegne e sul display compare la scritta “Spe”… che sta per spento!

Ecco un video…

Termostato con Arduino e DHT11 from danilo larizza on Vimeo.

Se volete aumentare o diminuire la temperatura di intervento basta modificare il valore nella riga :

if (t <= 17)

Buon lavoro….

Exit mobile version