Skip to the content
2 layers77.5 × 48 mmWeatherStation, the printed circuit board in 3D

WiFi-connected weather station on a custom ESP32 PCB — BME280 sensor, modular display, USB-C. Built from scratch in KiCad.

Size
77.5 × 48 mm
Copper layers
2
Thickness
1.6 mm
Parts
46
Nets
58
Pads
248
Tracks, vias
360, 137
Pours
9
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
16 Jun 2026
Updated
16 Jun 2026

Overview

WeatherStation is an open-source printed circuit board by Gleb-Vlasov, from the Gleb-Vlasov/WeatherStation repository on GitHub, published under the MIT licence. It is a 2-layer board of 77.5 × 48 mm with 46 parts on 58 nets, routed with 360 tracks and 137 vias.

It is built around the ESP32-WROOM-32, BME280 and CP2102-GM, with the AMS1117-3.3, USBLC6-2SC6 and SS8050 among its other parts. Its parts include 14 capacitors, 9 resistors, 6 switches, 5 ICs and 2 transistors. It belongs with the home automation and IoT and radio and wireless boards and the ESP32 boards of this library.

Main components

6

README

README.md

[blocked]

🌐 Language / Язык: 🇬🇧 English • 🇷🇺 Русский


[blocked]

🌦️ ESP32 Weather Station

A compact, WiFi-connected weather station built around the ESP32-WROOM-32.
Custom 2-layer PCB designed from scratch in KiCad.

VLASOV INDUSTRIES

3D render of the assembled board

MCU KiCad Layers WiFi USB-C


📖 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

  1. 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.
  2. 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.
  3. The ESP32 runs the firmware. It reads the BME280 over I²C for local conditions and connects over WiFi to fetch online weather data.
  4. 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

3D front angle 3D front top

Assembled Board — Back

3D back view

PCB Layout

PCB top copper PCB bottom copper

Schematic

Full schematic


🧠 Hardware Blocks

BlockComponentPurpose
MCUESP32-WROOM-32Main processor with WiFi & Bluetooth
USB-UARTCP2102-GMUSB-to-serial bridge for flashing & debug
Auto-reset2× SS8050 (NPN)Automatic bootloader entry during upload
PowerAMS1117-3.35 V → 3.3 V linear regulator
SensorBME280Temperature, humidity, pressure (I²C)
ESDUSBLC6-2SC6USB data line surge protection
Display7-pin SPI headerModular TFT screen connection
Input4× tactile buttonsOn-device menu navigation
ConnectorUSB-C (USB 2.0)Power + data

📌 GPIO Map

FunctionESP32 PinNotes
UART TXGPIO1To CP2102
UART RXGPIO3From CP2102
I²C SDAGPIO21BME280
I²C SCLGPIO22BME280
Display SCKGPIO18SPI clock (VSPI)
Display MOSIGPIO23SPI data (VSPI)
Display CSGPIO5Chip select
Display DCGPIO16Data/command
Display RSTGPIO4Reset
Button UPGPIO32Internal pull-up
Button DOWNGPIO33Internal pull-up
Button OKGPIO25Internal pull-up
Button BACKGPIO26Internal pull-up

🚀 Getting Started

Flashing

  1. Connect the board via USB-C.
  2. Open the Arduino IDE or PlatformIO and select an ESP32 Dev Module board profile.
  3. 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.


📂 Repository Structure

``` WeatherStation/ ├── WeatherStation.kicad_pro # KiCad project ├── WeatherStation.kicad_sch # Schematic ├── WeatherStation.kicad_pcb # PCB layout ├── WeatherStation.csv # Bill of Materials ├── libs/ # Local symbols & footprints │ ├── symbols/ │ └── footprints/ ├── Gerber/ # Manufacturing files └── docs/ └── images/ # Renders & screenshots ```


🏭 Manufacturing

  • Layers: 2
  • Thickness: 1.6 mm
  • Copper: 1 oz (35 µm)
  • Min track / clearance: 0.25 mm / 0.2 mm
  • Designed to be produced by any standard fab (e.g. JLCPCB) from the included Gerber files.

📜 License

This project is released under the MIT License — free to use, study, modify, and distribute. See the LICENSE file for the full text.

⬆️ Back to top



[blocked]

🌦️ Метеостанция на ESP32

Компактная метеостанция с WiFi на базе ESP32-WROOM-32.
Собственная двухслойная плата, спроектированная с нуля в KiCad.

VLASOV INDUSTRIES

3D-рендер собранной платы

MCU KiCad Слои WiFi USB-C


📖 О проекте

Это полностью самостоятельная плата метеостанции на базе 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 доступны для будущих модулей: дополнительных датчиков, светодиодов, зуммеров, реле и не только.

🔧 Как это работает

  1. Питание и прошивка поступают по единственному кабелю USB-C. Линия 5 В питает стабилизатор AMS1117 (который формирует шину 3.3 В для всего остального) и мост CP2102.
  2. CP2102 переводит USB в UART, чтобы ESP32 можно было прошить. Два транзистора, управляемые линиями DTR/RTS моста, образуют схему автосброса — она автоматически переводит ESP32 в режим загрузчика во время прошивки.
  3. ESP32 выполняет прошивку. Он считывает BME280 по I²C для локальных показаний и подключается по WiFi для получения онлайн-данных о погоде.
  4. Всё отображается на TFT-дисплее (подключённом через SPI-разъём), а пользователь перемещается по меню четырьмя кнопками управления.

🖼️ Галерея

Собранная плата — лицевая сторона

3D вид спереди 3D вид сверху

Собранная плата — обратная сторона

3D вид сзади

Разводка платы

Верхний слой меди Нижний слой меди

Схема

Полная схема


🧠 Функциональные блоки

БлокКомпонентНазначение
МикроконтроллерESP32-WROOM-32Основной процессор с WiFi и Bluetooth
USB-UARTCP2102-GMМост USB-в-serial для прошивки и отладки
Автосброс2× SS8050 (NPN)Автоматический вход в загрузчик при прошивке
ПитаниеAMS1117-3.3Линейный стабилизатор 5 В → 3.3 В
ДатчикBME280Температура, влажность, давление (I²C)
Защита ESDUSBLC6-2SC6Защита линий данных USB от разрядов
Дисплей7-пиновый SPI-разъёмПодключение модульного TFT-экрана
Ввод4× тактовые кнопкиНавигация по меню на устройстве
РазъёмUSB-C (USB 2.0)Питание + данные

📌 Карта выводов (GPIO)

ФункцияВывод ESP32Примечание
UART TXGPIO1К CP2102
UART RXGPIO3От CP2102
I²C SDAGPIO21BME280
I²C SCLGPIO22BME280
Дисплей SCKGPIO18Тактирование SPI (VSPI)
Дисплей MOSIGPIO23Данные SPI (VSPI)
Дисплей CSGPIO5Выбор чипа
Дисплей DCGPIO16Данные/команда
Дисплей RSTGPIO4Сброс
Кнопка ВВЕРХGPIO32Внутренняя подтяжка
Кнопка ВНИЗGPIO33Внутренняя подтяжка
Кнопка OKGPIO25Внутренняя подтяжка
Кнопка НАЗАДGPIO26Внутренняя подтяжка

🚀 Начало работы

Прошивка

  1. Подключи плату по USB-C.
  2. Открой Arduino IDE или PlatformIO и выбери профиль платы ESP32 Dev Module.
  3. Нажми Upload — схема автосброса сама переведёт чип в режим загрузчика. (При необходимости зажми BOOT и кратко нажми EN, чтобы войти в загрузчик вручную.)

Необходимые библиотеки (пример)

  • `Adafruit BME280` + `Adafruit Unified Sensor` — для встроенного датчика
  • Драйвер TFT под контроллер твоего дисплея (например `TFT_eSPI` / `Adafruit GFX`)
  • `WiFi` (встроена в ядро ESP32) — для онлайн-данных о погоде

💡 Прошивка — за тобой. Железо даёт полноценный ESP32 с WiFi, датчиком, экраном и четырьмя кнопками. Что именно оно показывает и как себя ведёт — полностью программируется.


📂 Структура репозитория

``` WeatherStation/ ├── WeatherStation.kicad_pro # Проект KiCad ├── WeatherStation.kicad_sch # Схема ├── WeatherStation.kicad_pcb # Разводка платы ├── WeatherStation.csv # Перечень компонентов (BOM) ├── libs/ # Локальные символы и посадочные места │ ├── symbols/ │ └── footprints/ ├── Gerber/ # Производственные файлы └── docs/ └── images/ # Рендеры и скриншоты ```


🏭 Производство

  • Слоёв: 2
  • Толщина: 1.6 мм
  • Медь: 1 oz (35 мкм)
  • Мин. дорожка / зазор: 0.25 мм / 0.2 мм
  • Плата рассчитана на изготовление любым стандартным заводом (например JLCPCB) из приложенных Gerber-файлов.

📜 Лицензия

Проект распространяется под лицензией MIT — можно свободно использовать, изучать, изменять и распространять. Полный текст — в файле LICENSE.

⬆️ Наверх


Made with ⚡ by VLASOV INDUSTRIES

Parts

46
QtyValueFootprintReferences
9100nFCapacitor_SMD:C_0805_2012MetricC2, C3, C4, C5, C7, C8, C9, C12, C14
6SW_PUSH_6mmButton_Switch_THT:SW_PUSH_6mmSW1, SW2, SW3, SW4, SW5, SW6
410kResistor_SMD:R_0805_2012MetricR1, R5, R6, R7
4LOGOLOGOG***, G***, G***, G***
34,7kResistor_SMD:R_0805_2012MetricR4, R8, R9
210uFCapacitor_SMD:C_1206_3216MetricC6, C11
21μFCapacitor_SMD:C_1206_3216MetricC1, C10
25,1kResistor_SMD:R_0805_2012MetricR2, R3
2SS8050Package_TO_SOT_SMD:SOT-23Q1, Q2
122uFCapacitor_SMD:C_1206_3216MetricC13
1AMS1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U4
1BME280Package_LGA:Bosch_LGA-8_2.5x2.5mm_P0.65mm_ClockwisePinNumberingU5
1CP2102-GMCP2102-LOCAL:CP2102-GMU3
1Conn_01x07Connector_PinSocket_2.54mm:PinSocket_1x07_P2.54mm_VerticalJ2
1ESP32-WROOM-32RF_Module:ESP32-WROOM-32U2
1USBLC6-2SC6Package_TO_SOT_SMD:SOT-23-6U1
1USB_C_Receptacle_USB2.0_16PConnector_USB:USB_C_Receptacle_HCTL_HC-TYPE-C-16P-01AJ1

The 42 most common of 46 parts.

Similar boards

  • 2 layers45 × 172 mmPh portable refrigerator v2 hw, the printed circuit board in 3D

    Ph portable refrigerator v2 hw

    Blackcastus/ESP32_A7670

    To make it easy for you to get started with GitLab, here's a list of recommended next steps.

    188 parts
  • 2 layers68.1 × 39.8 mmChiggyRoom wired, the printed circuit board in 3D

    ChiggyRoom wired

    Chiggy-Playz/ChiggyRoomAutomation

    47 parts
  • 2 layers130.5 × 108 mmESP32 4CH Home Automation, the printed circuit board in 3D

    ESP32 4CH Home Automation

    VinayGopi-PK/ESP32-4-Channel-WiFi-Home-Automation

    ESP32-based 4-channel Wi-Fi Home Automation Controller designed in KiCad. Includes schematic, PCB layout, Gerber files, BOM and 3D visualization.

    77 parts
  • 4 layers84.6 × 91 mmDatalogger, the printed circuit board in 3D

    Datalogger

    PriyaUdhayakumar/ESP32-Environmental-Monitoring-Data-Logger

    ESP32-based environmental monitoring data logger using BME280, DS3231 RTC, microSD card, ESP-IDF and FreeRTOS.

    49 parts
  • 4 layers55 × 30.3 mmDatalogger, the printed circuit board in 3D

    Datalogger

    TinoCoda/sensor-node

    49 parts
  • 2 layers130.5 × 91.1 mmRobot Main Controller V3, the printed circuit board in 3D

    Robot Main Controller V3

    manhtienvu-vn/Defensive_Robot

    Full neccessary document my team PKA-03 (Phenikaa University) used to build a defensive robot in the Vietnam Robocon competition 2025, including firmware, hardware and mechanical design.

    128 parts
  • 2 layers58.3 × 36.3 mmE LCD2, the printed circuit board in 3D

    E LCD2

    Forairaaaaa/E-LCD2

    板载2.0寸LCD屏幕的 ESP32 核心板

    40 parts3MIT
  • 2 layers55 × 35 mmATMega8-Dev, the printed circuit board in 3D

    ATMega8-Dev

    Harshavar8jdm/ATMega328A-mini-dev-board

    33 parts

Questions

How big is the WeatherStation PCB?

It measures 77.5 × 48 mm and has 2 copper layers, 1.6 mm thick.

What parts does the WeatherStation use?

46 parts, built around the ESP32-WROOM-32, BME280, CP2102-GM and AMS1117-3.3. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the WeatherStation KiCad files?

From the Gleb-Vlasov/WeatherStation repository on GitHub, at the commit this page was made from: the board is WeatherStation.kicad_pcb and its schematic WeatherStation.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the WeatherStation design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).