How to Make a PIP-Boy using an Arduino
So what exactly is a PIP-Boy, you ask? For those unfamiliar, a PIP-Boy is a device used by the protagonist in the popular Fallout series of video games for navigation, radiation detection, data storage/playback, and inventory management. Being a major fan of the franchise, I decided I wanted to make my own version, but no mere prop, I wanted a functional device that I could really use. This version is very much just a working prototype and a platform for future development. My ultimate goal is to build a fully functioning PIP-Boy 3000 from scratch, so this is my platform upon which I can build up to that level.
Hey, I’m a big fan of Fallout too! But PIP-Boys don’t look anything like this! Trust me, I know. This is a prototype that just takes design cues from both versions of the Pip Boy and also some elements from the computer terminals in the games.
But wait! If you can make this much, why not just go ahead and build the 2000 or 3000A models? I’m not just going to buy a plaster cast of the FO3 PIP-Boy 3000 Clock and slap an iTouch in there. My goal is a functional device, not something that just looks functional. I do really want to make one of the models from the game, but until my budget expands, bringing completely accurate copies of the devices into reality is beyond my reach. On that note, should I win, making the PIP-Boys will be significantly easier. I’ve been planning my own open source hardware business for a while now, and a 3D printer or decent camera would help immensely. Vote for me and I promise you won’t be disappointed.
So grab a seat, pop the cap off an ice cold Nuka-Cola, and enjoy the Instuctable. By the end, you’ll have hopefully learned a lot more and will be able to design and build your very own Personal Information Processor Boy.
For those interested in getting started on the build, skip ahead to the section labeled Hardware.
Step 1: History and Features
So how did I design all this?
How did I go from staring at a few pictures of devices on a computer screen to holding a real device in my hands? Persistence, a clear schedule, and plenty of hot glue. By now, I think I’ve put about 200+ hours since November (not to mention the countless hours I spent playing Fallout 3 and New Vegas in the name of “research” ;). I broke down the project into major chunks and set aside certain tasks to be accomplished daily. I broke my tasks into two main categories: software and hardware. From there, I broke down everything into smaller chunks, coding a function here, adjusting the layout of a speaker there and so on. This helped me to avoid much of the mental fatigue and frustration that can come from building an intensive project. My daily goals were straightforward and reasonable for me to accomplish, and seeing the small leaps of progress were a confidence boost that made everything seem more manageable. But that’s not to say that I was perfect in my execution, quite the opposite. Many times I procrastinated for days at a time. I encountered software bugs that stumped me for hours. I simply stared at my screen many times, boggled at some hardware design problem, but I didn’t stop. My new favorite quote, which really applies to almost every aspect of life is, “Don’t give up what you want most, for what you want now.” It’s short and simple, but it strikes me pretty deeply. I want most to improve as an artist and engineer, to create ever more amazing designs, and to have my very own PIP-Boy, despite my urges to browse Reddit, watch Netflix, or sleep in. With the money I’ve spent on research and design over the last six months, I could have bought myself a shiny new iPad, but I can’t buy the satisfaction of knowing I took my desire and brought it into reality. It honestly may not look like much, but this little green box is far more valuable to me than the cost of it’s parts.
Okay, enough motivational mumbo jumbo, so what can the prototype PIP-Boy 2000+ do? Although many of the functions of the devices are purely for game mechanic reasons, there are still quite a few functions useful to those of us in the real world. Here’s a list of in-game features (based off of FO3 and FNV) and their status in development:
Automapping and waypoint navigation: (Partially Complete) Waypoints and simple GPS navigation is relatively easy, automaps without advanced laser rangefinders/sonar is not possible . Currently only latitude, longitude, heading, speed, altitude, and number of satellites used are displayed.
Moral status and local reputation: (Not Implemented) These can’t be automatically gauged, but the graphics would be trivial to add.
External interface to computers: (Partially Complete) The device must be disassembled in order to be reprogrammed, and no local data downloading is available for the time being. It would be neat to stick a decently sized flash drive in there, and even better if that information or the file system could be read on-screen.
Real-time health monitoring and feedback: (Not Implemented) there’s certainly no way to measure the health status of specific body parts or automatic notification of addiction, but I suppose the next best thing might be to add a heart rate monitor, although this would require the external chest strap. An accelerometer/pedometer to gauge steps taken and as a simple fitness measurement wouldn’t be too hard to add too.
Inventory status and item condition: (Partially Complete) I see no way for this to be automatic, but this version has RFID-reading capabilities, so some form of inventory management would be possible with unique tags for items, however crude.
Character level and experience: (Partially Complete) As the only real world task the PIP-Boy can be aware of is discovering a new location, that is the only way to “gain experience.” Although purely for fun and no practical reason, I could set this to gain experience/levels by traveling and have the user get to distribute skill points. Of course, you could always cheat since you have access to the code and could have whatever stats you wish, but that’s no fun 😉 Perks are not implemented.
Ambient radiation measurement and level of irradiation: (Partially Complete) There is a small working Geiger-counter module, but this is also for fun and should by no means be used for situations in which serious radiation detection is necessary. Measuring how much of a dosage you have absorbed in RADs is also impractical.
Flashlight:(Complete) Just like in the game, the prototype has an “overbright” mode, although the LCD is not terribly bright, it does glow decently. For another version, I’m considering just popping in some high-power LEDs for some serious luminosity.
Time stopping/auto-targeting: (Not Implemented) Although awesome, V.A.T.S. is, for many reasons, ridiculously fictional, but I’d be interested to see what could be done with an IMU and a web cam/Kinect sensor strapped to a “weapon” pointed at a specially colored or marked target. I imagine a computer could determine the probability of a hit based on the current vectors of angle and acceleration of both the weapon and the target. This couldn’t be handheld, but would make for an interesting computer vision project.
Wrist-mounted: (Not Implemented) This version is handheld
Data storage and playback: (Not Implemented) No internal storage or audio playback for now, I’ve already designed holotape cases, but it’s too cost prohibitive to make them the way I want to make them for now.
Radio: (Not Implemented) This will be added at later version.
Clock with date and time: (Not implemented) Time and date can be read from the GPS, but I plan to use a RTC for when the GPS is disabled.
Screensaver: (Partially Complete) It doesnt come on automatically, but you can switch to a mode that displays the falling bomb screensaver that is pretty much identical to to the graphic from the first two games.
Unlimited battery life: (Not Implemented) If only fission batteries were real! This version runs on 6 humble AAs.
Step 2: Hardware
So before we get into the dirty work of building the device, I’d like to explain the main components and why I chose them.
Screen: The focal point of the PIP-Boy is of course the screen, and for this I needed something that could display all the data I wanted to at once. My first prototype used a 320 by 240 pixel LCD, but this was a graphically tight fit, so I upgraded a 4.3 inch 480 by 272 pixel LCD from 4D Systems (for reference, this is the same resolution/dimension as a SONY PSP). I picked this particular screen because it provided sufficient resolution for text and graphics in a decent form factor. It is a full color LCD, but I’m only using green colors on a black background as an approximation of the old CRTs. As an added bonus, this screen (like most of their products) has a built-in 16-bit processor (in this case, the Picaso GFX-2) that does all the nitty-gritty interfacing to the LCD and has a ton of built in graphics functions. This greatly reduces the complexity of most projects and is why I often use their displays. It even has a tiny built-in speaker and the ability to play .WAV files! The processor runs a proprietary language called 4DGL which is very similar to C or Processing, which makes it none too difficult to program. Alternatively, the screen can be controlled by serial commands from a host processor, but we wont be using that feature.
Auxiliary Processor: I chose to use an Arduino Duemilanove with an Atmega 328 as I’m familiar with using them and it can handle the GPS data more easily than the LCD. For now, I’ve used up all the available memory on the Picaso processor, so the Arduino picks up the slack and will also do more of the hardware interfacing in the future.
GPS: I chose the Adafruit Ultimate GPS because it’s small, high quality, cheap (for a very decent GPS) and well documented like all Adafruit products.
RFID: I chose the RFID-12 from Sparkfun, as it’s a tiny self contained module with a built in antenna, and it’s dead simple to use. Just power it up, hold up a tag, and out pops the ID over 9600 Baud serial. This is used as a security feature for this version, but I plan to upgrade it to “equip/unequip” items. For what purpose? Nothing practical, but it’d sure be cool.
Input: The main input is a tiny 8 position rotary switch that I found browsing the Electronic Goldmine. Even though it’s surplus, it’s still a really high quality mil-spec component with a solid metal body and gold plated contacts for < $3. I also found a little square illuminated pushbutton on their site, which seemed almost idential to the “power” light on the in game terminals, it even glows orange! This can be used as a generic input, but I only use it to activate the “Overbright” mode for now. Also, I popped in two rotary encoders for even more input. Unfortunately I decided to program the rotary encoder interface last, but until I optimize my 4DGL code, I don’t have any more code space to utilize them :/ The power switch is a key lock (also an Elec-Goldmine find) that was cheap and seems fitting for a military piece of hardware. This also prevents accidental powering or use by anyone with out the key. You can’t unlock it with a bobby pin and screw driver. I tried 😛
For those curious about my skill level and how I even know how to do this, I’ll be honest, I still consider myself quite the novice. I’ve owned an Arduino for a few years, but only really began seriously working on projects about a year ago. I’ve fed my curiosity and sharpened my skills by reading most of the Make, Sparkfun, Hack a Day, and Adafruit tutorials, not to mention the countless little random blogs and personal webpages of makers and hackers everywhere. This was my first time designing a lasercut case and working with GPS modules, so don’t be discouraged if you feel this project is above your skill level. Work your way up by taking on projects that are slightly more than you can chew, and eventually you’ll grow and be far beyond where you imagined, and be tackling projects like this with ease!
I tried my best to find components that were readily available and (relatively) inexpensive for the desired functionality. For the basic model, you’ll only need to order from a handful of suppliers: Sparkfun, 4D Systems, Radioshack, The Electronic Goldmine, TAP Plastics, and Ponoko. For most of the components, I’ve linked to their direct pages so you should have no problem purchasing the exact parts used in this project. Depending on what you have on hand, the complete BOM of the base model should cost around $300.
Electronic Components and Hardware:
(3x) scrap metal
(4x) scrap electronics
sensor module…Just kidding! If only it were that easy… Here’s the real parts list:
uLCD43 (I ordered mine from this US distributor)
Adafruit GPS (The one I own was slightly older, but now they’ve upgraded to a module that now has built-in data logging!)
Arduino Duemilanove (or UNO, just as long as it has an Atmega 328)
(11x) 10k ohm resistor
220 ohm resistor
(4x) 6-32 3″ machine screws (I picked mine up at Lowes)
(4x) 6-32 nuts
(8x) 4-40 1/2″ machine screws
(8x) 4-40 nuts
9V battery clip (the kind that holds it in place, not the little power snaps)
1/8″ shaft diameter knob (I bought this assortment and chose the largest)
12mm^2 illuminated pushbutton switch (the one I used is no longer sold by the Electronic Goldmine 🙁
(here’s a replacement that should fit the dimensions of the hole, although this one has a round button)
8 position rotary switch
key lock switch
double sided foam tape
mini protoypting board
1/8″ thick 2 5/8″ W x 4″ L polycarbonate sheet (abrasion resistant)
OPTIONAL UPGRADE PARTS **************************************************************************************
Geiger Counter: I originally purchased this module when it was cheaper, but here’s a similar one still sold at the Electronic Goldmine
(2x) rotary encoder with (2x) 1/4″ shaft diameter knobs (I preferred some that I picked up at Radio Shack to the default Adafruit ones)
sculpter’s mesh (thin metal wire sheet with a little diamond pattern, available at most arts and crafts stores)
RFID-12 module and matching breakout board
Tools and Supplies:
small screwdriver (flathead or phillips depending on what screws you use)
black electrical tape
computer running Windows OS (unfortunately this is necessary for one of the programs)
SD/MicroSD card reader (I just plug mine into an SD adapter and into my printer)
USB-A to USB-B cable
USB to TTL serial board
hot glue gun w/ plenty of glue
wire (I use this 22 gauge wire)
heat shrink tubing
rotary tool (Dremel etc.)
lighter or heat gun (I just got my hands on a Heaterizer XL 3K from Sparkfun. I enjoy it way too much 😉
military green spray paint (I used Krylon “Camo”)
Power tool safety
A steady hand
This is by no means a beginner project (You’ll need a Repair Skill of 50 and a Science Skill of 40 😛 ), but don’t be discouraged! To successfully build this project you must be familiar with basic electronics. While this model requires very little soldering, you should know the difference between a pull-up or pull-down resistor and not be confused by terms like COM, VCC, GND etc. As I intended this for people with intermediate skills in electronics, I won’t show every single step of the circuit building process, but I will explain the schematic as best I can and my design considerations for each part. If you don’t have any experience working with electronics and soldering, check out these great Instructables as a primer!
For more detail: How to Make a PIP-Boy using an Arduino
This Post / Project can also be found using search terms:
- arduino pipboy