Циљ вежбе


Научити како се користи сензор температуре и влажности DHT11 са Arduino


Задаци вежбе

1. Установа библиотеке за рад са сензором DHT11
2. Конструисати уређај и написати скеч за Arduina за очитавања показатеља сензора DHT11


Инструменти потребни у вежби


1. Умрежен рачунар
2. Платформа Arduino са USB интерфејсом (на пример Arduino UNO)


Теоријски део


Сензор DHT11 представља јефтини сензор температуре и релативне влажности са дигиталним излазом. Дијапазон измерене температуре се креће од 0 до 50 степени целзијуса, са тачношћу од 2 степена, а влажности од 20% до 90% са тачношћу од 5%. Подаци се предају путем 1Wire интерфејса, за напајање сензора потребан је сталан напон од 3 до 5,5 волти. Сензор користи струју од 2,5mA. За рад са сензором израђено је неколико библиотека, од којих ће једна бити коришћена и у нашој вежби.

Извршавање вежбе

1. Установа библиотеке за рад са сензором DHT11


Креирамо нови скеч и чувамога са називом DHTTest. Проверавамо да ли смо изабрали одговарајућу платформу и порт. Отварамо менаџер библиотека и тражимо у списку две библиотеке: "Adarfruit Unified Sensor" и "DHT sensor library". На почетку су дужни да се појаве редови. 

#include <DHT.h>
#include <DHT_U.h>

 

2. Конструисање уређаја и писање скеча за Arduina за очитавања показатеља сензора DHT11


Прикључујемо сензор DHT ка Arduinu. минус на уземљење, а плус на 5 волти, а средњи конектор "out" на дигитални пин 7. Израђујемо скеч. Пре функције setup() креирамо глобалну промењиву dht указивајући број пина 7 и тип сензора DHT11.

DHT_Unified dht(7,DHT11);

У функцији setup() иницирамо серијски порт и сензор. 

Serial.begin(9600);
dht.begin();

Даље модификујемо функцију loop() на следећи начин: креирамо промењиву са значењем сензора и у њу учитавамо вресности температуре, ако је значење тачно, у Serial уводимо температуру, ако није уводимо обавештење о грешци.

sensors_event_t event;
dht.temperature().getEvent(&event);
if(isnan(event.temperature))
    Serial.println("Error reading temperature!");
else
{
    Serial.print("Temperature: ");
    Serial.print(event.temperature);
    Serial.println(" *C");
}

 Понављамо све исто и за влажност

dht.humidity().getEvent(&event);
if(isnan(event.relative_humidity))
    Serial.println("Error reading humidity!");
else
{
    Serial.print("Humidity: ");
    Serial.print(event.relative_humidity);
    Serial.println("%");
}

Правимо паузу од пола секунде

delay(500);

Отварамо монитор порта и уверавамо се да ли добијамо информације о температури и влажности.