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

 


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, датчик температуры, датчик влажности




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

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

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