Affiliate disclosure: This page contains affiliate links. When you buy through these links, we earn a small commission at no extra cost to you. This helps us keep the site running and the links up to date.
What This Project Is
This project builds a compact, 3D-printed desktop weather station. It uses an ESP32 to read temperature, humidity, and barometric pressure from a BME280 sensor, and air quality data from an MQ135 sensor. All data displays on a crisp 1.3-inch OLED screen. The ESP32 also connects to Wi-Fi, syncs time via NTP, and serves a web interface for remote monitoring.
The original Printables page has the STL files and firmware, but some critical build details are missing or unclear. This page provides a verified bill of materials with working buy links, clarifies component choices, and highlights important build considerations for a smooth assembly.
What You’ll Need to Buy
| # | Component | Spec | Qty | Buy Link | Notes |
|---|---|---|---|---|---|
| 1 | ESP32 Dev Board | ESP32-WROOM-32, 30-pin | 1 | Amazon — ESP32 Dev Board | Any generic 30-pin ESP32-WROOM-32 board works. Firmware uses specific pins for OLED and I2C for BME280. |
| 2 | BME280 Sensor | I2C breakout, 3.3V | 1 | Adafruit — BME280 Breakout | Must be BME280 (humidity, temp, pressure), NOT BMP280 (no humidity). Check the silkscreen. |
| 3 | MQ-135 Air Quality Sensor | Module with LM393 comparator | 1 | Amazon — MQ-135 Module | CRITICAL: The MQ-135 module typically runs at 5V. Its analog output can damage the ESP32’s 3.3V ADC if wired directly. You MUST use a voltage divider to drop the analog output to 3.3V or less. |
| 4 | 1.3 Inch OLED Display | SSD1306, 128x64, SPI (7-pin) | 1 | Amazon — 1.3” SPI OLED | Firmware uses 4-wire software SPI. You need a 7-pin SPI OLED module (GND, VCC, CLK, MOSI, RES, DC, CS). Common 4-pin I2C-only modules will NOT work without firmware changes. |
Estimated total cost for components: $30-$45
You will also need a 3D printer capable of printing ABS, a soldering iron, and a Micro-USB or USB-C cable (depending on your ESP32 board) for flashing.
Where to Get the Files
- STL files for 3D printing: Printables — ESP32 Weather Station Case
- Firmware (Arduino sketch): GitHub — Mega_Projekt.ino
Build Notes
- MQ-135 Voltage Divider: The MQ-135 sensor module typically operates on 5V, and its analog output (AOUT) can swing up to 5V. The ESP32’s Analog-to-Digital Converter (ADC) pins are 3.3V tolerant. Connecting a 5V signal directly to an ESP32 ADC pin will likely damage the ESP32. You must add a voltage divider (e.g., two resistors) to reduce the MQ-135’s analog output voltage to below 3.3V before connecting it to the ESP32’s
ANALOGPIN(GPIO36). - OLED Display Type: The firmware is configured for a 1.3-inch SSD1306 OLED display using 4-wire software SPI. This means you need a display module with at least 7 pins (GND, VCC, CLK, MOSI, RES, DC, CS). Many 1.3-inch OLEDs are sold as 4-pin I2C-only modules; these will not work with the provided firmware without significant code changes. Double-check your OLED module’s pinout and interface type before purchasing.
- Component Mounting: The creator suggests using a soldering iron to melt the pin headers of the components into the 3D-printed case as heat-set anchors. This avoids needing screws for mounting.
- Print Settings: For the enclosure, print at a 0.2mm layer height with 20% infill. ABS filament is recommended for rigidity and heat resistance, especially if the device will be in a warm environment.
- Firmware Configuration: Before flashing the firmware, you need to edit
Mega_Projekt.inoto set your Wi-Fi SSID and password. Also, adjust theNTP_OFFSETvalue to match your local timezone. The default is7200seconds (UTC+2).
About This Page
Some Assembly Mandatory builds supply guides for popular maker projects. We research and verify every component link so you can focus on building, not shopping. This guide was researched and compiled with AI assistance and reviewed by our editorial team. Found a dead link or a better component? Let us know.