WEB Сервер на ESP-01 с DHT11, DHT22
В этом примере создадим простой Web сервер на ESP-01 (ESP8266) с отображением температуры и влажности, данные считываем с датчика DHT11, можно воспользоватся и DHT22, код не изменится.
WEB Сервер на ESP-01 с DHT11, DHT12
Необходимые детали:
► Беспроводной Wi-Fi модуль ESP8266-01 (ESP-01) x 1 шт.
► Датчик температуры и влажности DHT11 x 1 шт.
► Комплект проводов DuPont 2.54 мм, 20 см x 1 шт.
► Адаптер для ESP-01 (USB, CH340G, ESP8266) x 1 шт.
► Резистор 4.7 кОм x 1 шт
Прошивка ESP-01:
Прежде, чем собирать принципиально. схему, необходимо прошить модуль ESP-01 (ES8266), для этого берем USB адаптер на CH340G. Устанавливаем модуль 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 Дата тестирования 25.10.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.1.148».
Модуль прошит, можно приступать к сборке принципиальной схемы.
Подключение ESP-01 и DHT11
Собираем принципиальную схему, согласно рисунку ниже (для удобства рекомендую использовать готовые модули DHT11, с впаянным резистором и световой индикацией). Подключение датчик влажности осуществляется по однопроводной линии (не путать с интерфейсом DS12D20), который подключаемся к модулю ESP-01 (вывод GPIO2), так-же, для работы интерфейса необходим подтягивающий резистор на 4.7 кОм. В качестве источником питания, используем понижающий преобразователь LM2596, с выставленным выходным напряжением 3.3В.
WEB Сервер на ESP-01 собран, открываем любой браузер (компьютер должен находиться в той же сети, что и ESP модуль), вводим IP-адрес (192.168.1.148) и нажимаем Enter.
При желании, можно добавить реле, которое будет переключатся при определенном условии.
Ссылки
Скачать библиотеку DHT
Скачать библиотеку Adafruit_Sensor
Купить на Aliexpress
Беспроводной Wi-Fi модуль ESP8266-01 (ESP-01)
Адаптер USB для ESP-01 (Wi-Fi, CH340G)
Адаптер USB для ESP-01 (Wi-Fi, CH340G) — с переключателем
Датчик температуры и влажности DHT11
Модуль DHT11 для ESP-01
Комплект проводов DuPont, 2,54 мм, 20 см
Купить в Самаре и области
Беспроводной Wi-Fi модуль ESP8266-01 (ESP-01)
Адаптер USB для ESP-01 (Wi-Fi, CH340G)
Датчик температуры и влажности DHT11
Модуль датчика температуры и влажности DHT11
всё сделал по инструкции, к файфай подключается, получает IP. но по данном IP не удаётся получить доступ ни с какого устройства нии с какого браузера. Всё время пишет о том что время ожидания соединения истекло… Помогите пжл не знаю куда копать уже.
Здравствуйте, напишите мне на почту info@robotchip.ru попробую помочь Вам.
вам удалось решить эту проблему?
в последних посылках от китайцев приехали модули с минимальной прошивкой — ви-фи есть, и более ничего, на АТ команды не отзываются. После заливки нормальной прошивки все норм
Какую из тысяч вы называете нормальной прошивкой?
Нормальная прошивка — это скетч который сам написал.
Добрый день. В строке 55: if (c == ‘\n’ && blank_line) — не объявленная переменная amp. Что это такое?
Добрый день, поправил. Лучше скачайте код в zip архиве
Уважаемый Сергей, можно ли такому модулю (ESP-01s) назначить постоянный айпишник при подключении к локальной сети? Если да, то как дополнится ваш скетч?
Нашёл уже код установки постоянного айпи адреса модуля ESP-01S при подключении к локальной сети.
будет правильней назначать фиксированный IP через ваш роутер
Роутер устанавливает айпи для ограниченного количества устройств. (у меня всего шесть). Остальные железки должны требовать сами нужный айпи. Это действо имеет недостатки (например такое устройство плохо коннектится с серверами точного времени). Однако в арсенале нужно иметь все доступное.
Здравствуйте! А зачем последовательный порт в коде нужен, если я хочу только в вэб-сервер данные выводить?
Здравствуйте, последовательная связь необходима только для определения IP, с кода можно ее удалить.
Здравствуйте, а можно ли добавить несколько датчиков, чтоб мониторить температуру по всему дому, допустим с 10 шт.
Как это программно сделать?
Не могу понять что я делаю не так, сеть не появляется, монитор порта одни точки.
ИНТЕРЕСНО У КОГОНИБУТЬ ЗАРАБОТАЛА ПРОШИВКА ?????????