This device is a serial terminal based on the RP2040 microcontroller. The NanoPi NEO Air is connected over UART to the RP2040. The display is a Sharp memory in pixel LCD display connected over SPI. Although the datasheet specifies a 1 MHz clock frequency, visual artefacts appear only at 8 MHz. To improve framerate, the RP2040 drives the screen at 6 MHz .
The battery can be charged over the USB-C connector, which can also be used to program the RP2040 in bootsel mode. The maximum battery charging current is configured at 1A, maximum voltage at 4.2V, minimum voltage at 3V. An ADC pin of the RP2040 is connected to the battery using a voltage divider. An RGB led gives feedback about the battery state. With WIFI turned off idle battery time is over 5 hours using a 1100mAh LiPo battery.
A 3.5mm headphone and a USB-A connector are available to use with the NanoPi NEO Air. A DM3231MZ real time clock is connected over I2C to the SBC. The board has a CR1216 coin cell holder.
The display has a 400x240 pixel resolution and it displays text with a 5x10 Pixel font providing 80 columns and 24 lines. The fontmaker.py tool provided with the source code was written in order to conveniently create the custom font. It saves the font directly as a c compatible array. The terminal supports normal and bold ASCII characters, Latin-1 supplement, box- and block-drawing character sets.
The keyboard buttons are made of 2 3d-printed parts and are held in place by slots in the front PCB. I used a Monoprice Mini Delta 2 to print the buttons. It required a lot of tweaking and experimenting to get usable results. The provided FreeCAD models might need adjustments with a different printer. The labels were printed with a Canon Selphy CP1300. The 3 PCBs and the NanoPi are held together by soldered-on brass standoffs and screws.
The RP2040 pin configuration is on the inside of the back PCB.
HaLiTerm mini is marked with CC0 1.0. To view a copy of this license, visit https://creativecommons.org/publicdomain/zero/1.0/
Looks neat; what would this be used for?