I dati raccolti sono estremamente precisi , potete usare sensori di diversi tipi e queste ne sono le caratteristiche dei due tipi di sensori che si possono usare con lo stesso programma
modello DHT11 Ultra low cost 3 to 5V power and I/O 2.5mA max current use during conversion (while requesting data) Good for 20-80% humidity readings with 5% accuracy Good for 0-50°C temperature readings ±2°C accuracy No more than 1 Hz sampling rate (once every second) Body size 15.5mm x 12mm x 5.5mm 4 pins with 0.1" spacing
modello DHT22 Low cost 3 to 5V power and I/O 2.5mA max current use during conversion (while requesting data) Good for 0-100% humidity readings with 2-5% accuracy Good for -40 to 125°C temperature readings ±0.5°C accuracy No more than 0.5 Hz sampling rate (once every 2 seconds) Body size 15.1mm x 25mm x 7.7mm 4 pins with 0.1" spacing
Per ora ho finito, passeremo poi a collegare alla scheda un display digitale .
L'idea finale è di arrivare a controllare ad impostare la temperatura interagendo con il termostato e un umidificatore (e volendo anche con telecomando alla mano) parliamo di una spesa totale di una 60ina di euro ..
in ottica di semplificazione e immaginando di sezionare il frigorifero sarebbe possibile con una arduino pilotare 3 o 4 zone a umidità diverse (ovviamente con 4 sensori e 4 umidificatori usb)
ciao Davide. certo ma ovviamente il numero di porte di IO sono limitate, in questi casi si pilotano gli attuatori tramite dei chip multiplexer. bisogna stare sempre attenti al carico su Arduino quindi verranno introdotti dei relè o transistor per alimentazione da esterno
Il codice per pilotare la scheda, occhio che rispetto al passo precendente ho spostato il pin di lettura sensore dal 2 al 7, fare riferimento quindi allo schema precedente (quello che contiene il display )
Codice:
#include "DHT.h" #include <LiquidCrystal.h>
#define DHTPIN 7 // il pin di Arduino da cui raccoglieremo i dati
// Commentare a seconda del tipo di sensore utlizzato #define DHTTYPE DHT11 // DHT 11 //#define DHTTYPE DHT22 // DHT 22 (AM2302) //#define DHTTYPE DHT21 // DHT 21 (AM2301) LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Connettere pin 1 (a sx) del sensore ai +5V di arduino // Connettere pin 7 del sensore al pin 7 PWM di Arduino // Connect pin 4 (on the right) of the sensor to GROUND // Connettere una resistenza da 10K dal pin 2 (dati) al pin 1 (power) del sensore
DHT dht(DHTPIN, DHTTYPE);
void setup() { Serial.begin(9600); // inizializziamo il display dicendo che è 16 colonne per due righe lcd.begin(16, 2); Serial.println("Test Sensore Umidità"); // mi posiziono sul display all'inizio della prima riga e stampo "Temp:" // posizione 0 è la prima riga lcd.setCursor(0, 0); lcd.print("Temp: "); // mi posiziono sul display all'inizio della seconda riga e stampo "Umid:" // posizione 1 è la prima riga lcd.setCursor(0, 1); lcd.print("Umid: ");
dht.begin(); }
void loop() { // la lettura di umidità e temperatura dal sensore impiega circa 250 millisecondi!
float h = dht.readHumidity(); float t = dht.readTemperature();
// controlla se i valori letti dal sensore sono validi! if (isnan(t) || isnan(h)) { Serial.println("Errore di lettura sensore"); } else { // stampo sul display i valori H di umidità e dopo T di temperatura Serial.print("Umidità: "); lcd.setCursor(6, 1); lcd.print(h); lcd.setCursor(6, 0); lcd.print(t); lcd.setCursor(11, 1); lcd.print("%"); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperatura: "); Serial.print(t); Serial.println(" *C"); } }