Wednesday, September 9, 2026

Video Alarm Clock: Wake Up to Your Own Videos on an ESP32-P4

ESP32-P4 · DIY bedside project
Wake up to a video, not a beep
A 720×720 touchscreen alarm clock that plays your own videos from microSD — built around a Waveshare ESP32-P4 board.

A normal alarm clock wakes you with a sound. I wanted something a little more personal: a bedside clock that could start the day with a favourite music video, a family recording, holiday footage, or anything else I choose.

That idea became Video Alarm Clock, my latest ESP32-P4 project. It is a complete standalone clock with a 720×720 touch display, built-in speaker, alarms that survive a power cut, Wi-Fi time synchronisation and over-the-air firmware updates.

Video Alarm Clock showing its main clock face
The clock face on the 720×720 ESP32-P4 touchscreen.

The hardware

The project runs on the Waveshare ESP32-P4-WIFI6-Touch-LCD-4B. It combines an ESP32-P4, a square MIPI-DSI touchscreen, touch controller, audio codec, speaker, 32 MB of flash and 32 MB of PSRAM on one board. A microSD card holds the videos, while a small 3D-printed stand turns the development board into something that sits naturally on a bedside table.

720×720
touch display
Local playback
video from microSD
Built-in audio
speaker and volume control

What it does

  • Multiple repeating alarms — choose the time, weekdays and video for each alarm.
  • Snooze and alarm-off controls — large touch buttons, plus volume and brightness controls while the alarm is playing.
  • Power-cut-safe storage — alarms remain saved when power is removed.
  • Automatic time setting — Wi-Fi and NTP keep the clock accurate, although it can also run offline using its RTC.
  • On-device media management — the Media screen temporarily opens an FTP upload service so converted videos can be sent straight to the clock.
  • Safe OTA updates — updates are started manually from the About screen, with automatic rollback if a new version fails to boot.
Video Alarm Clock alarm screen with snooze, alarm off, volume and brightness controls
The alarm screen keeps the important controls large and obvious.

Getting video onto a small device

The ESP32-P4 is much more capable than earlier ESP32 chips, but it is still not a desktop computer. The player therefore uses one predictable media format: 720×720 MJPEG video with 44.1 kHz PCM stereo audio in an AVI container.

The repository includes a videoclock conversion tool. Give it a local video file, and it converts the source to the correct format. Add the clock’s IP address and it uploads the result directly. The media server only runs while the Media screen is open, so it is not quietly exposing an FTP service all day.

./videoclock holiday.mov wakeup.avi 192.168.0.201

From bare board to bedside clock

I also designed a simple 15° stand for the display. The repository contains both the printable STL and the OpenSCAD source. It prints flat without supports and can be modified easily. The stand is released into the public domain under CC0; the firmware and supporting tools are free for non-commercial use.

See it running

Both short videos below show an alarm going off and the clock playing the selected video.

Build your own

The GitHub repository contains the firmware binaries, a browser-based installer, terminal flashing scripts, the video conversion and upload tools, the printable stand, and full setup instructions. After the first flash, future firmware releases can be installed over Wi-Fi from the clock itself.