Build your own Pip-Boy with some useful features for real-life using your Raspberry Pi.
Provides basic functions for moving, copying and deleting files and directories. Plug in a USB drive as a holo tape.
Can fetch and install updates from the git repository.
Provides useful information about your environment like temperature, atmospheric pressure and humidity.
Actually more like a classic music player. Stay tuned!
Shows the last pressed key to help you check the key wiring.
It just shows the time on a classic analog clock.
Supports zooming and moving the map around. Don't get lost in the wasteland.
Base:
- Raspberry Pi (full size board with all 40 pins recommended)
- 3.5" SPI display module (with an ILI9486 display driver chip)
- rotary encoder module (KY-040)
- 6x micro push buttons (6mm x 6mm)
- perf board/proto board (14x9 holes required)
- wires, general soldering stuff
- rotary encoder knob (optional, choose one you like)
- USB Wi-Fi adapter (optional, if your Pi does not have Wi-Fi onboard)
Modules:
- BME280 environment sensor
- NEO-6M GPS module
- DS3231 RTC clock (optional, but recommended)
Battery power:
- MT3608 power converter
- TP4056 battery charging controller
- 18650 battery cell (others can fit as well)
- toggle switch
Additional parts depending on case version. Battery power and modules are not supported internally by prototype 1.
All guides are using Raspberry OS based on Debian Bookworm.
Install system dependencies:
sudo apt install git libopenjp2-7 libportaudio2 libopenblas0 python3-rpi-lgpio font-freefont-ttf
Call sudo raspi-config
and then select Interface Options > SPI
to enable SPI.
Then select Interface Options > I2C
to enable I2C.
Clone repository and go into it:
git clone https://github.com/SirLefti/piboy
cd piboy
Create a virtual environment:
python -m venv .venv
Install python dependencies:
.venv/bin/pip install -r requirements-pi.txt
Edit the crontab with crontab -e
and add the following:
@reboot cd /home/pi/piboy && .venv/bin/python piboy.py &
To enable logging, use the following instead:
@reboot cd /home/pi/piboy && (.venv/bin/python -u piboy.py >log 2>err) &
On first run, the PiBoy script will create a config.yaml
if not found. In that config file, you can configure
everything that relates to appearance and wiring. When running on a Raspberry Pi, dev_move
must be set to false
if not set by default. For development, it must be set to true
instead, obviously. This setting automatically loads
the right input and display modules. On a Raspberry Pi, ILI9486Interface
and GPIOInput
are being used. For
development, TkInterface
or SelfManagedTkInterface
can be used, both implement full input and display
functionality.
You can define additional color groups under app_config/modes
for your own theme and set the index at
app_config/color_mode
. The first default color group is the traditional classic green theme, the second is a yellow
power armor theme.
This project uses FreeSansBold as default font. If the font cannot be found despite being installed, or you do not want
to install it, place the FreeSansBold.ttf
in the root directory as a workaround.
See instructions for prototype 1.
See instructions for prototype 2.
- display driver
- project base
- build documentation / guide
- case
- file manager app
- map app
- radio app
- environment sensors (temperature, humidity, ...)
- GPS module
- battery power
- speaker for radio app
- auto-mount usb drives (previous solution does not work any more)
- other apps (?)
- battery status (?)
- improved case
- utilities
pyaudio
might require system dependencies to be installed. On macOS, install the portaudio
dependency with MacPorts:
sudo port install portaudio
Then install the package with pip and pass the directories where to find the dependencies:
CFLAGS="-I/opt/local/include -L/opt/local/lib" .venv/bin/pip install pyaudio