цифровая электроника
вычислительная техника
встраиваемые системы

 

ESP32 и датчик температуры и влажности DHT11

Автор: Mike(admin) от 26-03-2019, 08:55

Микроконтроллер ESP32 со встроенными функциями беспроводной связи сегодня широко используется во многих радиолюбительских проектах благодаря своей универсальности и низкой цене.


ESP32 и датчик температуры и влажности DHT11

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


Нам понадобятся две библиотеки. Сначала установите их (если у вас их нет):


  • https://github.com/adafruit/Adafruit_Sensor
  • https://github.com/adafruit/DHT-sensor-library

Датчик DHT22 более современный, чувствительный к измеряемым параметрам, но более дорогой. DHT11 – это широко используемый недорогой модуль. Если вы недавно приобрели какой-либо датчик температуры и влажности DHT11, вам будет казаться, что у него много контактов, поскольку он покрыт внушительным корпусом. Если вы откроете его (не нужно для работы, но для дополнительного образования), вы найдете внутри печатную плату с датчиком влажности резистивного типа, термистором с отрицательным температурным коэффициентом для измерения температуры и 8-разрядным микроконтроллером. Слева направо контакты датчика:


  • VCC – для соединения с 5 В микроконтроллера
  • Data – соединить с цифровым входом микроконтроллера
  • NC – не нужно ничего делать
  • GND – соединить с GND микроконтроллера

По сути, у нас есть один вывод данных для нашей реальной потребности, очевидно, что вывод питания пойдет к линии 3V (датчик сможет работать с 3В), а другой – к GND. Второй вывод, который является выходом данных, нуждается в некотором рабочем напряжении. Добавление резистора 220 Ом к 3 В ESP32 и добавление его к выводу данных обеспечит нормальную работу. Схема подключения ESP32 и DHT11 показана далее. На ней мы подключили вывод данных к контакту 15 платы ESP32.


ESP32 и датчик температуры и влажности DHT11. Схема подключения

Далее приведен код программы взаимодействия ESP32 и датчика DHT11 в среде Arduino IDE.



#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#define DHTPIN            15         //  Контакт, который подключен к датчику DHT
// введите модель используемого датчика, мы используем DHT11, если вы используете DHT21 или DHT22, измените его
#define DHTTYPE           DHT11     
DHT_Unified dht(DHTPIN, DHTTYPE);
uint32_t delayMS;
void setup() {
  Serial.begin(9600); 
  dht.begin();
  Serial.println("Modified Temperature, Humidity Serial Monitor Example");
sensor_t sensor;
  dht.temperature().getSensor(&sensor);
  Serial.println("------------------------------------");
  Serial.println("Temperature");
  Serial.print  ("Sensor:       "); Serial.println(sensor.name);
  Serial.print  ("Driver Ver:   "); Serial.println(sensor.version);
  Serial.print  ("Unique ID:    "); Serial.println(sensor.sensor_id);
  Serial.print  ("Max Value:    "); Serial.print(sensor.max_value); Serial.println(" *C");
  Serial.print  ("Min Value:    "); Serial.print(sensor.min_value); Serial.println(" *C");
  Serial.print  ("Resolution:   "); Serial.print(sensor.resolution); Serial.println(" *C");  
  Serial.println("------------------------------------");
  dht.humidity().getSensor(&sensor);
  Serial.println("------------------------------------");
  Serial.println("Humidity");
  Serial.print  ("Sensor:       "); Serial.println(sensor.name);
  Serial.print  ("Driver Ver:   "); Serial.println(sensor.version);
  Serial.print  ("Unique ID:    "); Serial.println(sensor.sensor_id);
  Serial.print  ("Max Value:    "); Serial.print(sensor.max_value); Serial.println("%");
  Serial.print  ("Min Value:    "); Serial.print(sensor.min_value); Serial.println("%");
  Serial.print  ("Resolution:   "); Serial.print(sensor.resolution); Serial.println("%");  
  Serial.println("------------------------------------");
  delayMS = sensor.min_delay / 1000;
}
void loop() {
delay(delayMS);
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("%");
  }
}



© digitrode.ru


Теги: ESP32, DHT11, датчик температуры, датчик влажности



   Благодарим Вас за интерес к информационному проекту digitrode.ru.
   Если Вы хотите, чтобы интересные и полезные материалы выходили чаще, и было меньше рекламы,
   Вы можее поддержать наш проект, пожертвовав любую сумму на его развитие.


Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий