Обзор модуля DHT11 для ESP-01
Сегодня расскажу о небольшом модуле DHT11 (TB:IOTMCU) для ESP-01 и ESP-01S, с помощью которого можно собрать небольшую метеостанцию у себя дома.
Технические характеристики
► Контроллер: ESP-01 или ESP-01S
► Напряжение питания: 3.7 В – 12 В
► Датчики температуры и влажности: DHT11
► Диапазон измерения: 20 % … 90 %
► Точность измерения температуры: +/- 2 C
► Точность измерения влажности: +/- 5%
► Габариты: 20 мм х 25 мм
Общие сведения о модуле DHT11 для ESP-01
Данный модуль, позволяет организовать небольшую метеостанцию, в качестве передающего устройства используется контроллер ESP-01 (ESP8266), а показания считываются с датчика DHT11. Собран на зеленом стеклотекстолите с небольшими габаритами 20 x 25 мм, большую часть места занимает датчик DHT11, рядом расположены разъем для подключения ESP-01 (S) и разъем питания. Для стабильной работы ESP-01 необходимо напряжение 3.3 В, для этого на плате установлен стабилизатор напряжения LI336 (документацию не нашел), который стабилизирует выходное напряжение 3.3 В, при входном 3.7 В … 12 В. Так-же, установлена кнопка RESET с помощью которой можно перегрузить ESP-01 и световая индикация.
В качестве источника питания, можно использовать блок питания от телефона или литиевую батарею типа 18650 (при тесте, ток потребления составил 75 мА).
Принципиальную схему модуля можно посмотреть на рисунке ниже.
WEB Сервер на ESP-01
Необходимые детали:
► Беспроводной Wi-Fi модуль ESP8266-01 (ESP-01) x 1 шт.
► Модуль DHT11 для ESP-01 (S) x 1 шт.
► Адаптер для ESP-01 (USB, CH340G, ESP8266) x 1 шт.
► Резистор 4.7 кОм x 1 шт
Прошивка ESP-01:
Прошиваем модуль ESP-01 (ES8266), для этого берем USB адаптер на CH340G (с небольшой доработкой, которая включаем в себя перемычку между GND и GPIO0). Устанавливаем модуль ESP-01 в USB адаптер CH340G и подключаем его в USB разъем компьютера (в системе должен появится новый последовательный порт (COMx).
Программа написана в среде IDE Arduino, но для работы с чипами ESP8266, необходимо установить ESP плату, как это сделать можно посмотреть в этой статье. Так-же, необходимы две дополнительные библиотеки «DHT» и «Adafruit_Sensor»(скачиваем их можно в конце статьи). Теперь осталось загрузить скетч в программу IDE и загрузить в модуль ESP-01.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
/* Тестировалось на Arduino IDE 1.8.5 Дата тестирования 08.11.2017г. */ #include "ESP8266WiFi.h" // Подключаем библиотеку ESP8266WiFi #include "Adafruit_Sensor.h" // Adafruit_Sensor #include "DHT.h" // Подключаем библиотеку DHT const char* ssid = "Название Вашей сети"; // Название Вашей WiFi сети const char* password = "Пароль от Вашей сети"; // Пароль от Вашей WiFi сети #define DHTPIN 2 // Пин к которому подключен датчик #define DHTTYPE DHT11 // Используемый датчик DHT 11 // #define DHTTYPE DHT21 // #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE); // Инициализируем датчик WiFiServer server(80); // Указываем порт Web-сервера void setup() { Serial.begin(115200); // Скорость передачи 115200 delay(10); // Пауза 10 мкс dht.begin(); // Инициализация DHT Serial.println(""); // Печать пустой строки Serial.print("Connecting to "); // Печать "Подключение к:" Serial.println(ssid); // Печать "Название Вашей WiFi сети" WiFi.begin(ssid, password); // Подключение к WiFi Сети while (WiFi.status() != WL_CONNECTED) // Проверка подключения к WiFi сети { delay(500); // Пауза 500 мкс Serial.print("."); // Печать "." } Serial.println(""); // Печать пустой строки Serial.println("WiFi connected"); // Печать "Подключение к WiFi сети осуществлено" server.begin(); // Запуск Web сервера Serial.println("Web server running."); // Печать "Веб-сервер запущен" delay(10000); // Пауза 10 000 мкс Serial.println(WiFi.localIP()); // Печатаем полученный IP-адрес ESP } void loop() { WiFiClient client = server.available(); // Получаем данные, посылаемые клиентом if (client){ Serial.println("New client"); // Отправка "Новый клиент" boolean blank_line = true; // Создаем переменную, чтобы определить конец HTTP-запроса while (client.connected()){ // Пока есть соединение с клиентом if (client.available()){ // Если клиент активен char c = client.read(); // Считываем посылаемую информацию в переменную "с" if (c == '\n' && blank_line){ // Вывод HTML страницы float t = dht.readTemperature(); // Запрос на считывание температуры float h = dht.readHumidity(); client.println("HTTP/1.1 200 OK"); // Стандартный заголовок HTTP client.println("Content-Type: text/html"); client.println("Connection: close"); // Соединение будет закрыто после завершения ответа client.println("Refresh: 10"); // Автоматическое обновление каждые 10 сек client.println(); client.println("<!DOCTYPE HTML>"); // Веб-страница создается с использованием HTML client.println("<html>"); // Открытие тега HTML client.println("<head>"); client.print("<title>ESP8266 TEMP</title>"); // Название страницы client.println("</head>"); client.println("<body>"); client.println("<h1>ESP8266 - Temperature & Humidity</h1>"); client.println("<h3>Temperature = "); client.println(t); // Отображение температуры client.println("*C</h3>"); client.println("</head>"); client.println("<body>"); client.println("<h3>Humidity = "); client.println(h); // Отображение влажности client.println("</h3>"); client.println("</body>"); client.println("</html>"); // Закрытие тега HTML break; // Выход } if (c == '\n'){ // Если "с" равен символу новой строки blank_line = true; // Тогда начинаем новую строку } else if (c != '\r'){ // Если "с" не равен символу возврата курсора на начало строки blank_line = false; // Тогда получаем символ на текущей строке } } } client.stop(); // Закрытие соединения Serial.println("Client disconnected."); // Печать "Клиент отключен" } } |
Определение IP (ESP-01):
Теперь необходимо узнать IP модуля, для этого открываем «Мониторинг порта» с выставленной скоростью «115200», в моем случаи сеть выдала «192.168.22.114».
Модуль прошит, устанавливаем ESP-01 в модуль DHT11, подключаем питание и открываем любой браузер, вводим IP-адрес (192.168.22.114) и нажимаем Enter.
По сути это тоже самое что в этой статье, только все компактнее.
Ссылки
Скачать библиотеку DHT
Скачать библиотеку Adafruit_Sensor
Купить на Aliexpress
Беспроводной Wi-Fi модуль ESP8266-01 (ESP-01)
Модуль DHT11 для ESP-01
Адаптер USB для ESP-01 (Wi-Fi, CH340G)
Адаптер USB для ESP-01 (Wi-Fi, CH340G) — с переключателем
Купить в Самаре и области
Беспроводной Wi-Fi модуль ESP8266-01 (ESP-01)
Модуль DHT11 для ESP-01
Адаптер USB для ESP-01 (Wi-Fi, CH340G)
Temperature = nan *C
Humidity = nan
Питание подыми до 5 V и будет тебе счастье
При компиляции скетча ругается, что Adafruit_Sensor.h: No such file or directory, хотя я скачал библиотеки и при установке писало, что Библиотека Adafruit_Sensor уже существует. Что делаю не так?
Добрый день, попробуйте удалить и заново установить библиотеку.
Этот модуль изготовлен неграмотно. Он измеряет фактически температуру esp-01. Даже в холодильнике показывает температуру выше +20С.
Поддерживаю. В комнате градусов на 6 выше показывает. Подумываю, заменить его на bme280 вынесеным на шлейфе
А в скетч просится добавка- измерять и выводить на страничку ещё и напряжение на аккумуляторе, чтобы видеть скорое окончание его заряда.
У меня после захода на страничку с параметрами намертво виснет и лечится только перепрошивкой
Здравствуйте! Эта штука в сборе выдаёт в браузере картинку, как в примере, только вместо самих значений = none. Подал 5 вольт и цифры появились. Однако микросхема заметно греется и находится у самого датчика. Температура получается сильно завышена, а влажность занижена.
Здравствуйте! Мне пришлось датчик DHT11 выгнуть в противоположную сторону. При включении выдает правильную температуру и я думаю влажность, затем в течении несколько минут показания температуры повышаются и через несколько минут стабилизируются. Пришлось в программе ввести коррекцию на температуру и влажность.
Добавил знак температуры процент .
client.println(«»);
client.println(«ESP8266 — Temperature and Humidity «);
client.println(«Temperature = «); //Temperature
client.println(t-4.3); // Отображение температуры c коррекцией на прогрев
client.println(«° C «);
client.println(«»);
client.println(«»);
client.println(«Humidity = «); // Humidity
client.println(h+8); // Отображение влажности c коррекцией на прогрев
client.println(«%»);
client.println(«»);
client.println(«»);
Писал одно, а изобразилось совсем другое, знак градуса °
знак градуса & deg; слитно.
Добрый день, подскажите пожалуйста скетч успешно загрузился но в мониторе порта ничего не отображается в чем может быть проблема?
Здравствуйте, Евгений.
Сняли перемычку после прошивки и проверьте скорость соединения.
Добрый день, если напутать с полярностью питания может что=то сломаться ?
Здравствуйте, возможно сгорит ESP
В некоторых случаях на плате модуля DHT-11 нет подтяжки 3v на CH PD. Вместо этого сделана подтяжка на GPIO2. Ошибка на плате. И это запущено в серию. wifi модуль в отладочной плате работает, а в плате DHT-11 не работает.