HandiPi Is a Raspberry Pi 4-Powered Cyberdeck with a Custom Keyboard and Screen
This feature-rich cyberdeck is a full computer system that can run for up to four hours on its battery.
A source of inspiration
The PICOomputer PCB made by Peter "Bobricius" Misenko is a carrier board that allows for a Raspberry Pi Pico to be attached to a screen and keyboard. This setup lets users create fun, interactive applications for the Picos that might otherwise be difficult to assemble. Partly inspired by this product, GitHub user brickbots wanted to design a carrier board of his own after realizing that simply placing a Raspberry Pi 4 into a case would be far too boring. In addition to adding a built-in keyboard, this project, called the HandiPi, was developed with desktop use in mind as an external keyboard, mouse, and monitor could be easily connected.
An overview
With the goal now clearly defined, brickbots played around with a couple of different layouts, but the one he settled upon strongly resembles a Nintendo Game Boy handheld console. At the top is a 4.3" touchscreen display, which eliminates the need for a mouse or trackpad. Below this is a custom 36-key keyboard that includes a 5-way directional button for making precise selections. Last of all, a 5000mAh battery pack provides enough power for several hours of portable use.
Creating the tiny keyboard
The layout of the keyboard was very important since it greatly determines how usable the device is. This version of the HandiPi features a 4x12 ortho-style keyboard that can be built using all through-hole components, which lets relative beginners make one for themselves. Reading these inputs is an ATmega328 DIP IC running a version of QMK firmware. QMK is a flexible software projects that can run on a variety of AVR and Arm-based chips while outputting characters over a virtual USB interface. The last part of the keyboard was an additional PCB with cutouts for every button so that it can act as a faceplate and hide the underlying circuitry.
Adding the PiSugar 2 Pro
Because battery management is difficult, let alone trying to design a BMS from scratch, brickbots opted to use a PiSugar 2 Pro module. It works like many other Raspberry Pi HATS in that it easily attaches to the board while having nearly identical dimensions along with its battery. Furthermore, it supports uninterruptible power supply (UPS) functionality as it can maintain constant power to the Pi even when the external power source is disconnected. However, due to the height of the board, the original battery socket was removed in favor of two large wires. The tiny power switch was also replaced by a larger external one as well.
Assembly
The entirely 3D-printed protective case comes in three primary sections. Nearly everything mounts to the middle as it contains several M2 heat inserts for attaching the keyboard and screen. The underside of the screen is designed for a Raspberry Pi B's footprint, so brickbots added the PiSugar 2 Pro, stacked the Raspberry Pi 4 on top, and connected the CSI ribbon cable. One final modification was performed on the Pi, which involved desoldering the tall Ethernet and USB ports in favor of directly attaching the keyboard with a few wires. Finally, a heatsink was added on the back for passive cooling and the final plastic bezels were screwed onto the front.
The operating system
Making all of this hardware function correctly is a normal installation of Debian-derived Raspberry Pi OS. However, the typical window manager was replaced with i3 because of its great compatibility with lightweight machines and with how well it performs using just a keyboard. More advanced functions such as moving focus, maximizing/minimizing windows, and switching desktops are performed by toggling a modification key and then pressing either h
, j
, k
, or l
.
Using the HandiPi
The HandiPi is meant to be used as a normal desktop computer under most circumstances, owing to its HDMI and USB ports. But when the need arises for a highly portable minicomputer, it can be quickly disconnected and utilized in a variety of applications. You can read more about this project here in brickbots's GitHub repository.