Introduction: Pip-boy 3000 Mark II

Picture of Pip-boy 3000 Mark II

This is my attempt to build the most advanced Pip-Boy 3000 on planet Earth, and I believe I've succeeded. It includes the following technologies:

  • 4d Systems 4.3" capacitive touch display
  • Adafruit 66 channel GPS
  • Sparkfun WTV020SD audio player
  • Adafruit L3GD20H 3-axis gyroscope
  • Adafruit LSM303 3-axis compass
  • Adafruit LSM303 3-axis accelerometer
  • Adafruit BMP180 barometric pressure/temperature sensor
  • Arduino Pro Mini 328p 5v 16MHz microcontroller
  • Adafruit PowerBoost 1000 power and charging system
  • 4400mAh LiPo power pack
  • 9 LED Flashlight
  • Frikin' Laser
  • TV-B-Gone circuit (turns off hundreds of models of TVs)
  • 3D printed PLA and laser cut acrylic body
  • Methane Gas sensor (used for RAD sensor)
  • Photon light detector

This instructable will go into great detail on how to construct and assemble the Pip-boy 3000 Mark II, allowing you to make your own. The project is 100% open source, and all files and source code will be available for download in the downloads step at the end. All parts can be obtained from places like Adafruit, Sparkfun, and eBay. The case is made with a 3D printer and laser cutter. You can buy the printed case if you don't have a printer. Other miscellaneous hardware can be found at any hardware store.

Let's get started!

Note - You can find the Mark I build here.

Step 1: Parts

Picture of Parts

These are the parts used to build the Mark II.

4.3" display

Adafruit GPS

Sparkfun audio player

Adafruit 10 DOF board

Arduino Pro Mini board

Adafruit PowerBoost 1000 board

4400mAh LiPo battery

9 LED Flashlight

Laser diode

TV-B-Gone circuit

Methane Gas sensor

Sparkfun light detector board

Custom IO board

You will have to make the custom IO board yourself. Its job is to create 3.3 volts and distribute the 5v and ground to all the parts listed above. It also takes many outputs from the display and drives the flashlight, laser and gas sensor. I will talk about the IO board and show you how to make your own in a separate step.

Step 2: What Is That?

Picture of What Is That?

Step 3: Screens

Picture of Screens

Step 4: Workflow

Picture of Workflow

This diagram shows the overall workflow of the Mark II. We will discuss each component in detail in the following steps.

Step 5: LiPo Battery Power Pack

Picture of LiPo Battery Power Pack

Datasheet

This is a 4400mAH LiPo battery. Its voltage is around 3.5 volts. It connects directly to the PowerBoost 1000 board. It requires a charger rated at 2 amp. Most smart phone and tablet chargers are 2 amp, but always check. It is written on the charger under output.

The one used in the Mark II is painted green and a metal shield is applied to the wires. This is only for looks and not necessary for normal operation.

Step 6: GPS

Picture of GPS

Datasheet

Source Code

The Adafruit GPS board communicates to the Ardunio via software serial on pins D2 and D3. Load the library linked above into the Arduino loader and select the "parsing" example, as demonstrated here. You can easily edit this code so that the output gets written to your display instead of a terminal. The way this is done in the Mark II is as follows:


if (GPS.fix)<br>
   {
    genie.WriteObject(GENIE_OBJ_USER_LED, 0x00, 1); //LIGHT FIX LED
    genie.WriteStr(12,  GPS.latitudeDegrees, 4); //LAT
    genie.WriteStr(13,  GPS.longitudeDegrees, 4); //LONG
    genie.WriteStr(14,  GPS.speed); //SPEED IN KNOTS
    genie.WriteObject(GENIE_OBJ_CUSTOM_DIGITS, 0x08, GPS.angle);
    genie.WriteObject(GENIE_OBJ_CUSTOM_DIGITS, 0x09, (int)GPS.satellites);
   }
}

The above function will write the GPS parsed data coming in from the software serial port to the 4d systems display. You can see the results of this code in the GPS Status screen in the Screen step.

Step 7: PowerBoost 1000

Picture of PowerBoost 1000

Datasheet

This is one of the handiest little boards I've run across as an engineer.

  1. It takes the 3.5 volts from the LiPo battery and brings it up to 5v for TTL circuitry.
  2. It pulls a pin to ground when the battery gets low.
  3. It charges the LiPo battery.
  4. It allows a signal to turn the 5v on and off.

Anytime you're dealing with a battery powered project, you're going to need all of these things. And this little board does them all! For the Mark II, the TV-b-Gone circuit requires 3 volts and pulls A LOT of current. More than you would think. So I tie it to the LiPo pin, which is connected directly to the battery. Pin 19 of the display is hooked to the low battery pin, so when the battery gets low, the display will load a screen telling you to charge the battery.

Pulling the Enable pin low will cut the 5v, turning the Mark II off. This is done via the on/off switch.

The 4 status LEDs are pulled directly from this board. There are no pinouts for them...I removed the 1206 SMD LEDs from the board and soldered in some wires. BE CAREFUL if you want to do this. This is not easy and requires descent soldering skills.

Step 8: Audio Board

Picture of Audio Board

Datasheet

This is a neat little board that provides a cheap and easy way to get audio into your project. You'll need to store the audio files on an SD card. It uses a weird .ad4 format, so you'll need a special tool to convert your .mp3 or .wav into the correct format. You can get the tool here.

It has a built in amplifier so you can hook your speaker directly to it. This is strictly a 3.3 volt device, so you can't just hook your 5v microcontroller to it. I use a 1k resistor for the reset pin, as the Arduino is a 5v device.

There are two modes of operation - push button and serial. I did not use serial because I ran out of pins on the Arduino. I control the push button pins directly from the display. They are 3v pins.

In order to get the sound effects to work, I have to reset the audio board and then hit the next button to get to the needed track. This causes a slight delay from when the, let's say flashlight for example, is turned on and when the sound is played. Below is the bit-banged code to play a selected audio track.

void playTrack2() <br> {
  audioReset();
  delay (150);
  genie.WriteObject(GENIE_OBJ_PINOUTPUT, 0x02, 0); //0
  delay (10);
  genie.WriteObject(GENIE_OBJ_PINOUTPUT, 0x02, 1); 
  delay (250);
  genie.WriteObject(GENIE_OBJ_PINOUTPUT, 0x02, 0); //1
  delay (10);
  genie.WriteObject(GENIE_OBJ_PINOUTPUT, 0x02, 1);
  delay (250); 
  genie.WriteObject(GENIE_OBJ_PINOUTPUT, 0x02, 0); //2
  delay (10);
  genie.WriteObject(GENIE_OBJ_PINOUTPUT, 0x02, 1);
 }

Step 9: Adafruit 10 DOF Board

Picture of Adafruit 10 DOF Board

Datasheet

Source Code

The Adafruit 10 DOF board supplies the following information:

  1. Pressure
  2. Temperature
  3. Gyro
  4. Compass
  5. Magnetometer

The board communicates to the Arduino via its I2C function on pins A4 and A5. Getting the data to the Display is similar to how it's done with the GPS board. Below is an example.

/* write gyro data to sensor screen */<br>void Gyro() 
{
    sensors_event_t event;
    gyro.getEvent(&event);           //gyro
    genie.WriteStr(6, event.gyro.x); //x
    genie.WriteStr(7, event.gyro.y); //y
    genie.WriteStr(8, event.gyro.z); //z
}

Step 10: Display

Picture of Display

Datasheet

IDE Program

This display has a lot of power and its own on-board processor. Images are stored on an SD card and the display is programmed from the IDE linked above. There's no actual code done in the programming of the display. It's more of a WYSIWYG type of programming environment. I would suggest downloading the file from the Downloads step and install the IDE on your computer. Load in the file and have a look around.

You will need this programmer in order to program an actual display.

Have a look at the datasheet linked above and it will lead you in the right direction on how to program the IO pins. It's very easy and you probably could figure it out through just messing with the program a little.

The display communicates with the Arduino via the hardware serial port on D0 and D1 at 9600 speed.

Step 11: Gas Sensor

Picture of Gas Sensor

Datasheet

The gas sensor is a basic device. Its purpose is to simulate the RAD / Geiger counter of the stock pip-boy 3000. You apply voltage and it produces an analog voltage out proportional to the amount of gas it detects. This device uses quite a bit of power so you want the ability to turn it on and off. The Mark II has this ability to maximize battery life.

It should be noted that there is a short warmup period when first powered on. The sensor will usually peg the meter for a few seconds when first powered on, but it will come down again shortly. It will feel warm to the touch during normal operation.

The output of the sensor is tied directly to the A7 analog input of the Arduino. This value is passed to the gauge on the display as follows:

void AirGauge() //write to gas (rad) gauge

{
  air = analogRead(AirGaugePinA7); 
  genie.WriteObject(GENIE_OBJ_GAUGE, 0x01, air);
}

The ground of the gas sensor is connected to the IO board, giving the ability to turn it on and off via a TIP31 transistor.

Step 12: Light Sensor

Picture of Light Sensor

Datasheet

The light sensor works the same way the gas sensor does, except it does not have a switch to turn it on or off. It is always on. The amount of light hitting the sensor is proportional to the analog voltage out on the signal pin. This analog voltage is fed to the Arduino pin A6 with the following code:

/* read light sensor and write to display */<br>void RadGauge() //write to photon gauge
{
  rad = analogRead(RadGaugePinA6); 
  genie.WriteObject(GENIE_OBJ_GAUGE, 0x02, rad);
}

Step 13: Flashlight

Picture of Flashlight

The flashlight is just a basic LED flash light. The one I used is one of the free ones you get from Harbor Freight with the 20% off coupon. The red wire connects to 3v on the IO board and the black wire connects to J2 on the IO Board, allowing the Arduino to turn it on and off with a 2N2222 transistor.

This is the code used to turn the flashlight on and off:

fOn = digitalRead(5); //flashlight ON<br>     
      if (fOn == LOW)
        {
          digitalWrite(12, HIGH);
          playTrack2();
        }
   fOff = digitalRead(4); //flashlight OFF
     
      if (fOff == LOW)
        {
          digitalWrite(12, LOW);
        }

Step 14: Laser

Picture of Laser

The Laser works just like the flashlight. The red wire is connected to 3v on the IO Board and ground is connected to J1 on the IO Board.

This is the code used to turn the laser on and off:

lOn = digitalRead(6);  //laser ON<br>     
      if (lOn == LOW)
        {
          digitalWrite(11, HIGH);
          playTrack3();        
        }
   lOff = digitalRead(7); //laser OFF
     
      if (lOff == LOW)
        {
          digitalWrite(11, LOW);
        }

Step 15: Power Inlet

Picture of Power Inlet

The power inlet assembly allows you to charge the LiPo battery with a standard mini-USB cable. The black and red wires hook directly to the Powerboost 1000 board.

Step 16: Arduino Pro Mini

Picture of Arduino Pro Mini

Datasheet

The Ardunio is the heart of the Mark II and performs all of the functions that the display cannot handle on its own. You can get the full source code and the programming environment on the Downloads step. You'll want to ensure you get the correct one, as there are several varieties. You need the 5volt 16MHz version with a 328p processor. Be careful because some of the cheap knockoffs have a 128 processor and will not work.

Also keep in mind that you cannot use an Arduino Uno because the Mark II utilizes the A6 and A7 pins, which the Uno does not have.

Step 17: TV-B-Gone Assembly

Picture of TV-B-Gone Assembly

Datasheet

The TV-B-Gone Assembly is a self-contained circuit that spits out hundreds of TV remote "off" signals. The way it operates in the Mark II is the arduino is wired to the fire button. So when you press the fire button on the display, it's the same as pressing the fire button on the TV-B-Gone device.

This thing draws a lot more current than I thought it would, so I have it wired directly to the LiPo battery pin on the PowerBoost 1000 board. This will prevent any type of power surge harming other circuitry.

The LED for this does not need a 1k resistor. Also, you cannot share the ground for this LED. You MUST run the positive and negative wires from the tv-b-gone board to your LED. You need to remove the original LED from the tv-b-gone board. Or not install it as this is purchased as kit you have to put together.

The following code shows how to fire the TV-B-Gone with an Arduino:

tvOn = digitalRead(13); //fire tv b gone<br>     
      if (tvOn == LOW)
        {
          digitalWrite(16 , HIGH);
          playTrack4();
          digitalWrite(16 , LOW);
        }

Step 18: IO Board

Picture of IO Board

The IO Board serves 3 functions:

  1. Provides 3 volts for the laser, flashlight and audio player.
  2. Distribute 5 volts, 3 volts and ground to all the components.
  3. Act as input / output for the display and Arduino to turn on and off the flashlight, laser, gas sensor and tv-b-gone circuits.

You will need the following components:

  • 2 - 2n2222 npn transistors
  • 2 - TIP31 power transistors
  • 4 - 100 ohm resistors
  • 1 - lm3940 3 volt regulator
  • 1- 0.47 uf capacitor
  • 1 - 33 uf capacitor
  • 1 - 1000 uf capacitor
  • 3cm x 7cm proto-board
  • Headers

Note that you do not need to use the exact components that I did. You should be comfortable with understanding how transistors / resistors / capacitors work and interchanging them before attempting a build like this anyway. I did my best to make the diagrams of how the parts hook together are as easy to understand as possible.

Step 19: Build Images

These are images of the build process and a video of when I was starting to get the code finalized.

Step 20: Finished Product Images

Picture of Finished Product Images

These are images of the completed Pip-Boy 3000 Mark II.

Step 21: Downloads

Comments

TristanB48 (author)2017-10-16

I saw you used the Grove - Gas Sensor (MQ2) to simulate Rads. In the description it says it can also detect LPG, i-butane, alcohol, Hydrogen, smoke. Is that also possible with your build?

BryanM21 (author)2016-10-12

thats a awesome proyect, but i have to ask..

did you cell it?

will.sweatman (author)BryanM212016-10-13

No, it's still for sale! $1,000.

TimothyP31 (author)2016-05-12

one more stupid question. when trying to compile the 4ds screen, i keep recieving cant resolve value of PAx for data OutPin[x} what am i doing wrong?

will.sweatman (author)TimothyP312016-05-16

Make sure you have the correct display selected. It should be

ULCD-43DCT

TimothyP31 (author)2016-05-10

Awesome thank you. I am trying to find a way to print these laser pieces in pla for sadly i have no laser cutter.........

TimothyP31 (author)2016-05-09

trying to open the laser cut files. They are .rld what can i open them with?

will.sweatman (author)TimothyP312016-05-09

Use this program:

http://rdworks.software.informer.com/8.0/

TheSonOfRyan (author)2016-05-09

from a fallout standpoint, this is possably yhe worst pip boy ever. touchscreens break easaly. then your pip is a brick.

mfrontuto (author)2016-04-22

great work!!! I believe that Adafriut actually has a geiger counter now for the Pi. would you still be able to intergrate it into this pipboy?

DannyB58 (author)2016-04-18

would hear how much it would cost to buy such a mane to :)

will.sweatman made it! (author)DannyB582016-04-19

I would sell this for one thousand dollars.

David BH (author)2016-04-07

Great work!
I have a key fob called a "NukeAlert" http://www.nukalert.com/index_a.html

If you do nothing else at the website, read their myth-busting expose... near the bottom of their web page.

I found the NukeAlert key fob while surfing the Internet when looking for mods and stuff for Fallout 3 when it was at it's peak. NukaAlert has a tiny circuit board inside that could be added to that for the RAD detection part as well. Is Methane an early warning condition for detecting RADs?

will.sweatman (author)David BH2016-04-08

No, but it will let you know who had beans for lunch. :-)

David BH (author)will.sweatman2016-04-08

I will have to go with the clicker screamer device on mine then. There might be a real lady in the house who does not take kindly to people proving the old rhyme about girls incorrect. Maybe you've heard it, "Girls are sugar and spice and everything nice."

I'm writing this way because I just got warned [ We have a "be nice" comment policy. Please be positive and constructive with your comments or risk being banned from our site. ] I got warned for typing the short version of laughing out loud, I'm almost sure I won't be able to tell you what happened when I proved to my older sister that, that rhyme was a myth and I busted it.

687016 (author)2016-04-08

That is the most amazing Pip Boy I've ever seen!

lolcatman22 (author)2016-04-08

this is actually really amazingly cool everyone knows how there was a massive scramble to get the pipboy edition of fallout 4 becuse everyone wanted basically what was a 100 pound phone case..... instead 3d print one

JesseC29 (author)2016-04-07

And by the way.. how much?

will.sweatman (author)JesseC292016-04-08

I will be putting it on eBay soon. I still need to get a pelican case and make a sign for it.

JesseC29 (author)2016-04-07

Looks awesome, but why not go the extra mile and put a little light up gage in the cornner and find a different spot for the power switch.
Im not saying its not great, because it is. But if you are going to go that far with it, why not go all the way..?

will.sweatman (author)JesseC292016-04-08

Basically I ran out out of ports on the microcontroller board and I was pushing the limits of how much I could fit in a small space.

nancyjohns (author)2016-04-07

You have the switch backwards. The line indicates that it's on(like a wire conducting electricity). Other than that, nice.

will.sweatman (author)nancyjohns2016-04-08

Haha oops. I'll have to fix that.

JesseC29 (author)2016-04-07

And by the way.. how much?

MichaelR5 (author)2016-04-07

Nice work! You sir, are a geek after my own heart. I love the addition of the TV-B-Gone!

witherman (author)2016-04-07

I need someone else to make it for me because I have no experience with, well, any of this.

witherman (author)2016-04-07

this is awesome. How does everything thing work! I want one!

JohnM47 (author)2016-04-07

That is pretty darn cool!

lgn631 (author)2016-04-04

Amazing work, by far the best of any functional or 3D printed Pip-Boys around! Granted it's really expensive but I bet you could make the circuits cables module so you could slowly buy the parts over time.

rocketman221 (author)2016-04-04

Nice work, if I had a 3D printer, I would have to make one.
I would use something more powerful than an arduino though, probably a C.H.I.P. or Raspberry Pi.

botdfmiw (author)2016-04-04

How much was this to build?

will.sweatman (author)botdfmiw2016-04-04

Aroound $450 in parts.

JEL_3 (author)2016-04-04

Really cool consept and exicution.

Bantiarna (author)2016-04-04

Omg yes!! Must have one!! Lol thank you!

wold630 (author)2016-04-04

Great documentation! Thanks for sharing!

About This Instructable

26,177views

420favorites

License:

Bio: entrepreneur hardware hacker writer for hackaday
More by will.sweatman:Pip-boy 3000 Mark II
Add instructable to: