BoardRepo electronics project sharing
100%
Open file
weatherstation Schematic SVG view

Imported from GitHub: Gleb-Vlasov/WeatherStation · commit f9105a6 · license MIT

Description

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

README



📖 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

Assembled Board — Back

PCB Layout

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.




📖 О проекте

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

🖼️ Галерея

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

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

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

Схема


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

БлокКомпонентНазначение
Микроконтроллер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.