Для измерения температуры и относительной влажности окружающего воздуха мы возьмем датчик DHT11 и электронный набор Arduino. Данные температуры и влажности поставляются по сигнальному проводу в виде цифрового сигнала. Это позволяет передавать данные на расстояние до 20 м. DHT11 общается с принимающей стороной, такой как Arduino по собственному протоколу. Коммуникация двунаправлена и в общих чертах выглядит так:
Микроконтроллер говорит о том, что хочет считать показания. Для этого он устанавливает сигнальную линию в 0 на некоторое время, а затем устанавливает её в 1;
Сенсор подтверждает готовность отдать данные. Для этого он аналогично сначала устанавливает сигнальную линию в 0, затем в 1;
После этого сенсор передаёт последовательность 0 и 1, последовательно формирующих 5 байт (40 бит). В первых двух байтах передаётся температура, в третьем-четвёртом — влажность, в пятом — контрольная сумма, чтобы микроконтроллер смог убедиться в отсутствии ошибок считывания.
Благодаря тому, что сенсор делает измерения только по запросу, достигается энергоэффективность: пока общения нет, датчик потребляет очень небольшой ток.
Характеристики датчика DHT11:
Напряжение питания: 5 В
Диапазон температур: 0–50 °С
Погрешность температуры: ±2 °С
Диапазон влажности: 20–90%
Погрешность влажности: ±5%
Рис. 1.
Результат выглядит следующим образом (рис. 2):
Рис. 2.
Для работы с датчиком в среде Arduino необходимо установить дополнительную библиотеку DHT (2).
Установка библиотеки производиться прямо в среде разработки, нажав: Скетч→Подключить библиотеку→Добавить Zip. библиотеку, после чего будет необходимо указать путь к скачанному, не распакованному архиву. Далее перезапускаем среду разработки Arduino, для подключения библиотеки, нужно написать всего одну строку в начале скетча: "#include ".
Теперь нужно загрузить тестовый скетч (программу), который будет отображать влажность и температуру в окне Монитора порта.
#include "DHT.h"
#defineDHTPIN 2 // номер пина, к которому подсоединен датчик#defineDHTTYPEDHT11
DHTdht(DHTPIN, DHTTYPE);// инициируем датчик
voidsetup() {Serial.begin(9600);Serial.println("DHTxxtest!");
dht.begin();}
voidloop() {
floath = dht.readHumidity();//считываем влажностьfloatt = dht.readTemperature();//считываем температуру
if (isnan(t) || isnan(h)) { // проверка удачно прошло ли считывание.Serial.println("Failed to read from DHT"); // неудалосьсчитатьпоказания}else {Serial.print("Humidity: ");Serial.print(h);Serial.print(" %t");Serial.print("Temperature: ");Serial.print(t);Serial.println(" *C");}}
Чтобы увидеть результат работы: Инструменты→Монитор порта (рис. 3).
Рис. 3.
Датчики температуры и влажности устанавливаются на высоте 2 м над землёй в метеобудке: это небольшой деревянный ящик (размером приблизительно 40*40*40 см) с белыми, отражающими свет перфорированными или жалюзийными стенками, а также солнцеводозащитным козырьком (крышка будки должна быть герметичной и иметь наклон для стекания осадков с будки).
Литература.
Амперка. Официальный сайт. – URL: http://amperka.ru.
Библиотека для датчика DHT11. – URL: https://geekelectronics.org/download/22/