A compact, WiFi-connected weather station built around the ESP32-WROOM-32. Custom 2-layer PCB designed from scratch in KiCad.
VLASOV INDUSTRIES
📖 Overview
This is a fully custom weather station PCB designed around the ESP32-WROOM-32. Unlike a typical breadboard prototype, every component here sits on a purpose-built board — from the USB-to-UART bridge to the power regulation, sensor interface, and a modular display connector.
The device measures the local environment with an on-board BME280 sensor (temperature, humidity, and barometric pressure) and, thanks to the ESP32's built-in WiFi, can pull live weather data from the internet and display it on an attached screen. Four navigation buttons let you move through screens and menus directly on the device — no computer required after flashing.
Because the heart of the board is a full ESP32 with WiFi, this is far more than a thermometer. It's an open, programmable platform: you can extend it to show forecasts, multiple cities, air-quality indices, sunrise/sunset times, alerts — essentially anything available from a weather API — and control all of it with the four on-board buttons.
✨ Key Features
📡 WiFi-connected — the ESP32 connects to any 2.4 GHz network, opening the door to live online weather data, forecasts, and remote APIs.
🌡️ On-board BME280 sensor — measures local temperature, humidity, and atmospheric pressure, placed away from heat-generating components for accurate readings.
🖥️ Modular display — a 7-pin SPI header lets you plug in a TFT screen. Swap or upgrade the display without redesigning the board.
🎛️ Four-button control — UP / DOWN / OK / BACK buttons provide full on-device menu navigation. No serial console needed to interact with the device.
🔌 USB-C + auto-flash — a CP2102 USB-to-UART bridge with a transistor-based auto-reset circuit means you can flash firmware over USB-C with a single click — no manual button presses.
🛡️ ESD protection — a USBLC6-2SC6 protects the USB data lines from electrostatic discharge.
⚡ Clean power — an AMS1117-3.3 LDO supplies a stable 3.3 V rail to the ESP32, sensor, and display.
🧩 Infinitely extensible — every free GPIO is available for future modules: extra sensors, LEDs, buzzers, relays, and more.
🔧 How It Works
Power & programming arrive over a single USB-C cable. The 5 V line feeds the AMS1117 regulator (which generates the 3.3 V rail for everything) and the CP2102 bridge.
The CP2102 translates USB into UART so the ESP32 can be flashed. Two transistors driven by the bridge's DTR/RTS lines form an auto-reset circuit, putting the ESP32 into bootloader mode automatically during upload.
The ESP32 runs the firmware. It reads the BME280 over I²C for local conditions and connects over WiFi to fetch online weather data.
Everything is rendered on a TFT display (connected via the SPI header), and the user navigates with the four control buttons.
🖼️ Gallery
Assembled Board — Front
Assembled Board — Back
PCB Layout
Schematic
🧠 Hardware Blocks
Block
Component
Purpose
MCU
ESP32-WROOM-32
Main processor with WiFi & Bluetooth
USB-UART
CP2102-GM
USB-to-serial bridge for flashing & debug
Auto-reset
2× SS8050 (NPN)
Automatic bootloader entry during upload
Power
AMS1117-3.3
5 V → 3.3 V linear regulator
Sensor
BME280
Temperature, humidity, pressure (I²C)
ESD
USBLC6-2SC6
USB data line surge protection
Display
7-pin SPI header
Modular TFT screen connection
Input
4× tactile buttons
On-device menu navigation
Connector
USB-C (USB 2.0)
Power + data
📌 GPIO Map
Function
ESP32 Pin
Notes
UART TX
GPIO1
To CP2102
UART RX
GPIO3
From CP2102
I²C SDA
GPIO21
BME280
I²C SCL
GPIO22
BME280
Display SCK
GPIO18
SPI clock (VSPI)
Display MOSI
GPIO23
SPI data (VSPI)
Display CS
GPIO5
Chip select
Display DC
GPIO16
Data/command
Display RST
GPIO4
Reset
Button UP
GPIO32
Internal pull-up
Button DOWN
GPIO33
Internal pull-up
Button OK
GPIO25
Internal pull-up
Button BACK
GPIO26
Internal pull-up
🚀 Getting Started
Flashing
Connect the board via USB-C.
Open the Arduino IDE or PlatformIO and select an ESP32 Dev Module board profile.
Hit Upload — the auto-reset circuit handles bootloader entry automatically. (If needed, hold BOOT and tap EN to enter bootloader manually.)
Required Libraries (example)
`Adafruit BME280` + `Adafruit Unified Sensor` — for the on-board sensor
A TFT driver matching your display controller (e.g. `TFT_eSPI` / `Adafruit GFX`)
`WiFi` (built into the ESP32 core) — for online weather data
💡 The firmware is up to you. The hardware gives you a full WiFi-enabled ESP32 with a sensor, a screen, and four buttons — what it displays and how it behaves is entirely programmable.
Компактная метеостанция с WiFi на базе ESP32-WROOM-32. Собственная двухслойная плата, спроектированная с нуля в KiCad.
VLASOV INDUSTRIES
📖 О проекте
Это полностью самостоятельная плата метеостанции на базе ESP32-WROOM-32. В отличие от обычного прототипа на макетке, здесь каждый компонент расположен на специально спроектированной плате — от моста USB-UART до стабилизации питания, интерфейса датчика и модульного разъёма для дисплея.
Устройство измеряет локальную обстановку встроенным датчиком BME280 (температура, влажность и атмосферное давление), а благодаря встроенному WiFi в ESP32 может получать актуальные данные о погоде из интернета и выводить их на подключённый экран. Четыре кнопки навигации позволяют переключать экраны и перемещаться по меню прямо на устройстве — компьютер после прошивки не нужен.
Поскольку в основе платы лежит полноценный ESP32 с WiFi, это намного больше чем просто термометр. Это открытая программируемая платформа: её можно расширить для показа прогнозов, нескольких городов, индексов качества воздуха, времени восхода и заката, оповещений — по сути всего что доступно из любого погодного API, и управлять всем этим четырьмя встроенными кнопками.
✨ Ключевые возможности
📡 Подключение по WiFi — ESP32 соединяется с любой сетью 2.4 ГГц, открывая доступ к актуальным онлайн-данным о погоде, прогнозам и удалённым API.
🌡️ Встроенный датчик BME280 — измеряет локальную температуру, влажность и атмосферное давление, размещён вдали от греющихся компонентов для точности показаний.
🖥️ Модульный дисплей — 7-пиновый SPI-разъём позволяет подключить TFT-экран. Можно менять или обновлять дисплей без переделки платы.
🎛️ Управление четырьмя кнопками — кнопки ВВЕРХ / ВНИЗ / OK / НАЗАД обеспечивают полную навигацию по меню прямо на устройстве. Для взаимодействия не нужна консоль.
🔌 USB-C + автопрошивка — мост USB-UART CP2102 с транзисторной схемой автосброса позволяет прошивать устройство по USB-C одним нажатием — без ручного зажима кнопок.
🛡️ Защита от ESD — микросхема USBLC6-2SC6 защищает линии данных USB от электростатических разрядов.
⚡ Чистое питание — LDO-стабилизатор AMS1117-3.3 выдаёт стабильные 3.3 В для ESP32, датчика и дисплея.
🧩 Безграничная расширяемость — все свободные GPIO доступны для будущих модулей: дополнительных датчиков, светодиодов, зуммеров, реле и не только.
🔧 Как это работает
Питание и прошивка поступают по единственному кабелю USB-C. Линия 5 В питает стабилизатор AMS1117 (который формирует шину 3.3 В для всего остального) и мост CP2102.
CP2102 переводит USB в UART, чтобы ESP32 можно было прошить. Два транзистора, управляемые линиями DTR/RTS моста, образуют схему автосброса — она автоматически переводит ESP32 в режим загрузчика во время прошивки.
ESP32 выполняет прошивку. Он считывает BME280 по I²C для локальных показаний и подключается по WiFi для получения онлайн-данных о погоде.
Всё отображается на TFT-дисплее (подключённом через SPI-разъём), а пользователь перемещается по меню четырьмя кнопками управления.
🖼️ Галерея
Собранная плата — лицевая сторона
Собранная плата — обратная сторона
Разводка платы
Схема
🧠 Функциональные блоки
Блок
Компонент
Назначение
Микроконтроллер
ESP32-WROOM-32
Основной процессор с WiFi и Bluetooth
USB-UART
CP2102-GM
Мост USB-в-serial для прошивки и отладки
Автосброс
2× SS8050 (NPN)
Автоматический вход в загрузчик при прошивке
Питание
AMS1117-3.3
Линейный стабилизатор 5 В → 3.3 В
Датчик
BME280
Температура, влажность, давление (I²C)
Защита ESD
USBLC6-2SC6
Защита линий данных USB от разрядов
Дисплей
7-пиновый SPI-разъём
Подключение модульного TFT-экрана
Ввод
4× тактовые кнопки
Навигация по меню на устройстве
Разъём
USB-C (USB 2.0)
Питание + данные
📌 Карта выводов (GPIO)
Функция
Вывод ESP32
Примечание
UART TX
GPIO1
К CP2102
UART RX
GPIO3
От CP2102
I²C SDA
GPIO21
BME280
I²C SCL
GPIO22
BME280
Дисплей SCK
GPIO18
Тактирование SPI (VSPI)
Дисплей MOSI
GPIO23
Данные SPI (VSPI)
Дисплей CS
GPIO5
Выбор чипа
Дисплей DC
GPIO16
Данные/команда
Дисплей RST
GPIO4
Сброс
Кнопка ВВЕРХ
GPIO32
Внутренняя подтяжка
Кнопка ВНИЗ
GPIO33
Внутренняя подтяжка
Кнопка OK
GPIO25
Внутренняя подтяжка
Кнопка НАЗАД
GPIO26
Внутренняя подтяжка
🚀 Начало работы
Прошивка
Подключи плату по USB-C.
Открой Arduino IDE или PlatformIO и выбери профиль платы ESP32 Dev Module.
Нажми Upload — схема автосброса сама переведёт чип в режим загрузчика. (При необходимости зажми BOOT и кратко нажми EN, чтобы войти в загрузчик вручную.)
Необходимые библиотеки (пример)
`Adafruit BME280` + `Adafruit Unified Sensor` — для встроенного датчика
`WiFi` (встроена в ядро ESP32) — для онлайн-данных о погоде
💡 Прошивка — за тобой. Железо даёт полноценный ESP32 с WiFi, датчиком, экраном и четырьмя кнопками. Что именно оно показывает и как себя ведёт — полностью программируется.
No comments yet. Be the first to ask about this board.