Привет, Хабр!

Пожалуй, одним из первых устройств, которые подключаются к умному дому (конечно, после модуля управления освещением), является домашняя метеостанция. Вот и мне на новом месте и в новом умном доме потребовалось реализовать данное устройство. Но есть одна проблема: находясь вдалеке от своей домашней лаборатории, я имею минимальный набор инструментов и лишён таких благ цивилизации, как лазерный мини-ЧПУ для изготовления плат и 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), припаяв небольшой медный провод. У меня реализовано так:

Подпайка к GPIO16
Подпайка к GPIO16

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

Паяем шлейф в датчику
Паяем шлейф в датчику

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

Управление термоклеем мест пайки
Управление термоклеем мест пайки

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

Защита датчика
Защита датчика

Здесь главное не переусердствовать и не залить измерительное отверстие на сенсоре.

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

Модуль с проводами
Модуль с проводами

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

Фиксация провода  GPIO16
Фиксация провода GPIO16

И еще пара элементов для надежности устройства — в 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 должно автоматически обнаружиться новое устройство:

Скриншот  Home Assistant
Скриншот Home Assistant

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

Панель управления устройством
Панель управления устройством

❯ Итоги & выводы

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

  • Ток потребления в активном режиме (передача данных):

Ток потребления в активном режиме (передача данных)
Ток потребления в активном режиме (передача данных)
  • Ток потребления в режиме сна:

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

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

Метеостанция в месте установки (дома)
Метеостанция в месте установки (дома)

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

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

На этом можно и завершать статью. Спасибо за внимание и интересных проектов!

Ссылки к статье:


Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале 

Комментарии (38)


  1. ThingCrimson
    02.01.2026 14:10

    Спасибо за лютый новогодний DIY! По железу отмечу удачное и уместное применение плоского шлейфа, исходный код почитаю чуть позже…

    А что по времени работы от одного комплекта свежих АА батареек (условно 1500 mA*h), есть уже результат? Если (когда) будет, укажите это в статье, пожалуйста.


    1. CyberexTech Автор
      02.01.2026 14:10

      Спасибо за комментарий! Время работы зависит от типа элементов и частоты пробуждения контроллера.


    1. CyberexTech Автор
      02.01.2026 14:10

      А что по времени работы от одного комплекта свежих АА батареек (условно 1500 mA*h), есть уже результат?

      При пробуждении раз в час, срок службы элементов питания примерно 560 дней (по расчетам).


      1. ThingCrimson
        02.01.2026 14:10

        Ого, внушает! У меня от одного аккумулятора 18650 на 2000 mA*h на платах ESP-12 с использованием LDO HT7333 датчика AMS2302 получается 50-60 дней при частоте пробуждения раз в 10 минут. Ну, аккумулятор и поменять недолго.


      1. Antra
        02.01.2026 14:10

        Слабо верится, если честно. Как долго у вас сессия длится?

        В свое время у меня минимум секунд 15 занимало. Надо ведь не только проснуться, подключиться к WiFi, отправить данные MQTT, но еще и дать возможность датчикам нормально заработать (хотя бы несколько секунд).

        И обычного аккумулятора 1000 mAh хватало буквально на месяц.


        1. ThingCrimson
          02.01.2026 14:10

          Вопрос не ко мне, но позволю себе подключиться: посмотрел прямо сейчас в логи, в среднем сессия от выхода из deep sleep и до отправки пакета с данными на сервер — 7.5 с. Дольше всего подключение в WiFi длится, и тут наверно много зависит от мощности сигнала (у меня -63..-67 dB, протокол 802.11n, точки доступа Mikrotik).


          1. Antra
            02.01.2026 14:10

            Да, у меня из теплицы было, -72 dB - дополнительное замедление и т.д.


  1. DimaZol
    02.01.2026 14:10

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


    1. CyberexTech Автор
      02.01.2026 14:10

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


      1. DimaZol
        02.01.2026 14:10

        Спасибо ! Буду разбираться !


    1. NutsUnderline
      02.01.2026 14:10

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


      1. DimaZol
        02.01.2026 14:10

        Я не прогер , к сожалению ... Не моё !


  1. Viacheslav01
    02.01.2026 14:10

    Почему все не засунуть в один корпус и не вывесить а улицу?
    На мой взгляд шлейфы сильно затрудняют использование подобных устройств.


    1. Nikeware
      02.01.2026 14:10

      Зимой батарейки Вам спасибо точно не скажут :-)


      1. Viacheslav01
        02.01.2026 14:10

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


    1. CyberexTech Автор
      02.01.2026 14:10

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


      1. tklim
        02.01.2026 14:10

        Смотря какой мороз. И какие батарейки.
        Xiaomi LYWSD03MMC, дешевая CR2032 (типа, 0,99E за 10штук) ~ 1год

        Зимой бывает и -10..-15 но не каждый год.


        1. tklim
          02.01.2026 14:10

          Кстати, если что на экране меньше -9 не показывает, но вполне продолжает работать, морозилка:


      1. nixtonixto
        02.01.2026 14:10

        Алкалайновые батарейки с током КЗ более 3 А, в средней полосе нормально работают в мороз с ЕСП вплоть до глубокого разряда.

        Резистор номиналом 8,2 кОм является подтягивающим

        На схеме у вас нарисован 4,7 кОм. Для кнопки можно и такой, это несущественно.


        1. CyberexTech Автор
          02.01.2026 14:10

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


  1. Feer41rus
    02.01.2026 14:10

    Не сразу сообразил, что батарейки находятся в квартире.

    Очень интересно получилось, спасибо!


  1. devzona
    02.01.2026 14:10

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


    1. CyberexTech Автор
      02.01.2026 14:10

      Верно, но пока у меня нет 3D принтера, позже напечатаю.


    1. tklim
      02.01.2026 14:10

      Он поможет только с измерением влажности. Т.к. в текущей конструкции без нормального "проветривания" будет показывать влажность внутри этой самой банки.

      Но никакой экран не поможет с точностью измерения температуры при установке датчика на стену дома.


      1. CyberexTech Автор
        02.01.2026 14:10

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


  1. zyakin
    02.01.2026 14:10

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


    1. CyberexTech Автор
      02.01.2026 14:10

      Была опечатка. Исправил.