Умный дом или wi-fi веб сервер на esp8266 вывод показаний датчиков
HTML-код
- Опубликовано: 6 фев 2025
- В этом видео мы доработаем скетч веб сервера на esp8266 из первого видео и научимся выводить на веб странице текущие показания температуры с датчика ds18b20 и температуру и влажность с датчика dht11.
Первое видео веб сервера на esp8266 - • Умный дом или wi-fi ве...
Как работать с датчиком температуры ds18b20 - • DS18B20 библиотека и п...
Как работать с датчиком температуры и влажности dht11 - • DHT11 / DHT22 библиоте...
Архив со скетчем и библиотеками из видео
Yandex Disk - yadi.sk/d/zqoi...
Google Drive - drive.google.c... - Наука
Отличный скетч и понятное толкование, сразу путем копирования добавил еще три далласовских датчика , ну есссно изменил цыферки в индексах и все замечательно прошло. Лайк и подписка
конечно же изменил в проге пины для светодиодов / у меня входы реле/ и датчиков , ибо плата по методу Франкенштейна у меня самосделана, главное, что ЕСП стоит и правильно ноги подвешаны
Хорошо объясняешь, понятно, спокойно. Подписался.
Очень круто, благодарю. Будет здорово если еще сможем вводить данные в виде числа.
Очень интересные видео, странно, что так мало людей их оценило. Это как раз то, что мне нужно было. Спасибо.
Спасибо. Благодаря работе автора, многое прояснилось. Интересует момент с одной кнопкой включения/выключения и надписью сбоку (для экономии места на странице), с возможностью параллельной работы от кнопки и обратной связью. А также кнопкой таймера, с заранее установленным временем включения (или отключения).
Весь день продолбался. Но датчик DHT на этом скетче отказывается работать. И пины менял и версии ардуины менял. Че толко не делал не отображает показания. С обычным скетчем датчик работает.
Просто, понятно и доступно.
Удачи в развитии канала, с меня подписка)
Спасибо! Архиполезно! С меня палец в небо, и подписка.
отличный проект, вы можете изменить свою программу с помощью кнопки на входе 8266 и добавить свет на веб-страницу
добавь теперь функцию термостата как на нагрев, так и на охлаждение)
и еще было бы круто на народный мониторинг выводить данные с датчиков)
Добрый вечер! А нельзя прописать в скетче автоопрос состояния датчиков и состояние выключателей, например каждые 2-3 секунды для вывода актуальной информации чтоб не жать постоянно refresh?
Супер просто спосибо автор
А как с этим скетчем включить ESP в режиме точки доступа??
Супер! То что надо!
Ждём серию про AJAX!!!
Я правильно понимаю,что есп должна быть подключена к роутеру по вай фай только в этом случае всё будет работать?
Отлично, можно ли смотреть не только текущие значения , но и вести историю в виде графика? Если можно то как это реализовать?
Исправил все супер
Добрый день! В место int для переменной что хранит номер пина, лучше использовать #define, так не занимается место в памяти МК.
а еще лучше const, так как C++
Arduino World. Возможно дублирование кнопок браузера аппаратными кнопками с возможным рефрешем.
Всем привет. Маленькое дополнение к уроку, прошу автора меня извенить но может кому пригодится. Судь дела в том что меня всегда напрягало вывод показания с датчика температуры DS18B20 с двумя значениями после запятой это к примеру 23,53 С а привычно видеть и говорить двадцать три и пять градусов цельсия типа 23,5 С.
И я задался вопросом как это исправить в скетче, в результате все получилось.
Нужно в скетче в строке web += ""+ String(sensors.getTempCByIndex(0))+"";
добавить еденицу через запятую ">"+ String(sensors.getTempCByIndex(0),1)+"< и показания на веб странице изменится с 23,53 на 23,5. Всем удачи.
GPIO 15 подтянут через сопротивление к земле (10-12к), по другому не работает. А ds18b20 резистором с меньшим сопротивлением (4,7к) подтянут к VCC. Я снял esp8266 12e с платы с контроллером и начались качели... В итоге, разобравшись в чем проблема, перевесил датчик температуры на GPIO 13. А вообще видео годное! Жаль ничего нового нет, например с автообновлением.
Помогло. Дякую.
Отличный урок. Очень просто и доступно!
Хотел спросить (или предложить): а что, если вместо кнопки "Refresh" установить автоматическое обновление (опрос), по таймауту, например ежеминутно (это можно сделать с помощью JS). Ну или продублировать - таймаут + кнопка.
Здравствуйте, спасибо большое за вашу оценку моих стараний. Отсутсвие автообноления это главное неудобство на данный момент. Я уже написал скетч и протестировал его ( автообновление данных раз в секунду), осталось только снять видео.
@@ArduinoWorld Отличная новость! Уже подписался на Ваш канал, жду с нетерпением новое видео.
Подскажите пожалуйста, как отобразить на нашем веб сервере уровень напряжения vvc для контроля уровня заряда акума.
Огромное тебе спасибо!!!
Здравствуйте !!! Приведите пожалуйста пример как сделать генератор импульсов на есп с возможностью регулировки частоты с веб интерфейса
спасибо за разнесение, есть 2 вопроса 1 как добавить страницу update 2 как сделать чтобы станица сама обновлялась раз в минуту например
На счет 2 вопроса... попробуй в хтмл код страницы добавить код джс скрипта, который бы в цикле с некоторой задержкой просто бы переходил на эту же страницу. Либо в скетче, сделай бесконечный цикл и в него вставь блок, где сервер отправляет данные, ну и задержку, какую хочешь, например секунда). Либо сделай в скетче цикл, а в нем проверку датчиков. И пропиши условие: если новое значение датчика не равно предыдущему, то обновляй страницу.
Причина скорее всего в питании. "Каков стол, таков и стул"
Я так понял это устройство либо нужно иметь в каждом выключателе и заходить на каждый под разными айпишниками пожскажи если поднять именно этот сервер но какие нибудь дешевле иметь в каждом выключателе плюс в них добавить по сенсору и они на этот сервер будут передавать свои данные а все включаться через данный единый айпи .как реализовать думаю так интереснее
Не верьте этому чуваку, он настоящий иностранный агент, работает на ЦРУ )))
отличное видео, но было бы супер если бы конечный скетч был бы тоже прекреплен
Спасибо за ваш отзыв. Скетч и необходимые библиотеки есть в описании ))
Arduino World
я пробовал данный скетч с dht22 у меня доже не работает, хотя датчик рабочий
Arduino: 1.8.4 (Windows 7), Плата:"NodeMCU 1.0 (ESP-12E Module), 160 MHz, 115200, 4M (3M SPIFFS)"
""exit status 1
Ошибка компиляции для платы NodeMCU 1.0 (ESP-12E )""
Сначала сделай работу над своими гребаными ошибками, а потом снимай видео !!!! Сплошная лажа !!!
@@alexholce7736 сказали же ,что не на всех версиях Arduino Ide работает. Просто попробуйте установить версию 1.6.4
gpio15 ИСПОЛЬЗУЕТСЯ ПЛАТОЙ ПРИ ЗАГРУЗКЕ В FLASH
Здравствуйте приведите пожалуйста пример вывода тестового сообщения с esp 8266 на китайский лед модуль 16*32 с веб интерфейсом
Здравствуйте, не мог ли бы в эту програмульку добавить датчик давления ?
А вот жа красиво и в тоже время просто у вас получается. :) И почему я всегда изобретаю велосипед? :) Не мешало бы сюда добавить AJAX для автоматического обновления статусов и параметров с датчиков на странице. Вот только нам еще нужно разобраться что это такое и как его сюда запилить. :)
Дмитрий Екименко что такое AJAX .. не что иное как Ява скрипт который выполняется в браузере. и иногда запрашивает данные из сервера и обновляет DOM..ничего сложного.
В заголовку .htm сторiнки дописуєте:
або в тiлi функцiю:
setInterval(function(){
window.location.reload(1);
}, 30000);
для оновлення сторiнки кожних 30 сек i все "пиляння". Браузер решту зробить сам. ;)
+ спс огромное. кусок работы.
теперь как решить вопрос бы с mqtt
Уважаемый автор очень хотелось бы увидеть как сделать чтоб esp при появлении в неизвестной ей сети запускало свою точку со страницей для ввода параметров домашней сети, затем перезагружалось и подключалось к домашнему роутеру имея данные которые мы ввели. Весь интернет перерыл нигде не найду данную реализацию
void WIFIinit() {
// Попытка подключения к точке доступа
WiFi.mode(WIFI_STA);
byte tries = 11;
WiFi.begin(_ssid.c_str(), _password.c_str());
while (--tries && WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(1000);
}
if (WiFi.status() != WL_CONNECTED)
{
// Если не удалось подключиться запускаем в режиме AP
Serial.println("");
Serial.println("WiFi up AP");
StartAPMode();
}
else {
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
}
bool StartAPMode()
{
WiFi.disconnect();
WiFi.mode(WIFI_AP);
WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
WiFi.softAP(_ssidAP.c_str(), _passwordAP.c_str());
return true;
Все вроде "огонь", подключил DHT22. Но при отрицательных температурах показывает 50 и выше. Замена библиотек не помогла. Подскажите пожалуйста где собака зарыта.
Попробуйте проверить отдельно работу датчика проьным скетчем из примера библиотеки для dht21 и посмотрите будет ли в этом случае такая же проблема.
Классные канал, продолжай продвигать тему умного дома! Подскажите можно ли управлять модулем DFPlayer Mini MP3 через Node MCU ESP8266.
+Иван Горев , Спасибо за ваше мнение о канале. Df player должен работать без проблем, так как управление идет через uart. Попробуйте использовать стандартный пример из библиотеки, только не забывайте про правильное указание пинов модуля в скетче.
Я без проблем подключал эти модули к Uno, а к Node MCU ESP8266 не могу подключить. Вот немного переделанный ваш скейтч для этого модуля cloud.mail.ru/public/K5dQ/vbPauwi9C .Подскажите что не так.
Иван Горев скажу даже большее, на esp8266 можно интернет радио по wi-fi сделать. Но вот только видео про это радио снимать не нужно т.к. уже хватает их тут в ютуб. :)
Иван Горев да уж... вот пособие как нельзя писать программы ) я конечно не знаю какой буфер выделен в объекте server под отправку данных..но держать столько данных в маленькой RAM ..это жесть. будет настроение напишу скетч с автообновлением данных ... просто уже страшно смотреть на горе программистов )) без обид....
Максим Белоусов я обычно для строк String использую макрос F();
Доброе время суток все приятно но хотелосьбы видить в реальном времени и вляжность и температуру.
Добрый день. Код готов. Осталось только протестировать и снять видео.
Есть ли видео как получать или передавать на этот сервер показания датчиков с др есп в сети.?
Есть идея как это делать.. Сейчас закончил писать скетч для отображения параметров в режиме реального времени без перезагрузки страницы. В теории можно создавать на каждом esp сервер, опрашивать их с другого модуля и выводить информацию.
Понравилось создание сервера. Переделал малось под себя. Хочу поставить ползунок и управлять яркостью, но не знаю как снять показания. Вот мой скеч, подскажи что поменять?
#include
#include
#include
#include
MDNSResponder mdns;
// Wi-Fi впишите сюда данные, соответствующие вашей сети
const char* ssid = "RTK70";
const char* password = "**********";
byte arduino_mac[] = { 0xDE, 0xED, 0xBA, 0xFE, 0xFE, 0xED }; //не знаю для чего
IPAddress ip(192,168,1,35);
IPAddress gateway(192,168,1,1);
IPAddress subnet(255,255,255,0);
ESP8266WebServer server(80);
int D0_pin = 16;
int D2_pin = 2;
int D1_pin = 5;
void setup(void){
pinMode(D0_pin, OUTPUT);
digitalWrite(D0_pin, LOW);
pinMode(D2_pin, OUTPUT);
digitalWrite(D2_pin, LOW);
pinMode(D1_pin, OUTPUT);
digitalWrite(D1_pin, LOW);
delay(100);
//наверно тоже лишнее
Serial.begin(115200);
WiFi.begin(ssid, password);
WiFi.config(ip, gateway, subnet);
Serial.println("");
while (WiFi.status() != WL_CONNECTED) { // Ждем соединения
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to "); // Подключились к
Serial.println(ssid);
Serial.print("IP address: "); // IP-адрес:
Serial.println(WiFi.localIP());
if (mdns.begin("esp8266", WiFi.localIP())) {
Serial.println("MDNS responder started"); // Запущен MDNSresponder
}
server.on("/", [](){
server.send(200, "text/html", webPage());
Serial.println(rangeValue);
});
//+++++++++++++++++++++++ START LED-1 ++++++++++++++++++++
server.on("/socket1On", [](){
digitalWrite(D0_pin, HIGH);
server.send(200, "text/html", webPage());
delay(100);
});
server.on("/socket1Off", [](){
digitalWrite(D0_pin, LOW);
server.send(200, "text/html", webPage());
delay(100);
});
//+++++++++++++++++++++++ END LED-1 ++++++++++++++++++++
//+++++++++++++++++++++++ START LED-2 ++++++++++++++++++++
server.on("/socket2On", [](){
digitalWrite(D2_pin, HIGH);
server.send(200, "text/html", webPage());
delay(100);
});
server.on("/socket2Off", [](){
digitalWrite(D2_pin, LOW);
server.send(200, "text/html", webPage());
delay(100);
});
// +++++++++++++++++++++++ END LED-2 ++++++++++++++++++++
server.begin();
Serial.println("HTTP server started"); // Запущен HTTP сервер
}
void loop(void){
server.handleClient();
}
String webPage()
{
String web;
web += "Пультbutton{padding: 10px 20px;}";
web += "div{text-align: center;margin: 5px 5px 0px;}";
web += "Web Server";
web += "---1 Канал---";
if (digitalRead(D0_pin) == 1)
{
web += " ВКЛ ";
}
else
{
web += "ВЫКЛ";
}
web += "---2 Канал--";
if (digitalRead(D2_pin) == 1)
{
web += " ВКЛ ";
}
else
{
web += "ВЫКЛ";
}
web += "---Регулировка---";
web += "50";
web += "Перезагрузить";
return(web);
}
Здравствуйте. Вот опять ESP8266 а где к примеру ESP32. Подскажите что нужно изменить в скетче что бы применить ESP32. Извеняюсь но я только осваеваю ардуино но мой возраст влияет на внимание и память так что продвигаюсь в изучении давольно медленно. Если не затруднит вас моя просьба и вы поправите скетч под ESP32 буду вам очень благодарен ну а пока вам лайк и подписка, всего доброго.
а через мобильный интернет можно будет зайти на этот сервер?
Уважаемы я хотел использовать ваш скеч в своём ролике! Вы не возражаете?
Добрый день. Я не возражаю - пользуйтесь 😁
/*
RST D1 - 5 LED3
RST D2 - 4
10-SD3 D3 - 0
A0-A0 D0 - 16 LED1
9-SD2 D4 - 2 LED2
MOSI-SD1 3.3V
CS-CMD GND
MISO-SD0 D5 - 14
SCLK-CLK D6 - 12 DallasTemperature sensors
GND D7 - 13 DHT11
3.3V D8 - 15
EN RX - 3
RST TX - 1
GND GND
VIN ___ 3.3V
USB
*/
great project can you modify your program using a push button on an input of the 8266 and add a light on the web page
Подскажите, после заливки скетча на esp в ком-порт выводится
"ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v09f0c112
~ld
глгггглглгглгглгггггггггглллггггггглгллгггггггллллгггггг"
и ничего больше не происходит. Причем последняя строчка русских символов идет бесконечно
+Александр Нифонтов Вы наверно неправильно выбрали скорость порта. должно быть 112500
Arduino World нет, 115200. На других скоростях вопросительные знаки
Nice
Подключи DS18B20 к любому другому GPIO и будет без проблем прошиваться без отключения датчика.
Спасибо. Уже понял этот момент..
Так всё таки, как сделать термостат?
пин поменяй и будет тебе счастье :) а вообще, сам датчик "Г" ещё то...
Как сделать авто "refresh"?
Всё клёво, доступно и понятно, что к чему и что для чего, спасибо за видосик! Есть только очень маленькая, но очень нужная просьба... Объясните пожалуйста, как этот сервак разместить, чтобы он был доступен в локальной сети, а в идеале, чтобы и точка доступа была и доступ из локальной сети. Заранее благодарю. Самому просто "скила" и понимания как это работает не хватает(( Надеюсь не откажите в просьбе.
Здравствуйте, подскажите как поменять код чтобы допустим лед1 была одна кнопка нажали он включился ещё раз нажали выключился
Это сделать не сложно, тут вопрос к Javascript на странице чем к коду ардуино.
DHT-11 это зло! Не нужно учить людей плохому. Он показывает всё что угодно, но только не температуру. DHT-22 ещё можно как то применять.
ничего подобного
DHT11 норм датчик, он рядом возле дс18б20 и разница по температуре мизерная!
narodmon.ru/174
Саша Черкащенко Пользуйтесь на здоровье, только кроме температуры он ещё влажность меряет (как попало и быстро дохнет) оптимальный вариант AM2320 (2301) или BME-280 !!!
Иван привет перезолей доработанный скетч
Привет. У меня всё работало до тех пор пока я не выключил и включил модуль. После чего нет связи. Причину я нашёл отсоединив пин датчика перед включением модуля. После включения соединяю и всё работает. Можно придумать чтобы без этих махинаций всё работало?
Добрый день. У меня была такая же ситуация. Смените пин к которому подключаете датчик температуры на другой.
Попробую, спасобо
Доброго времени суток! подскажите в чем дело выдает ошибку Ошибка компиляции для платы NodeMCU 1.0 (ESP-12E )""
Не компилируется именно этот скетч или все? Посмотрите видео на канале по прошивке NodeMCU и проверьте всё ли вы правильно делаете.
да к сожалению именно этот скетч, другой без температурных датчиков идет хорошо.
Пожалуйста, подключите датчик температуры ds18b20 на другой пин и исправьте этот пин в скетче, или просто отключите датчик температуры перед прошивкой, я выбрал неудачный пин в видео. Этот пин используется при прошивки модуля.
Спасибо большое за ответ! но дело до прошивки не доходит, выдает вот это exit status 1
Ошибка компиляции для платы NodeMCU 1.0 (ESP-12E Module). не проходит скетч проверку((( как будто не для этого модуля((((
если можно было бы защитить свой веб сервис было бы классно я про пароль перед доступам ....
очень плохо пока, что вывод показаний по рефреш.. смотри в сторону ajax..
Можно просто сделать костыль, чтобы функция вывода страницы выполнялась в цикле, либо в сам код страницы где нибудь прописать блок джс скрипта, который бы обновлял страницу сам)
Уважаемый автор у меня не загркзится с можеш помоч
Здравствуйте. Поделитесь, пожалуйста библиотеками
#include
#include
#include
#include
Эти библиотеки стандартные. Идут из коробки. Но у меня модуль не на всех версиях ардуины хочет прошиваться.
можешь архив загрузить на другой сервис?
+Саша Черкащенко , на облако mail.ru подойдет?
Arduino World нет, я с Украины у нас перекрыли доступ ко всему этом
лучше гугла или через вк
все, отбой все получилось уже
Добавил в описание ссылки на скачивания с Google Drive
Кто-нибудь сумел сделать автообновление страницы без кнопки Refresh?
Ты запитываешь ds18b20 через 3v по этому не прошивается (хз почему), а если ты ему подашь питание через VV который выдает 5v (по гайдам на этот датчик и нужно подавать 5v), то все будет ок
Те ж саме.
Без датчики загружается
когда слелдущая версия нпручных часикоф
Когда контроллер уже прошит на данный скетч и собрана схема полностью, то при подаче питания на esp8266 она не подключается к wifi как будто зависает и т.п.
Если я отсоединяю от контроллера провод с которого идёт сигнал температуры от DS18B20, то при подаче питания на esp8266 контроллер нормально включается, после чего если подключить провод на место, то показания температуры в веб сервере видны.
Странно что когда полностью схема собрана не запускается всё как положено.
Пробовал на разных платах с esp8266, везде одинаково повторяется данная проблема
Добрый вечер. Спасибо за отзыв. Попробуйте переназначить ds18b20 на другой пин и подключите датчик на него.. Это должно помочь.
@@ArduinoWorld да спасибо, на некоторых других пинах всё работает. Иногда даже причиной была кнопка reset, а именно после её нажатия контроллер включался как бы "глючно" что ли, т.е. не запускался wifi сервер или на запуск wi-fi уходило больше времени, чем просто дёрнуть провод питания на контроллере тем самым перезагрузила его