In acest articol vom folosi un senzor DHT22 pentru a masura temperatura si umiditatea din mediul inconjurator. Acest senzor mai poate fi gasit si sub denumirea de AM2302. De asemenea putem folosi si o versiune mai putin performanta a acestui senzor marcata ca si DHT11.
Senzorul DHT22 (AM2302) are o precizie de + 0,5 grade Celsius pe scala -40...+80 grade Celsius si + 2% RH umiditate relativa pe scala 0...100%.
Senzorul DHT11 are in schimb o precizie mai mica, mai exact + 2 grade Celsius pe scala 0...50 grade Celsius si + 5% RH umiditate relativa pe scala 20...90%.
Eu am folosit un modul cu AM2302 (acest modul are inclus rezistorul de 10KiloOhm intre +5V si pinul de date. pinul de date l-am conectat la pinul D2 al Arduino iar display-ul LCD a fost conectat exact ca in acest articol. Dar se poate folosi si un DHT22/11 simplu, impreuna cu rezistorul aferent pomenit mai devreme, si va functiona fara probleme.
Poza cu modulul mai jos:
Pentru a putea folosi acest senzor va trebui sa folosim si libraria DHT-sensor-library, librarie scrisa de cei de la Adafruit si care se poate descarca de aici.
Sketch-ul pentru a folosi doar senzorul (cu afisare pe terminalul serial a datelor citite) este urmatorul:
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
float hum;
float temp;
void setup() {
dht.begin();
Serial.begin(9600);
Serial.println("Citire temperatura si umiditate cu senzorul DHT22");
Serial.println("Temperatura: Umiditatea:");
delay(1000);
}
void loop() {
hum = dht.readHumidity();
temp= dht.readTemperature();
Serial.print(temp);
Serial.print(" grade Celsius ");
Serial.print(hum);
Serial.println(" % umiditate");
delay(1000);
}
O poza cu terminalul serial este mai jos:
Un sketch in care afisarea se face pe display-ul LCD ST7735 este mai jos:
#include <TFT_ST7735.h>
#include <SPI.h>
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
float hum;
float temp;
TFT_ST7735 tft = TFT_ST7735();
#define TFT_GREY 0x5AEB
void setup() {
dht.begin();
tft.init();
tft.setRotation(2);
tft.fillScreen(TFT_GREY);
tft.setTextSize(1);
tft.fillRect(2, 2, 122, 20, TFT_CYAN);
tft.setCursor(4, 4, 2);
tft.setTextColor(TFT_RED);
tft.println("Termometru ");
tft.fillRect(2, 25, 122,20, TFT_CYAN);
tft.setCursor(4, 27, 2);
tft.setTextColor(TFT_RED);
tft.print("cu DHT22");
delay(2000);
}
void loop() {
hum = dht.readHumidity();
temp= dht.readTemperature();
tft.fillScreen(TFT_GREY);
tft.setTextSize(1);
tft.fillRect(2, 2, 122, 20, TFT_WHITE);
tft.setCursor(4, 4, 2);
tft.setTextColor(TFT_BLUE);
tft.println("Temperatura: ");
tft.fillRect(2, 25, 122,20, TFT_WHITE);
tft.setCursor(4, 27, 2);
tft.setTextColor(TFT_BLUE);
tft.print(temp);
tft.print(" ");
tft.drawCircle(43, 30, 2, TFT_BLUE);
tft.print(" Celsius");
tft.fillRect(2, 48, 122, 20, TFT_WHITE);
tft.setTextColor(TFT_BLUE);
tft.setCursor(4, 52, 2);
tft.print("Umiditate: ");
tft.fillRect(2, 75, 122, 20, TFT_WHITE);
tft.setTextColor(TFT_BLUE);
tft.setCursor(4, 77, 2);
tft.print(hum);
tft.print(" %");
tft.fillRect(2, 100, 122, 20, TFT_WHITE);
tft.setTextColor(TFT_BLUE);
tft.setCursor(4, 102, 2);
tft.print("electronicstore.ro");
delay(2000);
}
Un video de prezentare oate fi vizualizat mai jos:
Lasa un comentariu