Desk Weather Station
A small desk display showing temperature, humidity and air pressure, with a simple rain forecast. The e-paper screen stays readable with the power off.
“Build a little desk display that shows the temperature and humidity in my room.”
Spec
Desk Weather Station
A USB-powered e-paper display that shows indoor temperature, humidity and pressure.
- Power
- USB-C, 5 V
- Size
- 54 × 54 × 16 mm, on a small stand
- Inputs
- BME280 temperature/humidity/pressure sensor, Button
- Outputs
- 1.54" e-paper display (200 × 200)
- Connectivity
- USB-C, Wi-Fi capable
- Budget
- Under $30 in parts
Constraints
- Sensor kept away from the chip's heat
Why
E-paper screen
E-paper reads like paper, has no glow at night, and only uses power when it changes.
Circuit board
Why
Sensor in its own corner
The BME280 sits in a corner with a slot cut around it, so heat from the chip doesn't throw off the temperature.
Firmware
// Desk Weather Station — shows indoor temperature, humidity and pressure
// on a 1.54" e-paper display, refreshed every five minutes.
#include <Arduino.h>
#include <Wire.h>
#include <Adafruit_BME280.h>
#include <GxEPD2_BW.h>
#include <Fonts/FreeSansBold18pt7b.h>
#include <Fonts/FreeSans9pt7b.h>
#include "pins.h"
constexpr uint32_t REFRESH_MS = 5UL * 60UL * 1000UL;
GxEPD2_BW<GxEPD2_154_GDEY0154D67, GxEPD2_154_GDEY0154D67::HEIGHT> display(
GxEPD2_154_GDEY0154D67(PIN_EPD_CS, PIN_EPD_DC, PIN_EPD_RST, PIN_EPD_BUSY));
Adafruit_BME280 bme;
void drawReading(float tempC, float rh, float hPa) {
display.setFullWindow();
display.firstPage();
do {
display.fillScreen(GxEPD_WHITE);
display.setTextColor(GxEPD_BLACK);
display.setFont(&FreeSansBold18pt7b);
display.setCursor(16, 64);
display.printf("%.1f C", tempC);
3 files: src/main.cpp, include/pins.h, platformio.ini
Why
Refresh every 5 minutes
Indoor conditions change slowly, and fewer refreshes keep the e-paper crisp.
Enclosure
- Outer size
- 54 × 54 × 16 mm
- Material
- PLA, 0.16 mm layers
- Print time
- 1 h 15 min, no supports
Why
Vents by the sensor
Small slots next to the sensor let room air reach it.
Assembly
- 1Connect the display ribbon.
- 2Screw the board in.
- 3Snap on the bezel.
Why
Fit check passed
Display sits flush with the bezel.
See every stage run, step by step
The workspace shows each engine working, with approval checkpoints in between.