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.
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.
touch display
video from microSD
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.
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.
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.