To start, a little demo video:


ESP32 CYD Retro Weather Terminal in a 3D-Printed CRT Case

I wanted to build a small standalone weather terminal that looks like a tiny 1990s desktop monitor, but runs on modern ESP32 hardware and pulls live data from the internet.

The result is this project: an ESP32 Cheap Yellow Display (ESP32-2432S028 / CYD) mounted inside a custom 3D-printed CRT-style enclosure, running a Windows 95 inspired user interface that displays:

To make it feel more like a real miniature computer, I also designed a mechanical front-button linkage so the rear buttons on the CYD can be pressed from the front of the case using lever arms. The finished unit is powered by an internal Li-ion battery, with a charging module and a 5V buck converter, so it can run completely wire-free.

This project mixes several things I enjoy: retro design, programming, weather data and 3D printing.

Concept

The idea was not just to make another weather display, but to create something with personality.

A lot of modern electronic projects are technically impressive, but visually generic. I wanted this one to feel like a tiny desktop computer from the Windows 95 era: chunky plastic shapes, beveled “window” elements, simple icons, and dedicated screens for different information.

The ESP32 CYD board is perfect for this kind of project because it already includes:

Instead of leaving it bare, I designed a small CRT monitor shell around it. The enclosure gives it a completely different presence on a desk: it looks more like a miniature appliance than a dev board.

Main Features

Windows 95 style interface

The whole UI is styled with classic retro desktop elements:

The interface cycles automatically through multiple pages, but it can also be changed manually.

Multiple weather pages

The software currently includes six pages:

  1. Current conditions
    Displays current weather with icon, temperature, apparent temperature, humidity, pressure, rain, wind, gusts, direction, and observation time.

  2. Hourly forecast graphs
    Shows the next hours using simple graphs for temperature and rain probability.

  3. Daily forecast
    Displays several days of forecast with compact weather icons and min/max values.

  4. Wind page
    Includes wind speed, gusts, direction, a compass-like indicator, and a 12-hour wind graph.

  5. Satellite / radar image viewer
    Downloads and displays a remote satellite/radar composite image.

  6. Webcam viewer
    Downloads and displays a remote webcam image.

Image caching

Satellite and webcam images are stored in SPIFFS, so the device can keep showing the latest downloaded content even if the network is temporarily unavailable.

Local weather data caching

Weather JSON is also cached locally, which makes the interface more resilient and improves startup behavior.

Wi-Fi + NTP time sync

The ESP32 connects to Wi-Fi, syncs time via NTP, and uses that for the on-screen clock and timestamps.

Asynchronous networking

Network operations are handled in a separate task so the UI remains responsive while data and images are being downloaded.

I must admit that a lot of this interface was created using vibe coding with the help of Chat GPT, but the appearance of the interface he gave me really pleased me.

Battery-powered standalone operation

The final build includes:

That means the unit can be used without any external cable, which makes the object much nicer to place on a desk or shelf.

Hardware Used

The main hardware is:

The internal mounting method uses a rigid bracket and a threaded rod assembly to hold the board firmly in place and align it with the front bezel.

The 3D-Printed CRT Enclosure

The case is one of the most important parts of this project.

I wanted the device to instantly be like a tiny retro monitor, so the enclosure includes:

The overall shape is intentionally exaggerated a little compared to a real monitor.

From the front, it looks like a miniature desktop terminal. From the side, the sloped profile really sells the CRT illusion.

Mechanical Front Buttons

One fun challenge was that the CYD’s physical buttons are not located where I wanted to be accessible.

To solve that, I designed a small lever-based mechanism so that the buttons can be pressed from the front of the enclosure. This gives the finished object a much cleaner and more natural interaction.

It is a simple solution, but it adds a lot to the final usability and makes the whole project feel more “finished.”

Software Overview

The code is written with the Arduino IDE for ESP32 (Downloadable from the files list)

It uses these library:

Weather source

The project uses Open-Meteo for forecast and current weather data.

Remote image sources

The device also fetches:

These are downloaded over HTTP/HTTPS from my personal weather website and stored locally before being rendered on screen.

UI logic

The software rotates through six pages automatically on a timer, and also supports manual page switching through the button input.

Reliability choices

A few design choices were made to make the user experience nicer:

That makes the device feel much more like a real appliance and less like a demo sketch.

Why I Built It

I run weather-related projects and I like having environmental data visible at a glance, but I also like objects that have some charm and it's fun to do.

A plain screen showing numbers works, but a tiny retro “computer” showing weather, forecasts, webcam images, and satellite views is much more fun. It becomes both a useful desk display and a conversation piece.

The thing I like most is that it does not just look like an electronics prototype. It feels like a tiny product.

The CRT shape gives it character, the Windows 95-inspired interface is nice, and the live weather / webcam / satellite data gives it a real purpose.

It sits somewhere between:

Possible Future Improvements

There are still a lot of directions this project could go:

Conclusion

This project started as a weather display, but turned into a miniature retro weather terminal with its own personality.

Using an ESP32 CYD, a custom 3D-printed CRT enclosure, live weather data, webcam and satellite images, internal battery power, and a mechanical front-button system, I ended up with a small standalone desktop gadget that feels much more special than a simple screen in a box.

It is practical, fun, and weird in exactly the right way.

If you like retro-inspired embedded projects, weather gadgets, or over-engineered little desk devices, this might be your kind of build.