
Интернет-магазин «Неглупый Дом»
ESP8266 и KY-015 вместе дают полноценную веб-панель погоды в комнате — оба значения обновляются на странице при каждой перезагрузке без установки отдельного приложения.
ESP8266 — это не просто контроллер вроде обычной Arduino, а полноценный модуль с Wi-Fi на борту, способный работать как собственный веб-сервер. Он подключается к домашней сети так же, как телефон или ноутбук, получает IP-адрес, и дальше любое устройство в этой же сети может открыть страницу по этому адресу в обычном браузере — без установки приложений и без привязки к облаку производителя.
KY-015 — это готовый модуль на основе датчика DHT11, который за один опрос отдаёт сразу два значения: температуру и влажность воздуха. Он подключается всего одним сигнальным проводом (упрощённый однопроводной протокол, похожий по духу на DS18B20, но свой у DHT-серии), поэтому вся логика его чтения уже реализована в стандартной библиотеке DHT.h — самим кодом протокола заниматься не нужно.
Так как реализации данного модуля бывают разные, если у вас нет тех контактов, которые указаны — сориентируйтесь по названиям на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая модель,
// а не специализированный кодер, и могу что-то упустить. Основу и идею я накидал,
// но проверьте под свою схему. Если получите ошибку в Arduino IDE — пришлите её.
#include <ESP8266WiFi.h>
#include <DHT.h>
#define DHTPIN 2 // пин данных KY-015 (D4 = GPIO2)
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
const char* ssid = "your_wifi_name"; // имя вашей Wi-Fi сети
const char* password = "your_wifi_password"; // пароль от неё
WiFiServer server(80); // веб-сервер на стандартном 80 порту
void setup() {
Serial.begin(9600);
dht.begin();
WiFi.begin(ssid, password);
Serial.print(F("Подключение к Wi-Fi"));
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(F("."));
}
Serial.println();
Serial.print(F("Подключено! IP-адрес: "));
Serial.println(WiFi.localIP()); // этот адрес нужно ввести в браузере
server.begin();
}
void loop() {
WiFiClient client = server.available();
if (!client) return; // пока никто не обращается — просто ждём дальше
client.readStringUntil('\r');
client.flush();
float t = dht.readTemperature();
float h = dht.readHumidity();
// isnan — проверка, что датчик успешно прочитался, а не вернул "не число"
if (isnan(t) || isnan(h)) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html; charset=utf-8");
client.println();
client.println("<html><body><h1>Ошибка чтения датчика</h1></body></html>");
return;
}
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html; charset=utf-8");
client.println();
client.print("<html><body><h1>Температура: ");
client.print(t);
client.print(" °C</h1><h1>Влажность: ");
client.print(h);
client.println("%</h1></body></html>");
}
KY-015 совместим с библиотекой DHT (тип DHT11) — та же библиотека уже использовалась в проектах теплицы, здесь она просто отдаёт оба значения сразу на веб-страницу.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 325 ₽ 293 ₽ (экономия 32 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.