"Smart Clock" Display

I wold like to build myself a streaming alarm clock with a Raspberry Pi. Similar to

but for use as an alarm. I have managed to have my RPi wake me in the morning using MPD (the Music Player Daemon) and a Python script run from cron, but am now looking for a suitable display for the “clock” part of the project.

I am after a display that:

  • Can display arbitrary text (what playlist/station is playing)
  • Is clear and easy to read in daylight
  • Emits no light whatsoever by default at night
  • Can be dimly illuminated if I want to check the time at night

I have looked through the RPi displays and aren’t at all sure what would suit this.

Is there a display available that can do this?

Many thanks,
Ian.

Hi Ian,

Interesting project. First off:

  1. Can display arbitrary text (what playlist/station is playing) - a HDMI display should be fine for this, you’d just need to use TKinter or your preference of GUI library to display that info, even running a web app locally with Flask or Django to output that info and then displaying a full screen browser (personally I like how easy Firefox ESR is to launch in kiosk mode for this)

  2. Is clear and easy to read in daylight - Hm, that’s going to depend on the display. Something with a decent backlight would help, the waveshare 7" display comes to mind, although you likely won’t need touchscreen I’d imagine, although maybe you can work this in with a touchscreen dimmer

  1. You can use vcgencmd to disable the HDMI output on a cron job to essentially turn the display off to emit no light at certain times, I actually used this trick myself for setting up some of the displays we’ve got around the warehouse with stock, personnel, and similar info. Should be as simple as calling this once installed:
sudo vcgencmd display_power 0
sudo vcgencmd display_power 1
  1. Can be dimly illuminated if I want to check the time at night - If you go with the in-browser approach, this should be as simple as changing the CSS. You can just have a mask layer in a <div> at the highest level with display: absolute; and some other properties set like width: 100vw; height: 100vh; along with a background-colour: rgb(0,0,0); and then just change the opacity: 60%;. If you’re in kiosk mode, this is basically just giving you full control of the pixels in the display (exc. the backlight if enabled), similar solutions should exist for other GUI options, or instead you can use:

xrandr from this package: sudo apt install x11-xserver-utils, like this xrandr --output your_display_output --brightness 0.6

Wow, thanks @Bryce. I hadn’t considered the full-screen browser approach but will have a play around. This method even lets me try it out on a monitor before investing in a dedicated display.

Hi Ian,
I’m also (slowly) developing a bit of a multi-functional clock / display. If you are interested in full HDMI displays, then there’s also this: 7.9 inch capacitive touch screen. The wide screen gives it a bit more of a traditional bedside clock radio look, if you want it.
The main reason I went this way was for the capacitive touch screen, so once set up there is no mouse, keyboard or any other buttons.
An idea.
Cheers, Dave

This AMOLED screen is also good. It is wall mountable: Waveshare 5.5 Inch AMOLED Screen for Raspberry Pi - Video Tutorial Australia

I love this idea! The wide-screen looks to be the perfect size for a clock-radio.

Thanks for the suggestion, @David173576

Another fantastic suggestion, thanks @Rooppoor212784

I think the display I choose will ultimately depend on what suits the enclosure, when I come to that step :slight_smile:

Welcome. Yeah. Actually, you can go both ways. You can choose the enclosure first and select your display accordingly. Or, you can choose the display first and then design and 3D print the enclosure.

I haven’t dipped my toe into the 3D printing waters yet, perhaps it’s time I gave it a go.

I’ve bought a character display and a 7-segement display to play around with and get me started. Once I have something I’m happy with I’ll look at moving to the touch-screen.

If considering the 7.9 inch widescreen, the screen is a bit bigger than a conventional clock-radio but in the right proportions.
It is easy to set up, details from Waveshare to rotate the screen and calibrate the touch / mouse pointer are easy enough - changes to a couple of text-based config files.

One trick with the Raspberry Pi OS was the menus in the GUI and pop-up to change configuration were too tall to fit on the rotated screen (400 pixels). So again, just a couple of minutes to tweak the text files.

I’m running mine off a Pi 3A, which needed a small USB cable to connect to the screen (USB with data for pointer). The screen comes with an adapter to suit the model 4 sized Pi.
Because I’m not drawing much power, the display is powered from the Pi without a separate cable.

Good luck. Dave