Close
0%
0%

Round Weather Clock

One round weather clock, two brains: Raspberry Pi or ESP32-P4, with touch controls, forecasts, messages, and custom enclosures.

Similar projects worth following
0 followers
I wanted a weather clock that felt like an actual appliance instead of a dashboard running on a computer. It shows the time, current weather and a five-day forecast on a 3.4-inch round touchscreen, with analog and digital clock faces and a local webpage for household messages.
There are two versions of the same project. The original runs on a Raspberry Pi with a web-based interface and round HDMI touchscreen. The newer version runs directly on a Waveshare ESP32-P4 display and recreates the interface in LVGL. Both share the same core features and can even exchange messages with each other.
The fun part has been making the same product work on two very different platforms, from solving round-screen geometry to rebuilding the UI in LVGL and making the ESP32-P4 version installable straight from a browser.
That keeps the strongest Hackaday hooks and drops the generic “code/build instructions available” sentence, which can live elsewhere on the project page.

Overview

The Round Weather Clock is a 3.4-inch round touchscreen clock that shows the time, current weather, and a five-day forecast. It has both analog and digital clock faces, touchscreen navigation, a dim red night mode, and a local webpage that can be used to leave messages on the clock.

There are two versions of the project. The original runs on a Raspberry Pi with a round HDMI touchscreen and a web-based interface. The newer version runs directly on a Waveshare ESP32-P4-WIFI6-Touch-LCD-3.4C and recreates the interface in LVGL. The goal has been to keep the two versions as close as possible in features and behavior even though the software underneath them is very different.

Raspberry Pi version

The Raspberry Pi version was the original build. It works with a Pi Zero 2 W, Pi 4, or Pi 5 and a 3.4-inch round HDMI touchscreen. The interface is built with web technologies, which made it fairly easy to experiment with layouts, weather icons, gestures, and new screens.

The downside is that there are quite a few pieces involved. You need the Pi, display, SD card, HDMI connection, USB connection, and power. It works well, but it is more hardware than I really wanted inside a small clock.

ESP32-P4 version

The ESP32-P4 version uses the Waveshare 3.4-inch round board, which combines the processor, Wi-Fi, touchscreen, and 800×800 display in one unit. That makes the physical build much simpler, and it also ends up cheaper than building the Raspberry Pi version.

The tradeoff is the software. The Raspberry Pi interface runs in a browser, while the ESP32-P4 version is written with ESP-IDF and LVGL. I couldn’t just move the existing interface over. The clock faces, forecast screen, gestures, setup screens, and message UI all had to be rebuilt for LVGL.

The ESP32-P4 version can be installed directly from a browser, so someone building the clock doesn’t need to set up ESP-IDF just to get started. After flashing, Wi-Fi and the clock settings are configured on the touchscreen.

Interface and weather

Both versions use the same general layout and behavior. The main screen can show either an analog or digital clock along with the current conditions. Swiping brings up a five-day forecast or the message screen.

The round display caused some problems of its own. Even though the panel is 800×800, the useful space obviously isn’t an 800×800 square, and the visible edge of the real display didn’t line up perfectly with some of my early assumptions. I had already worked through that problem on the Raspberry Pi version, and then had to reproduce the same usable geometry in LVGL.

Weather data comes from Open-Meteo, so there’s no API key required. I also added some logic around the forecast icons because I didn’t like seeing an entire day represented as thunderstorms just because storms were possible for a small part of it. The clock looks at conditions across the daytime hours and picks something that better represents most of the day.

Messages

The clocks also have a local household message system. From another device on the same network, you can open a webpage and send a message to the clock.

If there are multiple clocks, they can share messages. Each clock gets a room name, and the Raspberry Pi and ESP32-P4 versions can both participate in the same system. That was one of the things I specifically wanted to preserve when I started the ESP32 rewrite.

Cases

I’ve made a couple of different enclosures for the project. The Pebble is a rounded 3D-printed case, while the Classic has more of a traditional alarm clock shape. I’ve also made the Classic from wood on my CNC.

The free Pebble model is available on MakerWorld.

Source and build links

GitHub: https://github.com/Canterrain/round-weather-display

ESP32-P4 browser installer: https://canterrain.github.io/round-weather-display/

Pebble case: https://makerworld.com/en/models/3274860-smart-round-weather-clock-pebble-style-case

  • 1 × Waveshare ESP32-P4-WIFI6-Touch-LCD-3.4C For ESP32 build
  • 1 × USB-C Cable For ESP32 Build
  • 1 × Enclosure 3d printed
  • 1 × Waveshare 3.4-inch round HDMI display, For Raspberry Pi build
  • 1 × Raspberry Pi Zero 2 W For Raspberry Pi Build

View all 10 components

  • 1
    Step 1

    Build Instructions

    Full instructions for both versions of the Round Weather Clock are kept on GitHub, where I can keep them up to date as the project changes:

    https://github.com/Canterrain/round-weather-display

    There are two ways to build the clock: a Raspberry Pi version and an ESP32-P4 version. They use the same basic interface and features, but the hardware and setup process are different.

    ESP32-P4 version

    The ESP32-P4 version is the simpler and cheaper build. It uses the Waveshare ESP32-P4-WIFI6-Touch-LCD-3.4C, which combines the processor, wireless hardware, touchscreen, and 800×800 round display in one unit.

    1. Print or make an enclosure for the display. The Pebble case is available free on MakerWorld, and the Classic case is another option if you prefer that style.
    2. Install the display into the enclosure and connect it to your computer with a USB-C data cable.
    3. Open the browser installer:

      https://canterrain.github.io/round-weather-display/

    4. Connect to the board and install the Round Weather Clock firmware.
    5. After the board restarts, use the touchscreen setup screen to connect to Wi-Fi, choose your location, select Fahrenheit or Celsius, choose 12- or 24-hour time, and set your clock preferences.
    6. Once setup is complete, the clock will start automatically whenever it is powered on.

    The browser installer is the easiest way to build the ESP32-P4 version. If you want to modify the firmware or build it yourself, the source and ESP-IDF setup instructions are in the GitHub repository.

    Raspberry Pi version

    The Raspberry Pi version uses a Raspberry Pi Zero 2 W, Pi 4, or Pi 5 with a 3.4-inch round HDMI touchscreen. The Zero 2 W is my preferred option because it keeps the build smaller.

    1. Install Raspberry Pi OS 64-bit on a microSD card and connect the Pi to your network.
    2. Connect the round display to the Pi using the appropriate HDMI and USB connections for your Raspberry Pi model.
    3. Open a terminal on the Pi, or connect over SSH, and download the installer:
    wget https://raw.githubusercontent.com/Canterrain/round-weather-display/main/setup.sh
    1. Run the installer:
    bash setup.sh
    1. Choose the Raspberry Pi setup when prompted. The installer will walk you through your location, room name, clock face, temperature units, message settings, and night mode options.
    2. When the installer finishes, reboot:
    sudo reboot

    The clock should start automatically after the Pi boots.

    Using the clock

    Both versions support the same basic controls. You can switch between the analog and digital clock faces, swipe to the five-day forecast, or open the message screen. Swiping down from the top edge opens the setup screen on the ESP32-P4 version or the Wi-Fi controls on the Raspberry Pi version.

    You can also leave messages on the clock from another device on the same network. The Raspberry Pi version uses a local web address based on its hostname, while the ESP32-P4 version hosts its own local message page. Multiple clocks can share messages, including a mix of Raspberry Pi and ESP32-P4 builds.

    For the current setup steps, enclosure links, troubleshooting, and development instructions, use the GitHub repository:

    https://github.com/Canterrain/round-weather-display

View all instructions

Enjoy this project?

Share

Discussions

Does this project spark your interest?

Become a member to follow this project and never miss any updates