ESP32-S3 + FreeRTOS

Метеостанция
с прогнозом погоды

Современная метеостанция на базе ESP32-S3 с цветным TFT-дисплеем 480×320. Отображает текущую погоду, прогноз на 3 дня, данные внутреннего и внешнего датчиков, передаёт данные в MQTT сервер и в сервис Народный мониторинг.

Open Source
MIT License
OTA Updates
Метеостанция ESP32-S3

Функциональные возможности

Полноценная метеостанция с современным функционалом для дома и дачи

Цветной дисплей

TFT ILI9488 480×320 (4") с яркими иконками погоды и плавной анимацией

Прогноз погоды

Данные от Open-Meteo API: текущая погода и прогноз на 3 дня с геомагнитным индексом Kp

Внутренний датчик

BME280 по I2C: температура, влажность и атмосферное давление в помещении

Внешний датчик

Беспроводной датчик на nRF24L01+ с автономным питанием от Li-Ion 18650

MQTT & NarodMon

Отправка данных на MQTT брокер и народный мониторинг погоды

OTA обновления

Обновление прошивки по воздуху через WiFi без подключения кабеля

Аппаратные компоненты

Проверенные компоненты для надёжной работы метеостанции

ESP32-S3

ESP32-S3-DevKitC-1

16MB Flash, 8MB PSRAM, WiFi + Bluetooth 5.0

Главный контроллер
TFT Display

TFT ILI9488

480×320, 4 дюйма, SPI интерфейс

Дисплей
BME280

BME280

Температура, влажность, давление (I2C: 0x76/0x77)

Сенсор
nRF24L01+

nRF24L01+

2.4GHz радиомодуль для связи с внешним датчиком

Радио

Технические характеристики

Микроконтроллер ESP32-S3 (Xtensa LX7 dual-core @ 240MHz)
Память 16MB Flash, 8MB PSRAM
Дисплей TFT ILI9488 480×320, 4", SPI
Внутренний датчик BME280 (I2C: темп, влажность, давление)
Радиомодуль nRF24L01+ (SPI, 2.4GHz)
Файловая система LittleFS
Связь WiFi 802.11 b/g/n, Bluetooth 5.0
Отдельный проект

Внешний датчик

Автономный беспроводной датчик на базе XIAO ESP32-C6. Работает от аккумулятора 18650 с умным управлением питанием — просыпается каждую минуту, делает измерения, отправляет данные и снова засыпает.

XIAO ESP32-C6

Компактный микроконтроллер с WiFi 6 и Bluetooth 5

SHTC3 / BME280

Высокоточный сенсор температуры и влажности

Li-Ion 18650 + измеритель

Автономное питание с контролем заряда через АЦП

nRF24L01+

Надёжная радиосвязь 2.4GHz с низким энергопотреблением

E-ink дисплей (опционально)

200×200 монохромный дисплей для локального отображения

Репозиторий на GitHub

Параметры энергосбережения

Потребление в сне ~10 мкА
Время пробуждения ~500 мс
Интервал измерений 60 секунд
Автономность (18650) ~6-12 месяцев
Дальность связи до 100 м
Современный C++ (C++17), FreeRTOS

Программное обеспечение

Построено на проверенных open-source библиотеках

Сборка проекта

Инструкция по сборке и настройке метеостанции

Клонирование репозиториев

Проект состоит из двух частей: основная метеостанция и внешний беспроводной датчик.

1 Основной проект (дисплей + базовый модуль)

git clone https://github.com/rrn-sss/meteo_station.git

2 Внешний датчик (NRF24L01 + SHT3x)

git clone https://github.com/rrn-sss/meteo_sensor_out.git

Сборка в VS Code + PlatformIO

Требования:

  • VS Code с установленным расширением PlatformIO
  • USB-драйвер для ESP32-S3/ESP32-C6 (CP210x или CH340)

1 Основной блок (метеостанция)

Открыть workspace файл:

meteo_station.code-workspace

Или через терминал:

code meteo_station.code-workspace

Дождаться инициализации PlatformIO, затем нажать Build и Upload

2 Внешний датчик

Открыть workspace файл:

out_sensor.code-workspace

Или через терминал:

code out_sensor.code-workspace

Дождаться инициализации PlatformIO, затем нажать Build и Upload

Прошивка файловой системы LittleFS

LittleFS содержит HTML-файлы веб-интерфейса. Без него веб-интерфейс работать не будет. Требуется только для основного блока.

CLI команда:

pio run --target uploadfs

Или через VS Code:

  1. PlatformIO (боковая панель)
  2. Project Tasks
  3. env:esp32-s3-devkitc-1
  4. Platform → Upload Filesystem Image

Важно: последовательность прошивки

  1. Сначала прошить LittleFS (Upload Filesystem Image)
  2. Затем прошить основную прошивку (Upload)
  3. Перезагрузить устройство

Схемы подключения

Основной блок метеостанции

Схема основного блока

Нажмите для увеличения

NRF24L01
CE
GPIO4
CSN
GPIO5
SCK
GPIO6
MOSI
GPIO7
MISO
GPIO10
IRQ
GPIO15
TFT ILI9488
CS
GPIO9
RST
GPIO46
DC
GPIO14
MOSI
GPIO11
SCK
GPIO12
MISO
GPIO13
I2C сенсоры (BME280)
SDA
GPIO3
SCL
GPIO8

Внешний датчик (наружный блок)

Автономный датчик работает от батареи 18650 с глубоким сном между измерениями.

Схема внешнего датчика

Нажмите для увеличения

Компоненты
  • XIAO ESP32-C6 — Wi-Fi 6, Bluetooth 5
  • SHT3x — темп. и влажность (I2C)
  • NRF24L01+ — 2.4GHz радио
  • E-ink 200x200 — опционально (SSD1681)
  • Li-Ion 18650 + измеритель заряда
NRF24L01+ (ESP32-C6)
CE
GPIO0
CSN
GPIO21
SCK
GPIO19
MOSI
GPIO18
MISO
GPIO20
Измерение батареи
BAT_ADC
GPIO2
BAT_MOSFET
GPIO17

Файлы для изготовления печатных плат

Гербер-файлы — стандартный формат для производства печатных плат (PCB). Содержат все слои: медные дорожки, маску, шелкографию и сверловку.

Основная плата

Gerber

Плата для ESP32-S3, TFT дисплея, NRF24L01 и BME280

Скачать gerber_meteostation.zip

Плата внешнего датчика

Gerber

Плата для XIAO ESP32-C6, SHT3x, NRF24L01 и E-ink

Скачать gerber_pcb2.zip

Где заказать

PCBWave (рекомендуется)
  • Загрузить ZIP-архив с герберами
  • Параметры: 2 слоя, 1.6мм, HASL
  • Минимальный заказ: 5 шт.
  • Стоимость: от $5 + доставка

Изготовление плат 5-15 рабочих дней

Настройка WiFi + MQTT

Шаг 1: Вход в режим настройки

Если метеостанция уже была подключена к WiFi — отключите роутер или выйдите из зоны покрытия, затем перезагрузите метеостанцию:

  • 1 Отключить USB кабель и подключить обратно
  • 2 Или нажать кнопку RST на плате ESP32
  • 3 Метеостанция перейдёт в режим точки доступа
Шаг 2: Подключение к AP

Подключитесь к сети со смартфона или компьютера:

SSID: MeteoStation-AP
Шаг 3: Открытие настроек

В браузере откроется captive portal или введите:

http://192.168.4.1
Главное окно настроек

Главное окно настроек (captive portal)

Конфигурация WiFi

Конфигурация WiFi и MQTT

Настройка MQTT

Что такое MQTT?

MQTT (Message Queuing Telemetry Transport) — лёгкий протокол обмена сообщениями по принципу "издатель-подписчик". Метеостанция публикует данные в топики → брокер сохраняет → приложение на смартфоне получает обновления в реальном времени.

Параметры clusterfly.ru
Brokersrv2.clusterfly.ru
Port9991
Usernameваш_логин
Passwordваш_пароль
Prefixmeteo_station
Как получить доступы
  1. Зарегистрироваться на clusterfly.ru
  2. Войти в личный кабинет
  3. Перейти в раздел "MQTT Broker"
  4. Создать новое устройство
  5. Скопировать Username и Password

Приложение для просмотра данных

Рекомендуется приложение IoT MQTT Panel (Android):

Создание панели
Настройка подключения
Добавление виджетов
Топики для подписки
Параметр Топик JsonPath
Температура внутри <user>/<prefix>/in $.t
Влажность внутри <user>/<prefix>/in $.h
Температура снаружи <user>/<prefix>/out $.t
Влажность снаружи <user>/<prefix>/out $.h
Заряд батареи <user>/<prefix>/out $.bat

Интеграция с NarodMon

Проект поддерживает отправку данных на сервис NarodMon — бесплатную карту метеостанций с историческими графиками.

  • Автоматическая передача показаний
  • Отображение на общей карте
  • Исторические графики
Схема в полном размере