Balazs' Impressive Handheld Linux Terminal Features an Ortholinear Keyboard and Custom Character Set
"I wanted to build a compact handheld computer to play around with the Linux command line," its creator explains.
Semi-pseudonymous "hobby-hopping person" Balazs has built an impressive portable Linux handheld, featuring a custom ortholinear keyboard and a full-color display with custom character set β primarily designed "to play around with the Linux command line," its creator says.
"I started learning electronics and Python with a Raspberry Pi 4 as a hobby last year and daydreamed a lot about turning the Pi 4 into a handled computer," Balazs explains of the project's origins. "I just couldn't figure it out how to get it compact enough to make it actually comfortable to hold. After some online window-shopping I stumbled upon the NanoPi Neo Air and impulse-bought it without knowing what to do with it."
While the lack of display output on the NanoPi Neo Air, a compact single-board computer featuring the Allwinner H3 system-on-chip with a quad-core Arm Cortex-A7 CPU running at up to 1.2GHz and 512MB of DDR3 memory, proved an initial challenge, Balazs figured out a workaround: a Raspberry Pi Pico microcontroller board, acting as a serial terminal and driving a color display over the SPI bus.
"[I wanted] to turn it from a conglomerate of protoboards into an actual custom PCB, so I started learning KiCad," Balazs continues. "I avoided SMD [Surface-Mount Device] components, because I never tried SMD soldering before. The 71 switches and 71 diodes [for the keyboard] seemed a little too steep as a start. Instead I got myself a decent precision side cutter to carefully cut the pins as short as possible after soldering. This went actually a lot better than I expected."
"The last [piece] of the puzzle," Balazs adds, "was getting non-ASCII characters on the screen. Fortunately the RA8875 [display controller] has a CGRAM [Character Graphics RAM] to store custom bitmaps, so I started to create bitmaps for a little extra Unicode coverage. Braille was straightforward, I could generate the bitmaps with a Python script. I ended up hand-drawing the rest in a text document and converting them to a C array using Python."
The result is a compact single-board computer with a 100-column 30-line display, running a Linux terminal β "perfectly usable," Balazs says, "[but] not particularly fast" β with Wi-Fi connectivity, a real-time clock, two USB 2.0 ports and 24 general-purpose input/output (GPIO) pins for expansion, and a 10Ah battery good for a solid 15 hours of use.
"The back panel could be replaced with a custom PCB connecting to the GPIO of the NanoPi," Balazs notes of potential future plans, "to add more features."
A full project write-up, parts list, firmware, and the KiCad project files for the PCB are available on Balazs' Hackaday.io page under an unspecified open source license.