В этой статье расскажу, как можно реализовать простой WEB — сервер на чипе ESP8266 (ESP-01) с отображением на нем температуры с датчика DS18B20.

WEB — Сервер на ESP-01 с DS18B20
Необходимые детали:
► Беспроводной Wi-Fi модуль ESP8266-01 (ESP01) x 1 шт.
► Датчик температуры DS18b20 x 1 шт.
► Провод DuPont 10x, 2,54 мм, 20 см, F-F (Female — Female) x 1 шт.
► Адаптер для ESP-01 (USB, CH340G, ESP8266) x 1 шт.
► Резистор 4.7 кОм x 1 шт
Прошивка ESP-01:
Прежде, чем собирать принципиально. схему, необходимо прошить модуль ESP01 (ES8266), для этого берем USB адаптер на CH340G (с небольшой доработкой, которая включаем в себя перемычку между GND и GPIO0). Устанавливаем модуль ESP01 в USB адаптер CH340G и подключаем его в USB разъем компьютера (в системе должен появится новый последовательный порт (COMx).
Программа написана в среде IDE Arduino, но для работы с чипами ESP8266, необходимо установить ESP плату, как это сделать можно посмотреть в этой статье. Так-же, необходимы две дополнительные библиотеки «OneWire» и «DallasTemperature» (скачиваем их можно в конце статьи). Теперь осталось загрузить скетч в программу IDE и загрузить в модуль ESP01.
/*
Тестировалось на Arduino IDE 1.8.0
Дата тестирования 26.07.2017г.
*/
#include <ESP8266WiFi.h> // Подключаем библиотеку ESP8266WiFi
#include <OneWire.h> // Подключаем библиотеку Wire
#include <DallasTemperature.h> // Подключаем библиотеку DallasTemperature
const char* ssid = "Название Вашей сети"; // Название Вашей WiFi сети
const char* password = "Пароль от Вашей сети"; // Пароль от Вашей WiFi сети
#define ONE_WIRE_BUS 2 // Указываем, к какому выводу подключена датчик
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS18B20(&oneWire);
WiFiServer server(80); // Указываем порт Web-сервера
void setup()
{
Serial.begin(115200); // Скорость передачи 115200
delay(10); // Пауза 10 мкс
DS18B20.begin(); // Инициализация DS18B20
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 страницы
DS18B20.requestTemperatures(); // Запрос на считывание температуры
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</h1>");
client.println("<h3>Temperature = ");
client.println(DS18B20.getTempCByIndex(0)); // Отображение температуры
client.println("*C</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."); // Печать "Клиент отключен"
}
}
Если прошивки не начинается, и программа выдает ошибки «warning: espcomm_sync failed», «error: espcomm_open failed» и «error: espcomm_upload_mem failed» значит модуль не в режиме прошивки, проверьте перемычку между GND и GPIO0.
При удачной прошивке модуля, появится диалогового окна с «[ 100% ]»
Определение IP (ESP-01):
Теперь необходимо узнать IP модуля, для этого открываем «Мониторинг порта» с выставленной скоростью «115200», в моем случаи сеть выдала «192.168.22.101».
Можно приступать к сборке принципиальной схемы.
Подключение ESP-01 и DS18B20
Собираем принципиальную схему, согласно рисунку ниже (для удобства рекомендую использовать готовые модули DS18B20, с впаянным резистором и световой индикацией). Подключение датчика осуществляется по интерфейсу 1-Wire (однопроводной линии), который подключаемся к модулю ESP-01 (вывод GPIO2), так-же, для работы интерфейса 1-Wire необходим подтягивающий резистор на 4.7 кОм. В качестве источника питания, используем понижающий преобразователь LM2596, с выставленным выходным напряжением 3.3В.
Чтобы посмотреть, что получилось, открываем любой браузер (компьютер должен находиться в той же сети, что и ESP модуль), вводим IP-адрес (192.168.22.101) и нажимаем Enter.
При желании, можно добавить реле, которое будет переключатся при определенном условии.
Ссылки
Скачать библиотеку DallasTemperature
Скачать библиотеку OneWire v.2.2
Купить на Aliexpress
Беспроводной Wi-Fi модуль ESP8266-01 (ESP-01)
Адаптер USB для ESP-01 (Wi-Fi, CH340G)
Адаптер USB для ESP-01 (Wi-Fi, CH340G) — с переключателем
Провода DuPont, 2,54 мм, 20 см
Датчик температуры DS18b20+
Купить в Самаре и области
Беспроводной Wi-Fi модуль ESP8266-01 (ESP-01)
Адаптер USB для ESP8266 (Wi-Fi, CH340G)
Провода DuPont, 2,54 мм, 20 см
Датчик температуры DS18b20





Здравствуйте! Подскажите, какую нужно команду ввести в «мониторе порта», чтобы определить IP адрес? Прошивка загрузилась без ошибок, включаю монитор порта «идут» точки …. Спасибо!
Здравствуйте, не какую, модуль не может подключится к Wi-Fi сети.
at командами в стандартной прошивке, либо в esplorer
Здравствуйте, зависания наблюдались или нет? Если отключится питание роутера, а потом восстановится, подключится ли он повторно к WI-Fi автоматом?
Отвечаю сам-себе. Он зависает через какое-то время (может конечно это не у всех так будет, но на моих тестах зависал) Если отключить питание роутера, а потом включить, соединение WIFI восстановится автоматически, это радует. ) Может кто знает как сделать к нему watchdog ?
как решил проблему? суточным реле?
Здравствуйте . Можете дополнить этот проект возможностью работы модуля ESP8266 как точка доступа , то есть использовать без роутера и с любого устройства с WiFi , подключиться и смотреть температуру на телефоне или планшете . В телефоне включив точку доступа и прописав всё и получив IP я вижу температуру но хотелось бы мобильности .
почему не написали какую версию библиотеки ESP8266WiFi ставить