I’ve been working for a while on a project that requires very small, very high resolution display screens. Namely, a scratchbuilt miniature of the EVA pod from the film 2001: a Space Odyssey. The pod had a set of six animated displays inside the cockpit. When Kubrick shot the movie, in the mid 1960s, computer graphics didn’t exist, let alone flat panel screens. So he used animations displayed using 16mm film projectors.
The pod cockpit as seen in the movie.
But how to reproduce these displays in model form? I don’t want boring static backlit transparencies. Well, fortunately for me we live in a digital age of microcomputers and everything. And tiny video screens are now ubiquitous.
So I started a multi-year research program as to how I could get animations to work on a super high-resolution miniature screen.
And while I focus here on my 2001 miniature, very small screens like this can be useful for all sorts of model-making applications – hobby and professional. You could make TV sets for a doll house, screens and displays for all kinds of diorama situations, small interactive readouts for simulated space helmets, and so on.
Here’s a quick X-wing computer test on a lower-resolution but delightfully tiny Lilygo T-QT. Pew pew pew!
For my project I wanted tiny digital screens matching the following criteria:
Active area (the part of the display that actually shows pixels) of 19mm × 45mm or so
Minimal circuitry and framing around the display. I need illuminated buttons really close to the screens - see the movie screenshot up top
Very high-rez image, so individual pixels can’t be discerned
Excellent off-axis viewing (you’ll notice that the four side displays there are angled at two axes)
Totally black when not showing pixels; no faintly glowing pale blue backlight
Bright colours
Smooth; non-patchy illumination
Capable of playing either animated GIF files or videos
Decent refresh rate, so no flicker to either the eye or a video camera
Instant loading of each frame of animation
Affordable
Over the years I’ve tried many different things, but all have all been kind of dissatisfying. Small displays for microcontrollers tend to be pretty low resolution, and a lot of TFT displays lose a ton of contrast and look blue-grey and awful when viewed off-centre. I evaluated dozens of microcontroller boards and LCDs (see the list at the end of this page)
But in early 2023 a product came on the market that finally met my requirements!
This hardware from Lilygo, a small Chinese manufacturer of microcontroller boards, is excellent. Its integrated screen is fantastic; the best I’ve ever seen on a microcontroller. A big improvement over your typical pixellated and washed-out TFT LCD.
A little proof of concept with animated GIFs running on the Lilygo board. The pictures of the displays are offset on the screen intentionally.
The display uses AMOLED technology, so each white dot is actually made up of three microscopic LEDs. Unlike LCDs, which backlight the whole screen and then use liquid crystals to block light for black areas, AMOLED screens are simply off where a black pixel is required. This makes them really high-contrast and potentially lower power in operation. They also don’t require sheets of polarizers, making them better for off-axis viewing (ie: looking at the screen from an angle other than straight on).
The main drawbacks are that AMOLED displays tend to have shorter operational lifespans than LCDs - they can burn in and fade over time. And they can also colour-shift subtly when viewed off-axis.
Two boards, showing each side. So this is the whole thing. The larger of the two black squares is the actual ESP32 S3 CPU.
Anyway, the display is almost as high rez as a many a smartphone, and black areas are truly black. It’s an elongated rectangle; a bit of an unusual shape but it perfectly matches my requirements. The display is protected by, and permanently fastened to, a laser-cut acrylic frame.
The board is speedy enough, and uses a tiny ESP32-S3R8 dual-core LX7 microprocessor chip. This is a microcontroller designed by Chinese firm Espressif Systems, manufactured by Taiwanese semiconductor foundry TSMC, and using CPU designs from American software company Cadence/Tensilica. (that’s the modern global world of computing today!)
It has 16MB flash storage (though you may not be able to use all of it for annoying software reasons described later). It has a nice modern USB C port. It also has a ton of interesting features I don’t need, such as onboard 2.4 GHz Wi-Fi with 3D antenna & Bluetooth 5 LE, an antenna socket, two small programmable pushbuttons in addition to a hard reset button, loads of solder pads for additional hardware, a lithium cell socket (cell not included), a STEMMA QT compatible/4-pin JST-SH socket for easy I2C connectivity, and a green SMD LED.
The product isn’t perfect - it demonstrates some tearing at high framerates, and it does not have a microSD card slot - but it’s pretty great on the whole. And it’s really quite affordable – at time of writing about $26 US or £20 UK.
Banding or posterizing, caused by the limited GIF palette, is evident here. I’ll probably rework the graphic to minimize this sort of thing.
The main challenge with the board is software. The Lilygo website is very poor, and doesn't document the board particularly well. So I had to mess around for a while trying to get code to compile on it so I could get my animations to work. This is not an out of the box solution.
Still. I did get it to work eventually, and I’ve made a detailed writeup explaining how it works. If you want to know more about how to get animated GIF software working on a Lilygo T-Display S3 AMOLED, check out the page:
Three variants of Lilygo’s T-Display AMOLED boards. Upper left: the 1.91" T-Display S3 AMOLED board. Right: the 1.47" T-Display AMOLED Lite (with touch). Lower left: the 1.91" T-Display S3 AMOLED touch board. The screens have their protective sheets on them, which is why they look crappy.
A Chinese company named Waveshare have released a clone version of the Lilygo board, but with what appear to be a number of improvements. They’re functionally the same product – elongated rectangular PCBs containing ESP32-S3 microcontroller chips driving a 1.91" AMOLED display with an RM67162 driver. The pricing is also similar.
I haven’t bought one, but from what I can see the obvious changes seem to be:
A machined metal frame, very dark grey or black, is used to protect the delicate display instead of a machined acrylic plastic frame. It definitely looks classier, and I think it looks like it’s a tiny bit thinner around the edges. However, it may not be very useful for many setups since the ribbon cable and connector are exposed on the side, rather than fully enclosing the display assembly.
The buttons aren’t accessible from the front, since the metal frame can’t flex the way the acrylic frame can. Instead the buttons are side-mounted. That could be an issue for some installs.
The addition of a TF slot so you can pop in a tiny memory card. Super handy, and a real omission from the Lilygo products.
A QMI8658 gyroscope, accelerometer, and thermometer chip. I have no use for this, but I but a lot of people will find it invaluable.
Four brass bushings have been added to the board, making it possible to screw it down easily to stuff. I really wish the Lilygo board had these as well.
The Waveshare documentation is a damn sight better than the fairly non-existent Lilygo documentation.
The battery connector is a rather small, and unusual, MX1.25 socket rather than your usual JST socket, which could be a problem.
Like Lilygo there are four versions of the Waveshare board – touch/no touch, and presoldered header blocks/unpopulated unsoldered pins. I think both companies’ boards are currently the same in terms of RAM and storage – 16MB flash and 8MB PSRAM. I believe they use the same AMOLED displays – certainly the stats are identical and they look the same in photos.
In short, if both products had come out at the same time, I’d have gone for the Waveshare board. But as it is I’ve already bought a bunch of the Lilygo boards for my project, and I’m not about to switch. The Waveshare product does look very appealing, though.
The black Waveshare board is like a Darth Vader variant of the Lilygo concept. With, apparently, AI-generated junk art on it.
In case it’s useful for anyone else - here are a bunch of display options that I considered and rejected before settling on this product.
My screen size requirements are for a 1:6 miniature of the 2001: a Space Odyssey space pod cockpit interior. (not the 1:8 Moebius commercial kit of same)
Small computers and HDMI video
Raspberry Pi type computers are capable of driving HDMI monitors, so that was one possibility. However, I couldn’t find much by the way of HDMI monitors that were small enough. The tiniest were 2-3 inches diagonally, with most 5-7 inches.
iPods and toy MP4 players
Later model Apple iPod nano players had video playback. And there are tons of cheap disposable mini video players, often styled after iPod nanos, on the auction market. In theory these could be cannibalized and adapted for use as tiny screens.
Indeed, I've heard that the communicator and tricorder props from Star Trek: Discovery and Star Trek: Strange New Worlds actually use old-skool late-generation iPod nanos inside their shells to play back video.
In practice the actual iPods were discontinued years ago, and most fake cheapies are poorly made, have crappy screens, and designed for specific applications. So, cheap as they are, I didn’t feel like spending ages buying various models in search of one that works and converting it. It is a fun idea, however. I’m sure someone will find this a rich seam to mine.
Adafruit microcontrollers and high-resolution LCDs
Adafruit, an American supplier of electronics for makers, has a number of useful products that seem pretty appropriate for making a working model screen. The company produces a ton of affordable microcontroller boards, supplies free software to work with them, and also carries a bunch of high-resolution screens as well as regular ones.
Unfortunately I couldn’t find any Adafruit products that really worked for this project. The reason is that when I tested it the Adafruit display software wasn’t fast enough. You can show an image on a screen, but instead of instantly appearing on-screen it sort of gradually loads like a lowering window blind. There’s no buffering as it loads the bitmaps over the SPI bus. No video playback either.
This obviously doesn’t look right for the pod EVA screens, since images snapped on-screen instantly as the movie projections looped.
Teensy
The Teensy line of Arduino-compatible microcontrollers is a possibility. There are a number of software packages that allow for a Teensy to output video to colour LCDs. A version of this software package was used to make the creepy moving eyes project published by Adafruit. This code requires the Teensy device since it takes advantage of specific hardware built into that product that allows for the rapid transfer of data to the screen.
Unfortunately the codebase is tied to specific LCD drivers, appears not to be regularly updated, and requires a fair bit of expertise to install and use.
Bare display modules
Here’s a list of commonly available LCD displays, minus any CPU boards.
Side note to microcontroller display sellers: please put useful information about the device you’re selling on your website! For example, many people need to know the precise active area (the actual bit that lights up) of the display and the physical dimensions of the screen.
You won’t believe how many places only list useless stuff like the approximate diagonal of the screen in inches, rather than the actual X-Y dimensions in millimetres! I had to spend ages searching the web for display manufacturer technical PDF documents just to uncover this basic info.
0.66"
13.42 × 10.06mm active area
18.46 × 18.10 mm
64 × 48px
Super low-rez. Way too small.
0.85"
AtomS3, Lilygo T-QT ESP-32-S3
15.2 × 15.2 active
17.6 × 20.1 PCB for raw panel
128 × 128 px
0.11875mm × 0.11875 per pixel
A tiny bit undersized. Okay resolution; glows slightly when viewed off-axis. Both the AtomS3 and Lilygo T-QT are pretty good devices and easy to set up.
Left: the m5stack AtomS3 in its sturdy little case and right: the Lilygo T-QT.
TinyTV 1
25.7 × 22.2mm PCB
20.1 × 13.4mm active area
96 × 64 pixels
Very poor resolution
0.91"
80 × 160 pixels
27 × 16.8mm?
11.5 × 20mm active area
Low rez, too small
0.96"
24 × 30mm PCB
11 × 22mm active area
80 × 160 pixels
Doesn’t cover whole screen; crap resolution
1.1" round
No good; doesn't fit anyway.
1.14"
135 × 240 pixels, 260 ppi, decent rez
14.9 × 24.9 mm active area
Module PCB size 30.5 × 28 mm
Not tall enough. Same as TTGO T-Display, only without the long PCB.
TinyTV 2
IPS 26mm/1"
Basically the 1.14" so no good
30.4 × 28mm PCB
14.9 × 24.9mm active area
135 × 240 pixels / 135 × 216 pixels
The TinyTV 2 in its clear plastic enclosure. An excellent choice for people who want a plug and play solution, though you do have to press the power button on the top to turn it on.
1.3"
28 × 40mm PCB or 27x30
23.4 × 23.4mm active area
240 × 240 pixels
So-so resolution. Covers each square, but impinges on two vertical rows to the side, and part of the top row of the horizontals.
1.44"
25.5 × 26.5mm active area
29 × 34.5mm PCB
128 × 128 pixels
Crappy resolution.
1.54"
44 × 42 PCB
32 × 31 active
240 × 240 pixels
Decent rez. Sold by Adafruit. Covers 1 screen but not 2. Sticks out a lot on the sides owing to PCB size.
1.54" square
27.7 × 27.7mm active
240 × 240 pixels
36 × 40mm PCB
Touchscreen, which doesn't help me.
1.69"
240 × 290 pixels
28 × 32.5mm active area
30 × 37.4mm PCB
36.5mm wide × 22.5 tall needed
OK rez, but doesn’t cover both side displays. Rounded corners
1.77"
54 × 34mm PCB
35 × 28mm active area
160 × 128 active area
Crap resolution. Does not cover both square screens, but sticks out at the top of the panel. Also covers top row of horizontal buttons and 2 vertical rows of screen-side buttons
Lilygo TTGO T-Display
25 × 51.5mm PCB
14.9 × 24.9mm active area
135 × 240 pixels
1.14" LCD, 260 ppi, ESP32 CPU
Resolution so-so. Poor off-axis. Can’t put them side by side given the space limitations
Lilygo T-Display AMOLED Lite 1.47"
25.2 × 51.5mm PCB
194 × 368 pixels
Possibly 19.36 × 36.2mm display
Possibly 17.46 × 33.12 mm active area
AMOLED display is decent. But touchscreen only, too narrow for side displays
1.8" (used by WeAct Studio etc)
35 × 56mm PCB
28 × 35mm active area
128 × 160 pixels
Lousy resolution, doesn’t cover 2 screens
lilygo T-Display-S3 1.9"
ESP32 with acrylic cover
26 × 62mm PCB
22.7 × 42.7mm active area
36.5mm wide × 22.5 tall needed
170 × 320 pixels
Size OK. Resolution so-so; poor off-axis viewing as TFT. Promising, but it was the AMOLED-equipped successor which really made it.
Top: the older T-Display-S3 and bottom: its vastly better younger sibling, the T-Display-S3 AMOLED.
They're easy to tell apart even when off. The older T-Display-S3 has LILYGO at the top, and the acrylic frame supporting the LCD panel does not protect its edges.
By contrast the T-Display-S3 AMOLED has a clear acrylic frame that runs all the way around the display, and the display's connection to the ribbon cable at the end angles in slightly.
2"
IPS ILI9342C
320 × 240 pixels
40.8 × 30.6mm active area
0.1275mm × 0.1275mm per pixel
46.5 × 41.5 × 2.5mm LCD PCB
54.5 × 47.5mm PCB
TFT LCD; not great resolution; too big.
28 July 2023; updated 29 March 2025.