TinTTY v1: fun-sized terminal emulator on 8-bit Arduino

See also: next iteration of this project, using a larger touch-enabled screen.

I decided to build a VT100-compatible terminal emulator (it’s the command-line console window but in hardware, like in the old days) using modern parts such as the Arduino and make it as tiny as I can. The screen is a one-inch-square TFT based on the ILI9163C chipset – maybe too tiny. Could be a wearable wrist device for badass cyberpunk hackers!

Project documentation on Hackaday.io.

This project ended up requiring nontrivial programming effort – a VT100 command parser and renderer to drive the screen, which I tried to write in a tidy, clear and extensible way.

In addition, I wanted to try fun techniques like sub-pixel rendering to show more text on screen: currently, the 128 pixel screen can technically fit up to 64 characters across (2 pixels per character!). Unfortunately, it was just not readable, even for any sort of fun use case.

More Details

The TinTTY hardware setup is simple:

  • Arduino Uno
  • TFT screen (1in x 1in ILI9163C), connected via SPI
  • USB Host Shield, connected via SPI
  • cheap mini 2.4GHz wireless USB keyboard

The input device, by its nature, cannot be too miniature, otherwise it becomes too annoying to type! However, everything else should basically fit onto some sort of wearable wristband or inside a cute tin container. The separate wireless keyboard helps keep the hardware tidy and self-contained.

Original stretch goals:

  • explore different keyboard connection approaches
  • Lego enclosure?
  • wearable form factor?
  • glasses mount?

All the code is open source, and I plan to keep the core reusable parser and display portions separate and reusable for different hardware/input combinations.