The Pip-boy project has finally been finished, after a bit of a hiatus. The last things that needed doing were finalizing the electronics, and writing the software.
My original plan was to just use a Raspberry Pi to power the whole thing, but it turned out that dealing with the inputs from the physical buttons and potentiometers was much easier to do by adding an Arduino Nano Every in the mix.
Here the lack of space inside the prop reared its ugly head again. To squeeze the Arduino in I had to remove the master power switch I had already wired in. As a result, the Pip-boy will be now powered on and off by connecting and disconnecting USB cables from the power bank housed in the battery compartment.
The Arduino’s job in the final design is to interface the physical controls to the Pi. The inputs are read and interpreted, and matching signals are then sent forward on a serial connection. I thought I would just connect pins on the Arduino to GPIO pins on the Pi, but that proved to be problematic due to the fact that the LCD connector on the Pi covers the standard serial TX/RX pins.
Plan B was to simply use a USB cable to connect the Arduino to the Pi. Simply, apart from the fact that there was no space for the USB cable connectors. To fit the USB cable in I had to chop it up a fair bit:
One thing on the electronics side that I still could add is 1uF to 10uF capacitors on the potentiometers to filter out some of the noise. As it is, I’m doing the filtering in software, so it’s not a huge deal.
The software consists of three parts: Arduino sketch, Python script for serial communications, and a web page for the UI.
The Arduino sketch is fairly straightforward. Just reading buttons, debouncing, reading pots, smoothing the input, and sending events on the serial line to the Pi.
The Python script isn’t that complicated either. The main problem during development was figuring out how to reliably get the Python script running on Pi startup in such a way that it sees the serial port with the Arduino connected. In fact, that still doesn’t work properly, and more often than not I need to manually start the Python script after boot.
The HTML page that actually implements the user interface, along with all the image editing that went with it, was somewhat surprisingly the most labour intensive part.
All the software and instructions for installation can be found in this Github repository.
All the STL files needed to print the prop can be found on Thingiverse, Cults3D and right here on this blog. See below for links.
A few pictures of the finished product:
And a short video of it in action:
- STL files on Thingiverse: https://www.thingiverse.com/thing:4746301
- STL files on this blog: http://blog.ampli.fi/wordpress/wp-content/uploads/2021/02/pip-boy-stls.zip
- Code and instructions on Github: https://github.com/xird/pip-boy-2000-mk-I
- More build details on The RPF: https://www.therpf.com/forums/threads/pip-boy-2000-mk-i-from-fallout-1-fallout-2.329566/