WEB сервер на ESP-01 с DS18B20
В этой статье расскажу, как можно реализовать простой 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.
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 |
/* Тестировалось на 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 ставить