I was led to realize this project by the need to replace my old Sony Dream Machine radio alarm clock. It turned out that despite the large number of products of this kind on the market, their reproduction quality and control method did not meet my needs.
And so this project was born.
Basic Requirements:
Simple operation and settings, the possibility of remote control, preferably via a mobile phone.
The possibility of higher quality music reproduction (HiFi and the ability to play files with lossless FLAC compression).
Local music files: Playing music from a USB stick or SD card.
Large display and the ability to automatically control brightness intensity.
The possibility to display additional information like date, temperature...
Quick controls: Volume and basic playback control (play/pause, skip)
Proposed Solution:
To meet the basic requirements, the choice fell on using Volumio OS; I rejected MoodeAudio due to worse hardware portability. VolumioOS runs reliably and OS images are available for Ondroid, ZeroPi, BananaPI, Raspberry... This is a great advantage because it eliminates the arduous and lengthy process of compiling source code. Since I required high-quality music reproduction, the choice fell on the I2C audio module HifiBerry Amp. A Raspberry Pi 3B+ was also found in the drawer, for which I had no other immediate use, and for digitally controlled volume adjustment, no other use was considered except for the KY-040 encoder. To avoid experimenting with light sensing, the choice fell on the ready-made VEML7700 module, which ensures the sampling of ambient light and conversion to digital form. The nightmare, in home conditions, is always the realization of the case and mechanical modifications. For this reason, I chose a plastic ABS case, which is easy to work with and has a decent appearance, allowing it to be placed in a visible spot in the bedroom. From old stock, I also pulled out a 7" LCD DSI display for Raspberry, which turned out to be a good choice.
Hardware :
-raspberry pi 3b+
-7" LCD display via DPI OFI009
-HifiBerry AMP2
-Case G17083UBK Gainta
-24V Power Supply ZDR1231
-Rotary Encoder KY-040
-Speaker Connector VG09103
-16-bit I2C Ambient Light Sensor Module VEML7700 P/N: BH-014PA
-Power Connector with Switch and Fuse KAB2423
The 230V power input is through an IEC connector with a switch and fuse KAB2423. ZDR1231 is a switched-mode stabilized 24V 100W power supply. The Raspberry Pi 3B+ module is mounted on the metal frame of the display, and the HAT HifiBerry AMP2+ is stacked on top of it via the 40-pin connector. The HifiBerry AMP2+ amplifier board also has a terminal block for connecting power and speakers. The maximum allowable supply voltage for the module is 24V! I used a 100W power supply, so there is sufficient power reserve for the amplifier. The amplifier board has an integrated 5V switched-mode power supply for the control part; this voltage is output to the 40-pin connector, through which the amplifier is connected to the Raspberry Pi microcomputer, and its power is sufficient for reliably powering the microcomputer. The VEML7700 external light sensor is connected to the microcomputer via connector X3, used to control the display backlight depending on the ambient light. The algorithm is controlled by a plugin. A rotary encoder KY-040 with a switch is connected to the microcomputer via connector X2, through which the volume and basic player functions (play, stop, repeat) are controlled, as defined by the Rotary Encoder II plugin.
Software:
- Volumio-3.832-2025-07-26-pi
- Plugin LCD Backlight for Volumio
- Other plugins according to your needs (AutoStart, Rotary Encoder II, Now Playing, Touch screen ...)
Installation:
-
Using Balena Etcher, I installed Volumio-3.832-2025-07-26-pi.zip on the SD card
-
During the first boot, I changed the contents of /etc/apt/source.list:
deb http://archive.raspbian.org/raspbian/ buster main contrib non-free rpi -
I configured Volumio and installed plugins like Touch display, AutoStart ...
-
I enabled SSH via http:/volumioIP/dev
-
I installed and configured the Now Playing plugin
-
In the Touch Display plugin, it is necessary to disable sleep mode
- I set the plugin as follows:

-
I connected the VEML7700 light sensor to the I2C bus and the command
i2cdetect -Y 1displays it at address 10h
- I installed the LCD Backlight plugin according to the instructions.
Mechanical Layout:
I placed all the electronic parts into a 19" plastic case. The mechanical layout presents no risks and the necessary holes can be easily made. The internal arrangement is clear from the following picture.
The power supply is secured with two M3 screws to the bottom part of the case. The volume control is mounted directly on the front panel. Originally, I mounted it on a separate holder, secured behind the front panel, but this solution did not prove successful due to the insufficient rigidity of the case. Because of flexing when pushing the controller, the switching was unreliable and uncomfortable. I mounted the Raspberry Pi and amplifier module boards directly onto the metal base of the display, which is designed for this, and the spacing between the modules is defined by M2.5 standoffs. The entire assembly of the display, amplifier, and microcomputer modules is mounted on plastic holders fixed to the bottom of the case with M3 screws. The display module is inserted through an opening in the front panel. One of the holders is adapted for mounting the VEML7700 module for ambient light sensing. In the location of the VEML7700 module's sensor chip, I scraped off the paint on the front display glass so that light from the room can reach the VEML7700 chip. The VEML7700 module is on the right, when viewed from the front. Practical experience with using the device showed that it would be better to place the sensor on the left, so it is not shaded by the hand when controlling the volume and display, but I did not correct this minor shortcoming because I already had the hole in the front panel and the scraped-off paint on the front display glass to allow light to reach the VEML7700 module sensor. The holders, control knob, and case feet, as well as the side panel couplings, which I used to replace the supplied 19" RACK handles, were printed on a 3D printer from black ABS (the same material as the industrial case). In the download section, drawings and STL files for printing the necessary parts are available.
Summary:
Not all features are listed in this article, nor did I perform audio measurements (I rely on the manufacturer's measurements of the audio module), as that was not the goal. The aim was to create a device that is primarily simple to operate, with reliable and pleasant waking. The key added value is brought by the VEML7700 sensor for automatic brightness, which increases comfort of use in various lighting conditions. The HiFiBerry AMP2+ ensures that the sound is high quality and sufficiently powerful. Such a radio alarm clock is a great combined device for a modern bedroom or living room, replacing a classic alarm clock and also providing high-quality sound for listening to music from a wide variety of sources. A great advantage is also the possibility of complete, full-featured control from a mobile phone, tablet, or any other device with an internet browser.


