By far the most difficult part of this build has been sourcing a display screen, at the time of writing this I’ve tried maybe 4 different displays. The display should be an old 4:3 ratio CRT, but of course the game has taken some liberties with the reality of cathode ray tubes, given the physics involved steering electron beams with magnets, the tube of a canon Pip-Boy would have to travel right through the wearers wrist.

To make this screen a reality we’d have to go with a more modern real world LCD type flat display, the problem with this however is that since the early 2000’s and the dawn of LCD monitors, the trend moved away from 4:3 ratio displays to favour the now commonplace 16:9, so sourcing a 4:3 display of any kind, let alone one of the appropriate dimensions would prove challenging. The optimal size for the display based on the dimensions of the prop should be around 100x75mm which is 4:3 at around a 4.2".

Screen #1

The first screen I obtained was a 3.5" TFT LCD from BuyDisplay, I believe it’s the ER-TFT035-3, it’s a 320x240px QVGA and came with a driver board and it was very cheap. The size of this screen is okay, it’s quoted at around 73x55mm so it’s a way off the optimal but it was worth a shot for the cost. I ended up mounting it to a piece of sheet metal that I cut to the same dimension as the original screen backing and then mounted the driver board to the back side.

Despite being a good fit though this display had some major downsides which ultimately led to me not using it. The driver board that I got with this display has a composite video input, which isn’t entirely a bad thing in itself but it isn’t optimal. As I’d planned to use a Raspberry Pi of some kind anyway, most of those have composite out via a port or at the least pin headers on the board. This however leads to the next issue, 320x240px isn’t a huge amount to work with, rendering some test images to the display it became obvious that some of the PIP-OS fonts would be very difficult to read.

The main issue though was power, the driver board requires a 12V input which proved difficult to achieve. My goal was to run this whole device from 5V so I could power it from USB, or a USB power bank etc. I didn’t really feel like using 12V and stepping down to 5V as it limited my options in future. In an attempt to keep things 5V, I picked up a buck convertor to convert 5V to 12V and then maybe I could still keep the main power input at 5V USB.

This power convertor does get very hot though, too hot to touch, which seemed both inefficient and also potentially dangerous to leave running 24/7 inside a plastic case so I went on the hunt again for another display and ultimately with other life commitments this resulted in a year long hiatus.

Screen #2

One day while perusing AliExpress I spotted a home page deal for a USB-C IPS 3.5" display for $10, for that price I figured it was worth a shot. The display claimed it would only work however using the sellers provided Windows software, but it’s just a USB device right, at some point it has to use some standard interface. If I could get it to work this would be a much cleaner integration, power and data are both over USB which makes the power issue go away and in theory makes the software side simpler, providing I could work out how to interface with it.

Initially I got straight into the deep end with this display and decompiled the manufacturers proprietary software with Ghidra to get an idea for how the display worked, the display works via a USB to serial connection and images are written to the display by streaming bitmaps a byte at a time over the serial connection. Doing some more research into the display I did stumble upon some code already written to this protocol over at https://github.com/mathoudebine/turing-smart-screen-python which saved me a ton of work and with this I was able to get my first mostly working PipBoy as appearing on Your Geek Fix here https://youtu.be/5-TLmO_riR0?list=FLSL-8j1W5h6s2GoLrgSAEEg&t=1899

As is visible in the aforementioned video however, due to the nature of how data is written to the screen, there’s a lot of latency, this makes things like animations and switching screens a bit less clean. There are various ways I was able to optimise this that I’ll cover in another section about software but ultimately was still limited.

Screen #3

Shortly after completing the previous iteration I came across another PipBoy build online (I can’t remember who or where, so apologies!) where they were using a square display by Pimoroni and it looked fantastic! I’d spent so long trying to find a 4:3 display that I hand’t even considered that I could use something completely square and just display at 4:3 in the display centre. The HyperPixel 4.0 does however consumer almost all the GPIO pins on a Pi but that’s a small price to pay, it also though has an i2c breakout on the back which leads us on another adventure down the line.

The quality on this screen is great and the fit is pretty fantastic too, it’s about the same width as the previous screen I was using but I have more vertical space here which will allow me to crop in the UI and despite it not filling the entirety of the case it looks pretty good. After a few iterations I was able to put together a 3D printed case to hold the screen, the Pi Zero and integrate perfectly into The Wand Company’s design.