
Привет, Хабр!
Пожалуй, одним из первых устройств, которые подключаются к умному дому (конечно, после модуля управления освещением), является домашняя метеостанция. Вот и мне на новом месте и в новом умном доме потребовалось реализовать данное устройство. Но есть одна проблема: находясь вдалеке от своей домашней лаборатории, я имею минимальный набор инструментов и лишён таких благ цивилизации, как лазерный мини-ЧПУ для изготовления плат и 3D-принтер. Поэтому для реализации проекта будем работать по старинке, в режиме жесткого DIY-хардкора (или «Очумелых ручек»).
❯ Проектируем проект
Тема DIY-метеостанций достаточно заезженная, особенно после появления на свет микроконтроллера ESP8266. Ведь в 97% случаев на нем была реализована метеостанция. Вот и мы не будем отходить от традиций и соберем простую систему на базе ESP8266 и датчика BME280, которая будет измерять три метеопараметра: температуру, относительную влажность воздуха и атмосферное давление. Ниже представлены технические характеристики датчика:
Технические характеристики BME280
Интерфейс: SPI, I2C;
Напряжение питания: 1.8 - 3.3 V;
Диапазон измерения атмосферного давления: 300-1100 hPa;
Диапазон измерения температуры: -40 - +85 °C;
Диапазон измерения влажности: 0 - 100 %;
Энергопотребление: режим измерения - 2.74 µА, в спящем режим - 0.1 µА;
Точность измерения: давление - 0.01 hPa (< 10 cm), температура - 0.01° C, влажность – 3%.
И так как вы, скорее всего, читаете эту статью в новогодние праздники, для простого восприятия я решил представить принципиальную схему в виде визуализации.

Как вы, наверное, уже догадались, метеостанция будет запитана от двух элементов питания типа АА с общим напряжением 3V. Чтобы она работала длительное время от этих источников питания, нам необходимо будет использовать режим DeepSleep. В качестве контроллера берем самый дешевый вариант — модуль ESP-01. Также в схему добавлена тактовая кнопка для активации режима конфигурации устройства.
Что касается режима DeepSleep: для его работы нам необходим внутренний RTC-таймер модуля ESP8266. Его выход задействован на 8-м пине (GPIO16) микроконтроллера. Ниже приведена картинка назначением выводом микросхемы микроконтроллера.

В используемом модуле ESP-01 не предусмотрен вывод GPIO16 на печатной плате, поэтому нам нужно будет аккуратно припаять проводок к нужной ножке контроллера.
❯ Сборка аппаратной части метеостанции
▨ Корпус устройства
Здесь мы идём по пути жесткого DIY: в ход используется всё, что завалялось в ящике. Нашел старый бокс от гирлянды — он и станет корпусом для нашей метеостанции.

Удачно совпало, что в этот корпус легко помещаются ESP-01 и кнопка активации режима конфигурации. А чтобы не ломать голову над размещением датчика на улице, я решил использовать шлейф длиной 60 см — в будущем мы просто просунем его в оконный проём.

А для защиты датчика от атмосферных воздействий мне не пришло в голову ничего лучше, чем использовать маленькую баночку от витамина PP. Чтобы шлейф датчика вмещался, я выполнил небольшой продольный надрез ёмкости.

▨ Сборка электроники
Как говорилось ранее, для полноценной работы в режиме DeepSleep нам необходимо задействовать пин GPIO16 (8), припаяв небольшой медный провод. У меня реализовано так:

Далее нам нужно припаять шлейф к датчику и выводы для дальнейшей их припайки к контроллеру:

Как известно, термоклей повышает надежность DIY-поделок на 90%, поэтому не пренебрегаем этим и используем его для дополнительной фиксации и изоляции мест соединения:

Для дополнительной защиты датчика от атмосферных воздействий обязательно изолируем его с помощью термоклея:

Здесь главное не переусердствовать и не залить измерительное отверстие на сенсоре.
Теперь займемся основной пайкой. Припаиваем провода согласно схеме:

Также не забываем зафиксировать самый хрупкий элемент нашей метеостанции — тонкий проводок RTC-таймера:

И еще пара элементов для надежности устройства — в DIY термоклея много не бывает:

А еще я забыл рассказать о двух компонентах схемы: резисторе и диоде. Резистор номиналом 8,2 кОм является подтягивающим к «земле» на пине кнопки конфигурации. Диод (марки 1N4007) включен в цепь питания датчика: он необходим для создания небольшого падения напряжения, чтобы снизить влияние на GPIO и исключить «зависание» контроллера при запуске». И для снижения энергопотребления платы, нам необходимо отпаять светодиод индикации питания (красный), который светится постоянно.
После всех паяльных работ, нам необходимо проверить работоспособность нашей конструкции, а затем установить все компоненты в наш корпус:

Далее всё надежно фиксируем термоклеем, и в итоге мы имеем следующий результат сборки:

Всё! Со сборкой устройства покончили!
❯ Программное обеспечение и интеграция в Home Assistant
Микро-ПО устройства, как и всегда, реализовано на базе собственной прошивки для IoT-устройств. Так как метеостанция работает от автономного источника питания (в нашем случае — от АА-батареек), нам необходимо реализовать мониторинг уровня напряжения для их своевременной замены. Как правило, для этих целей используется аналоговый пин микроконтроллера, но в нашем случае он не выведен на плату, а делать дополнительную подпайку не очень хочется. К счастью, мы не используем преобразователей в цепи питания, поэтому мониторинг сможем реализовать другим методом — за счет функции измерения напряжения на самом кристалле ESP8266.
Это можно сделать всего двумя строчками кода:
ADC_MODE(ADC_VCC); // Активируем функцию мониторинга напряжения на кристаллле
ESP.getVcc(); // Метод для получения уровня напряжения(в mV)
А так это реализовано в функции формирования JSON для отправки данных с метеостанции:
String JSON_DATA() {
sensor_get();
StaticJsonDocument<256> doc;
doc["temp"] = String(temp);
doc["hum"] = String(hum);
doc["pres"] = String(pres * 0.75006); // В мм.рт.ст
doc["bat"] = String(ESP.getVcc() * 0.001); // Переводим в V
doc["sllep_t"] = String(settings.off_time);
String outjson;
serializeJson(doc, outjson);
return outjson;
}
▨ Настройка метеостанции
Я старался сделать эту процедуру максимально юзер-френдли. Для активации режима конфигурации необходимо перевести метеостанцию в особый режим, нажав и удерживая в течение пяти секунд единственную кнопку и одновременно вставив батарейки для питания устройства. Затем метеостанция перейдет в режим конфигурации. И если ранее Wi-Fi-подключение не было настроено, то будет создана точка доступа (Wi-Fi-спот) с именем «CYBEREX-METEO», далее все как обычно: подключение к точке, автоматический перевод пользователя на страницу настройки метеостанции с помощью технологии CaptivePortal и т.д.. Ниже приведу несколько скриншотов для понимания:

В устройстве по умолчанию установлен пароль admin, который при необходимости можно изменить в настройках. Ниже представлен скриншот главной страницы устройства:

Ползунок «Таймер сна» отвечает за установку периода пробуждения метеостанции из режима DeepSleep. Рекомендуемое значение — от 5 до 60 минут. Соответственно, чем больше сон, тем меньше разряд батареек. Ниже показан скриншот для настройки передачи данных по протоколу MQTT:

После всех настроек, необходимо перезагрузить устройство с главной страницы, чтобы оно перешло в режим DeepSleep.
▨ Интеграция в Home Assistant
После того, как в метеостанции будет настроена передача данных по MQTT, в Home Assistant должно автоматически обнаружиться новое устройство:

И перейдя в панель управления устройством, мы увидим следующее:

❯ Итоги & выводы
В итоге у нас получилась прекрасная «эконом-метеостанция» с минимальными финансовыми затратами и интересным времяпрепровождением. Что касается результатов замеров тока потребления, то они представлены ниже.
Ток потребления в активном режиме (передача данных):

Ток потребления в режиме сна:

Метеостанция в установленном виде:

Установка датчика на улице:

На этом можно и завершать статью. Спасибо за внимание и интересных проектов!
Ссылки к статье:
Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале ↩
Комментарии (38)

DimaZol
02.01.2026 14:10Очень интересная статья ! А нельзя ли данное устройство интегрировать в умный дом TUYA ?

CyberexTech Автор
02.01.2026 14:10Спасибо! К сожалению, я не знаком с платформой умного дома от Tuya, но если там поддерживается протокол mqtt, то думаю, что проблем с интеграцией не должно быть.

NutsUnderline
02.01.2026 14:10у tuya довольно заморочено с шифрованиями и серверами. ка кто наверное можно но обычно наоборот от нее стараются избавиться

Viacheslav01
02.01.2026 14:10Почему все не засунуть в один корпус и не вывесить а улицу?
На мой взгляд шлейфы сильно затрудняют использование подобных устройств.
Nikeware
02.01.2026 14:10Зимой батарейки Вам спасибо точно не скажут :-)

Viacheslav01
02.01.2026 14:10У меня датчик от метеостанции на балконе, ну там правда в лютые морозы меньше -15 не бывает, вроде батарейки в норме.

CyberexTech Автор
02.01.2026 14:10В мороз батарейки перестанут работать, а шлейф наоборот упрощает установку датчика на улице.

nixtonixto
02.01.2026 14:10Алкалайновые батарейки с током КЗ более 3 А, в средней полосе нормально работают в мороз с ЕСП вплоть до глубокого разряда.
Резистор номиналом 8,2 кОм является подтягивающим
На схеме у вас нарисован 4,7 кОм. Для кнопки можно и такой, это несущественно.

CyberexTech Автор
02.01.2026 14:10Да, с резистором неудобно получилось). На цветовую маркировку не обратил внимание). Подтягивающий резистор используется с номиналом 8,2 кОм.

Feer41rus
02.01.2026 14:10Не сразу сообразил, что батарейки находятся в квартире.
Очень интересно получилось, спасибо!

devzona
02.01.2026 14:10Так для внешнего исполнения используют экран Стивенсона

tklim
02.01.2026 14:10Он поможет только с измерением влажности. Т.к. в текущей конструкции без нормального "проветривания" будет показывать влажность внутри этой самой банки.
Но никакой экран не поможет с точностью измерения температуры при установке датчика на стену дома.

CyberexTech Автор
02.01.2026 14:10Согласен, вся жизнь состоит из компромиссов. В данный момент датчик установлен на северной стороне дома и в банке проделаны отверстия моя вентиляции – в статье на картинке это видно.

zyakin
02.01.2026 14:10Появилось желание увидеть схему измерения указанного в характеристиках потребления в 0,2наноАмпера, но далее увидел "схему" самого прибора и понял, что кина не будет =)



ThingCrimson
Спасибо за лютый новогодний DIY! По железу отмечу удачное и уместное применение плоского шлейфа, исходный код почитаю чуть позже…
А что по времени работы от одного комплекта свежих АА батареек (условно 1500 mA*h), есть уже результат? Если (когда) будет, укажите это в статье, пожалуйста.
CyberexTech Автор
Спасибо за комментарий! Время работы зависит от типа элементов и частоты пробуждения контроллера.
CyberexTech Автор
При пробуждении раз в час, срок службы элементов питания примерно 560 дней (по расчетам).
ThingCrimson
Ого, внушает! У меня от одного аккумулятора 18650 на 2000 mA*h на платах ESP-12 с использованием LDO HT7333 датчика AMS2302 получается 50-60 дней при частоте пробуждения раз в 10 минут. Ну, аккумулятор и поменять недолго.
Antra
Слабо верится, если честно. Как долго у вас сессия длится?
В свое время у меня минимум секунд 15 занимало. Надо ведь не только проснуться, подключиться к WiFi, отправить данные MQTT, но еще и дать возможность датчикам нормально заработать (хотя бы несколько секунд).
И обычного аккумулятора 1000 mAh хватало буквально на месяц.
ThingCrimson
Вопрос не ко мне, но позволю себе подключиться: посмотрел прямо сейчас в логи, в среднем сессия от выхода из deep sleep и до отправки пакета с данными на сервер — 7.5 с. Дольше всего подключение в WiFi длится, и тут наверно много зависит от мощности сигнала (у меня -63..-67 dB, протокол 802.11n, точки доступа Mikrotik).
Antra
Да, у меня из теплицы было, -72 dB - дополнительное замедление и т.д.