The original source code from ZapWizard. Their project is insane, and you should check them out!
The original Adafruit project by the Ruiz Brothers that I adapted for 2024.
The 3d Printer who got me the extra knob 3DPrintsByKai, check out all their cool 3D prints!
- Raspberry Pi-5
- Pi-5 Heatsinks
- 3.5 Inch 480x320 TFT Resistive Touchscreen
- PipBoy Housing Printed
- PipBoy Housing 3D Models
- Extra 3D Knob
- Anker PowerCore 5,000mAh Portable Charger
- USB Mini Speaker Computer Speaker
- Rotary Encoder Knob
- Rotary Switch - 10 Position
- Neodymium Disc Magnets
- Female to Female Header Jumper Wire
- Super Bright LED
- USB 2.0 Cable Male To Male Angle
- 165.1-mm Silver Cabinet Latch
- 3/4-in H Silver Mortise Interior Door Hinge
- Brown Faux Leather Fabric
- 6mm Foam Padding
- Velcro 15lb Gray
- #4-40 3/8 machine screws
- Use Raspberry Pi Imager to burn MPI3501-3.5inch--2023-12-05-raspios-bookworm-armhf to an SD card.
- Insert the SD card into the Pi.
- Plug in Ethernet.
- Attach the screen.
- Plug the Pi into the external charger to boot.
-
Open PowerShell on your machine.
-
Navigate to the directory where you want to download the folder. Replace the path in the command with your desired location:
cd C:\Path\To\Your\Desired\Directory
- Download the
PipBoy
folder as a.zip
file from GitHub:
Invoke-WebRequest -Uri https://github.com/SurvivorGrim/PipBoy-Pi5/archive/refs/heads/main.zip -OutFile PipBoy-Pi5.zip
- Extract the downloaded ZIP file:
Expand-Archive -Path .\PipBoy-Pi5.zip -DestinationPath .\PipBoy-Pi5
- Navigate into the
PipBoy
folder within the extracted content:
cd .\PipBoy-Pi5-main\PipBoy\
cd desktop
sftp pi@<pi_ip_address>
mkdir PipBoy
cd PipBoy
put -r PipBoy
exit
SSH into the Pi:
ssh pi@<pi_ip_address>
sudo raspi-config
Update and set the boot to desktop GUI:
- Update
- System Options > Boot / Auto Login > B4 Desktop AutoLogin Desktop GUI
- Finish
Edit config.txt
:
sudo nano /boot/firmware/config.txt
Add the following lines:
dtoverlay=piscreen,speed=16000000,rotate=270
framebuffer_width=480
framebuffer_height=320
gpu_mem=2048
Reboot the Pi:
sudo reboot
Install dependencies:
sudo apt install python3-cairosvg -y
sudo apt install python3-mutagen -y
sudo apt install python3-xmltodict -y
sudo apt install python3-pynput -y
sudo apt install python3-gpiozero -y
Create autostart directory and add a desktop entry:
mkdir -p /home/pi/.config/autostart
nano /home/pi/.config/autostart/pipboy.desktop
Add the following content:
[Desktop Entry]
Name=PipBoy
Comment=Run PipBoy Python Script
Exec=sh -c 'cd /home/pi/PipBoy && python3 main.py'
Icon=python
Terminal=false
Type=Application
Make the desktop entry executable:
chmod +x /home/pi/.config/autostart/pipboy.desktop
Create the necessary directory and update autostart:
mkdir -p /home/pi/.config/lxsession/LXDE-pi
nano /home/pi/.config/lxsession/LXDE-pi/autostart
Add the following line:
@lxpanel --profile LXDE-pi --plugin=networkmanager --hide
Edit the 99-disable-updates
configuration:
sudo nano /etc/apt/apt.conf.d/99-disable-updates
Add the following lines:
APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Download-Upgradeable-Packages "0";
APT::Periodic::AutocleanInterval "0";
APT::Periodic::Unattended-Upgrade "0";
Set the volume to 90%:
amixer -D pulse sset Master 90%
- Speaker Disassembly
- Carefully open the speaker case. This may require breaking the plastic, so proceed with caution to avoid damaging the internal circuit and speaker components.
- Raspberry Pi Preparation
- Attach heat sinks to the Raspberry Pi to ensure proper thermal management.
- Modifying the PipBoy Housing
- Remove the pegs and mounts from the inside of the PipBoy, ensuring to leave the four mounts designated for the Raspberry Pi intact.
- Using a carving tool, create a square cutout as illustrated in the accompanying diagram to accommodate the encoder knob. Ensure that the drilled hole fits the knob securely.
- Wiring Connections
- Separate the wires from the main strand.
- Trim one end of the wires and strip them for soldering.
- Solder the wires to the encoder switch as depicted in the reference image, then apply heat shrink tubing to prevent short circuits.
- Repeat this process for the 10-point knob.
- Audio USB Cable
- Cut the end off the USB cable connected to the audio circuit, noting the wire colors and soldering points.
- For the angled USB cable, cut one end ensuring the correct angle faces right. Remove the shielding, strip the wires, and solder them according to the original color layout.
- LED USB Cable
- Cut and strip another USB cable, removing the green and white wires while stripping the red and black.
- Connect this USB cable to the LED, then apply heat shrink tubing as shown in the accompanying image.
- 10 Pin Knob Assembly
- Modify the bracket to accommodate the knob cables. A soldering iron can be used to carefully enlarge the holes. Place the knob in the enclosure and attach the 3D printed knob.
- Mounting the Pi and Encoder Knob
- Mount the encoder knob. Trim the USB-C connector to fit through the designated hole. Plug the USB-C connector into the Raspberry Pi and secure it in place.
- GPIO Pins
- Connect the female ends of both knobs to the GPIO pins as follows:
10 Pin Knob Connections:
- Pin 29 (Purple) - GPIO 5
- Pin 31 (Gray) - GPIO 6
- Pin 33 (Brown) - GPIO 13
- Pin 35 (Red) - GPIO 19
- Pin 37 (White) - GPIO 26
- Pin 39 (Black) - GND
Encoder Knob Connections:
- Pin 30 (Blue) - GND
- Pin 32 (Red) - GPIO 12
- Pin 34 (Orange) - GND
- Pin 36 (Yellow) - GPIO 16
- Pin 38 (Green) - GPIO 20
- Securing Audio Circuitry
- Use super glue to attach the audio circuit and speakers, potentially removing foam from the back of the speakers for better fit.
- Mount the LCD screen, consider using spacers or cardboard glued to the top of the I/O to ensure it sits flush, accounting for spacing of the female GPIO cable connections.
- Face Plate Modifications
- Drill additional holes in the faceplate for screws and the second encoder switch.
- Bend the pins on the second encoder switch and glue it to the underside of the faceplate, followed by attaching the 3D-printed knob.
- Affix the LED light cover and screen cover to the faceplate.
- Face Plate Assembly
- Connect the USB cables and run the LED into the faceplate, then secure the faceplate using machine screws. Glue the 10 pin knob enclosure to the side of the Pipboy housing.
- Wrist Magnets Mounting
- Attach magnets to the designated mounting points on the wrist mounts, ensuring that opposite ends attract.
- Padding Assembly
- Cut two foam pieces to fit inside the wrist mount. Fold and hot glue vinyl to the foam for added comfort, then secure the padding inside the wrist mounts.
- Hinge and Latch Assembly
- Drill and screw hinges onto the back and attach the latch on the front, adjusting it as necessary and securing with super glue.
- Power Tube Assembly
- Drill a 1in opening in the power tube cap to allow cables to run through. Glue the power tube mounts as indicated in the reference image and attach the power tube cap to the external battery pack.
- Use a small piece of gray Velcro to the back of the PipBoy to enhance stability.
- Power on!
- Finally, connect the USB to the power tube's connector. Note that this may be challenging; future builds may include an improved method. The external battery pack utilized here is recommended for managing the overall amp draw without glitches.