WEB Сервер на ESP-01 с DHT11, DHT22

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.

/*
Тестировалось на 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».

WEB Сервер на ESP-01 с DHT11, DHT22

Модуль прошит, можно приступать к сборке принципиальной схемы.

Подключение ESP-01 и DHT11
Собираем принципиальную схему, согласно рисунку ниже (для удобства рекомендую использовать готовые модули DHT11, с впаянным резистором и световой индикацией). Подключение датчик влажности осуществляется по однопроводной линии (не путать с интерфейсом DS12D20), который подключаемся к модулю ESP-01 (вывод GPIO2), так-же, для работы интерфейса необходим подтягивающий резистор на 4.7 кОм. В качестве источником питания, используем понижающий преобразователь LM2596, с выставленным выходным напряжением 3.3В.

WEB Сервер на ESP-01 с DHT11, DHT22

WEB Сервер на ESP-01 собран, открываем любой браузер (компьютер должен находиться в той же сети, что и ESP модуль), вводим IP-адрес (192.168.1.148) и нажимаем Enter.
WEB Сервер на ESP-01 с DHT11, DHT22

При желании, можно добавить реле, которое будет переключатся при определенном условии.

Ссылки
  Скачать библиотеку 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)
  Купить провода DuPont, 2,54 мм, 20 см
  Датчик температуры и влажности DHT11
  Модуль датчика температуры и влажности DHT11

Читайте также:

комментария 3

  1. Артём:

    всё сделал по инструкции, к файфай подключается, получает IP. но по данном IP не удаётся получить доступ ни с какого устройства нии с какого браузера. Всё время пишет о том что время ожидания соединения истекло… Помогите пжл не знаю куда копать уже.

  2. gvf:

    в последних посылках от китайцев приехали модули с минимальной прошивкой — ви-фи есть, и более ничего, на АТ команды не отзываются. После заливки нормальной прошивки все норм

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *