To entertain the people in the waiting room of a dental surgery, the dentist bought a wall-mounted Full HD TV with integrated DVD player to show some pictures and videos. Unfortunately, the DVD player had no repeat function, so one of the assistants had to press play on the remote control a few times every day. As the dentist also wanted to change the pictures from time to time anyway - in order to show new offerings - I proposed to use a small embedded computer instead. As I was experimenting with some Raspberry Pis anyway, I started to build a system with such a device.
As the assistants wanted a simple system that can be started and stopped by inserting or pulling the power plug, I could not connect the Raspberry Pi directly to the power grid as I wanted the device to cleanly shutdown in order to avoid corruption of the updatable root filesystem. Triggering a shutdown based on CEC events over HDMI was also not an option as the TV did not send such events. Instead, I found a uninterruptible power supply for a Raspberry Pi from www.pimodules.com. The Pico UPS is equipped with a 300 mAh battery and provides, among others, also additional LEDs, buttons and a buzzer. A great feature is that it hooks itself into the RPis power circuit by simply connecting it to the GPIO bar. So no additional power connection is necessary: the UPS is charged by the RPi under normal conditions and it powers the RPi if there is no connection to the power grid anymore.
At first, I wanted to power the RPi and the UPS directly from the TV's USB port to save one power socket. This way, the final system always worked for a few hours but unfortunately, under some conditions the RPi required more power for some time than the TV and the UPS could provide. Hence, I bought a power strip with integrated USB charger from Allocacoc with two USB ports providing 2.1A in order to save space behind the TV and an additional power socket. To house the system, I bought a case from ModMyPi which offers enough space for the RPi and the UPS by default - the space can also be extended by additional spacers - and which can be locked to secure the SD card and the RPi's ports. To connect the case to the TV, a VESA compatible mounting similar to the one in this product with the right size for your TV is also required. This setup is not theft-proof enough for public places but one needs more than a few seconds to demount the parts which is enough for this project.
On the software side, most solutions to show standalone presentations are based on browser engines. For this device, I wanted something lighter and developed a Qt+QML application called qante which is also available on Github. QML also offers a browser engine to display web sites but this feature is optional which might become handy on such small devices. As operating system I used my RPiBuntu image with the enabled VC4 opensource graphics driver instead of the original proprietary driver.