6240

I wanted a weather clock that would look good on my desk, show me the information I actually care about, and let my family leave messages for each other. My original version used a Raspberry Pi, but I've since rebuilt it around the ESP32-P4 and a 3.4-inch round touchscreen. The result is a compact, Wi-Fi-connected clock with an analog or digital face, weather forecasts, household messaging, and a setup process that runs entirely on the device. You can even install the firmware directly from your browser.

Round Weather Clock: A Touchscreen Weather Station Powered by the ESP32-P4


I've built several different weather displays over the years, and they all started with roughly the same problem: I want to know what time it is, what the weather is doing, and what to expect over the next few days. I also want something that looks like it belongs on my desk or nightstand, rather than a computer screen running a weather dashboard.

My original Round Weather Clock used a Raspberry Pi and a round HDMI touchscreen. It worked well, but I started wondering if I could get the same experience from something smaller, cheaper to build, and easier for other people to set up.

That's where the ESP32-P4 came in.


The hardware

The new clock is built around the Waveshare ESP32-P4-WIFI6-Touch-LCD-3.4C, which combines an ESP32-P4, wireless connectivity, and a 3.4-inch, 800 × 800 capacitive touchscreen.

The display, controller, and Wi-Fi hardware come together in one unit, which makes assembling the clock considerably simpler. There's no HDMI cable to hide, no SD card to configure, and no separate computer running an operating system behind the screen. Once assembled, the clock just needs USB-C power and a Wi-Fi connection.

I also designed two different enclosures for it. The Pebble is a compact, rounded 3D-printed case that sits on a desk or nightstand, while the Classic has a more traditional alarm-clock-inspired design. I also make the Classic in wood using my desktop CNC.


Making a round display useful

An 800 × 800 round touchscreen presents some interesting interface challenges. You have a generous amount of screen real estate in the middle, but everything near the corners of a traditional square interface would be missing.

The main screen combines an analog or digital clock with the current weather. Swiping between screens brings up a five-day forecast or any messages someone has left for you.

The clock gets its weather information from Open-Meteo, so there's no API key or paid weather service to configure. It also tries to make the forecast more useful by choosing weather icons based on the conditions expected throughout the day, rather than relying on a single forecast code that might represent only a brief period of bad weather.

There's an optional red night mode for use in a bedroom, along with a small indicator when weather information becomes outdated.


A clock that can take messages

One of my favorite features is something I added for my own household: the ability to send messages to the clock from a phone or computer.

The ESP32-P4 hosts a local webpage on your home network. Open it in a browser, write a message, and it appears on the clock. An unread message is indicated on the clock face, and the recipient can swipe over to read it.

Multiple clocks can also share messages, even if some are running the original Raspberry Pi version and others use the ESP32-P4. You can give each clock a room name and choose where your message should go.


Software and installation

The ESP32-P4 firmware is written using ESP-IDF and LVGL, with separate components handling the interface, Wi-Fi, weather updates, time synchronization, and messaging.

I wanted this version to be something anyone comfortable assembling a simple electronics kit could use. You don't have to install a development environment, compile the firmware, or open a terminal to get started.

Instead, connect the Waveshare board to your computer with a USB-C data cable, open the project's web installer, and install the firmware directly from your browser.

When the clock first starts, its touchscreen walks you through connecting to Wi-Fi, selecting your location, and choosing your preferences. After that, it automatically retrieves the time and weather and starts up on its own whenever power is connected.

For anyone who wants to modify the project, the complete firmware and build instructions are available on GitHub.


Build your own

The project is open source, and I've made the installation process as straightforward as possible. You'll need the Waveshare ESP32-P4 round touchscreen board, a USB-C cable, and an enclosure.

The Pebble enclosure is available as a free 3D-printable model on MakerWorld. If you'd prefer the Classic design, I also offer its STEP files for anyone who wants to print it or modify the enclosure for their own project.

Project source code and build instructions:
https://github.com/Canterrain/round-weather-display

More about my projects:
https://anoraker.com

Designed by Josh Hendrickson, host of the Anoraker YouTube channel.