| Ваш IP: 34.203.28.212 | Online(19) - гости: 11, боты: 8 | Загрузка сервера: 1.27 ::::::::::::

DHT11 (Arduino)

На данной странице будет рассмотрено подключение и вывод информации в монитор порта модуля цифрового датчика температуры и влажности DHT11. Датчик DHT11 смонтирован на плате где установлен подтягивающий резистор и светодиод (индикатор питания). Напряжение питания датчика может быть в диапазоне от 3,5 до 5 В, измерение температуры проводится в интервале от 0 до 50 ºС, а влажности от 20 до 95 %. Погрешность при измерении температуры может достигать 2 ºС, а влажности до 5 %.

В датчике установлен термистор для измерения температуры и емкостной датчик влажности представляющий из себя конденсатор с переменной емкостью, который содержит токопроводящие обкладки из медной фольги на текстолите. Этот конденсатор заключен в герметичный чехол, поверх которого расположен влагопоглощающий слой. При попадании частиц воды на этот слой, меняется его диэлектрическая проницаемость, что приводит к изменению емкости конденсатора.

Подключение модуля с датчиком  DHT11 достаточно простое, VCC +5 В, GND и вывод данных DATA подключаем к цифровому входу Arduino.

Так как точность датчика не очень высокая то выводить десятые, а тем более сотые доли градусов или процентов нет смысла, поэтому для вывода значений температуры и влажности задан тип данных byte.

Индекс жары — температура, ощущаемая человеком в зависимости от влажности окружающего воздуха.

#include <DHT.h> 
DHT dht(2, DHT11); // выход DAT подключен к цыфровому входу 2
 
void setup() { 
  dht.begin(); 
  Serial.begin(9600);
}
 
void loop() {
  // считываем температуру (t), влажность (h) и индекс жары
  byte h = dht.readHumidity();// влажность
  byte t = dht.readTemperature();// температура
  float hic = dht.computeHeatIndex(t, h, false);// индекс жары в гр.Цельсия
  // выводим данные на монитор порта
 
  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.print(" %  ");
  Serial.print("Temperature: ");
  Serial.print(t);
  Serial.print(" C  ");
  Serial.print("Heat index: ");
  Serial.print(hic);
  Serial.println(" C ");
 
  delay(1000);
}

Для вывода показаний температуры, влажности и индекса жары на LCD 1602 можно использовать следующий скетч:

#include <DHT.h> 
#include <LiquidCrystal.h>
DHT dht(2, DHT11); // выход DAT подключен к цыфровому входу 2
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);// RS,E,D4,D5,D6,D7
 
void setup() { 
  dht.begin(); lcd.begin(16,2);// LCD 16X2
  Serial.begin(9600);
}
 
int x;
 
void loop() {
  // считываем температуру (t), влажность (h) и индекс жары
  byte h = dht.readHumidity();// влажность
  byte t = dht.readTemperature();// температура
  float hic = dht.computeHeatIndex(t, h, false);// индекс жары в гр.Цельсия
  // выводим данные на LCD
 lcd.setCursor(0,0);
 lcd.print("Temp   ");lcd.print(t);lcd.print(char(223));lcd.print("C  ");
 lcd.setCursor(0,1);
 if(x>=3 && x<10){ // выводить индекс жары каждые 3 секунды из 10
 lcd.print("Hum    ");lcd.print(h);lcd.print(" %         ");}
 else{lcd.print("Index  ");lcd.print(hic,1);lcd.print(char(223));lcd.print("C  ");}
 if(x==10){x=0;}
 delay(1000);
 x++;
}

Если добавить в схему цифровой датчик температуры 18b20 то получится простая погодная станция, датчик 18b20 выносится на улицу, а датчик DHT11 остается в комнате, на индикаторе 1602 отображаются температуры на улице и дома. Выход датчика 18b20 подключается к аналоговому входу А0, а выход датчика DHT11 к цифровому входу 2.

#include <DHT.h> 
#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>
DHT dht(2, DHT11); // выход DAT подключен к цыфровому входу 2
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);// RS,E,D4,D5,D6,D7
OneWire oneWire(A0);// вход для датчиков 18b20
DallasTemperature temp(&oneWire);
 
void setup() { 
  dht.begin();
  lcd.begin(16,2);// LCD 16X2
  temp.begin(); 
  temp.setResolution(10); // 10 бит 18b20
}
 
int x;
 
void loop() {
  // считываем температуру (t и temp), влажность (h) и индекс жары
  byte h = dht.readHumidity();// влажность
  byte t = dht.readTemperature();// температура
  temp.requestTemperatures();// опрос датчика 18b20
  float hic = dht.computeHeatIndex(t, h, false);// индекс жары в гр.Цельсия
  // выводим данные на LCD
 lcd.setCursor(0,0);
 lcd.print("Temp ");lcd.print(t);lcd.print(char(223));lcd.print("C  ");// термометр DHT11
 lcd.print(temp.getTempCByIndex(0),0);lcd.print(char(223));lcd.print("C ");// термометр 18b20
 
 lcd.setCursor(0,1);
 if(x>=3 && x<10){ // выводить индекс жары каждые 3 секунды из 10
 lcd.print("Hum    ");lcd.print(h);lcd.print(" %         ");} // влажность
 else{lcd.print("Index  ");lcd.print(hic,1);lcd.print(char(223));lcd.print("C  ");} // индекс жары
 
 if(x==10){x=0;}
 delay(1000);
 x++;
}

DHT.h

DallasTemperature.h

OneWire.h

Добавить комментарий

Случайные статьи

  • Микшер

    Микшер предназначен для одновременной записи на магнитофон (или на другое звукозаписывающее уст-во) нескольких сигналов. Микшер позволяет смешивать сигналы из трех источников которые поступают на три входа, при этом входы Х1 Х2 могут быть амплитудой от 50 до 10000мВ, а на вход Х3 можно подавать сигнал амплитудой 200мВ. Максимальное выходное напряжение …Подробнее...
  • Простые “особые” терморегуляторы

    Многим радиолюбителям известен так называемый «триггерный эффект” на пороге срабатывания термо3, фотореле, автоматического зарядного устройства и т.п. Устройство может сработать нормально десятки раз, но иногда бывает такой неприятный момент, когда исполнительное реле включится, сразу же выключится, опять включится и т.д. Такое явление может проявляться довольно длительное время – «подгорают” контакты …Подробнее...
  • Приемный тракт любительской СВ-радиостанции

    Радиоприемный тракт построен на распространенной ИМС К174ХА26, особенность схемы в том, что для обеспечения работы гетеродина на разных частотах используются переключаемые кварцевые резонаторы, что позволяет вести обзорный режим, в котором перестройка по диапазону 11 метров производится простым LC контуром. Система шумопонижения реализованная в микросхеме служит так же и вызывным устройством. …Подробнее...
  • Сторожевое устройство

    Для защиты дачного участка от непрошенных гостей, для ограждения опасных объектов можно использовать сторожевое устройство. Схема такого устройства (первый вариант) показана на рис. Объект, нуждающийся в охране, окружают по периметру медным обмоточным проводом диаметром 0,1… 0,3 мм. Этот охранный шлейф может быть прикреплен к забору или к вбитым в землю …Подробнее...
  • Цикл while (Arduino)

    Цикл while (Arduino)

    Цикл while будет проводить вычисления пока выражение помещенное в круглые скобки не станет логически ложным. Пример использования: void setup(){ Serial.begin(9600); } int a=50; void loop(){ while(a < 1000){ a++; Serial.println(a); } delay(100); } Первоначально переменная int a равна 50, в цикле while создается условие, пока переменная а меньше 1000 выполнять …Подробнее...