White Vest is a project for collecting, logging, emitting, and visualizing telemetry from a model rocket containing an inboard Raspberry Pi Zero with an Arduino receiving telemetry. To learn more about this project, visit my blog post documenting it. This project is named after the iconic white vest that flight director Gene Kranz wore during Apollo 13.
This project requires a Raspberry Pi Zero for the inboard systems and an Arduino for ground telemetry reception.
The inboard system records video and measures pressure, temperature, altitude, acceleration, and orientation. The total payload weight of the module, with 3D printed parts for mounting, weights about 115 grams, but your mileage may vary.
- Raspberry Pi Zero W
- Lithium Ion Cylindrical Battery - 3.7v 2200mAh
- PowerBoost 500 Basic - 5V USB Boost @ 500mA from 1.8V+
- Adafruit RFM95W LoRa Radio Transceiver Breakout - 868 or 915 MHz - RadioFruit
- Adafruit BMP388 - Precision Barometric Pressure and Altimeter
- Zero Spy Camera for Raspberry Pi Zero
- Triple-axis Accelerometer+Magnetometer (Compass) Board - LSM303
- GPS Module
The air hardware is wired to the following Raspberry Pi pins:
- PowerBoost 500 Basic:
- 5v -> Pi 5V
- Ground -> Pi Ground
- BMP388 (I2C)
- VIN -> Pi 3V
- GND -> Pi GND
- SCK -> Pi SCL
- SDI -> Pi SDA
- LSM303 (I2C)
- VIN -> Pi 3V
- GND -> Pi GND
- SCL -> Pi SCL
- SDA -> Pi SDA
- Camera
- Pi Camera ribbon connection
- RFM95W (SPI)
- VIN -> Pi 3V
- GND -> Pi GND
- SCK -> Pi SPI SCLK
- MOSI -> Pi SPI MOSI
- MISO -> Pi SPI MISO
- CS -> Pi D5
- RST -> Pi CE1
- GPS Module (Serial)
- VIN -> Pi 5V
- GND -> Pi GND
- TX -> Pi RX
- RX -> Pi TX
- Momentary, Normally Open Switch
- In -> Pi 3V
- Out -> Resistor -> Pi D16
The ground hardware, much more simply, is wired to the following Arduino pins:
- RFM95W
- VIN -> Arduino 5v
- GND -> Arduino GND
- G0 -> Arduino 13
- MISO -> Arduino 12
- MOSI -> Arduino 11
- CS -> Arduino 4
- RST -> Arduino 2
The air software logs all sensor readings to a timestamped CSV file under data
and transmits them using a LoRA transceiver, and data logging cuts off after 30 minutes. The transmitted data is a simple binary sequence of doubles in the following order:
- Unix Timestamp
- Barometric Pressure (Pascals)
- Temperature (Celsius)
- Acceleration X (M/s/s)
- Acceleration Y (M/s/s)
- Acceleration Z (M/s/s)
- Magnetic Direction X (Degrees)
- Magnetic Direction Y (Degrees)
- Magnetic Direction Z (Degrees)
- Latitude
- Longitude
- GPS Signal Quality
- Number of GPS sats
The ground Arduino software receives transmitted packets and echos them out to serial encoded in base 64. Install the ground.ino
file using the Arduino IDE.
The dashboard is a text-based tool for tracking and logging received telemetry. To use it, download a release from the GitHub project or build the dashboard using the following steps:
$ cd ~
$ git clone git@github.com:johnjones4/white-vest.git
$ cd white-vest/ground/dashboard
$ make install
$ make build
Then, run the dashboard using the following build/dashboard-Darwin-i386 --input /dev/cu.usbmodem143101 --output text
. Note that dashboard-Darwin-i386
will change based on the system you are using and /dev/cu.usbmodem143101
is the path to the Arduino serial connection. To view the web dashboard, pass in web
for the --output
option and open http://localhost:8080/.
The tool is a utility for after-flight work. To use it, download a release from the GitHub project or build the dashboard using the following steps:
$ cd ~
$ git clone git@github.com:johnjones4/white-vest.git
$ cd white-vest/ground/tool
$ make install
$ make build
The overall command structure is:
$ white-vest-tool [TASK] [FLAGS]
Taks/Flags:
convert
: Converts telemtry data to plain old JSON for analysis--input
: The file path to the input file--output
: The file path to output to--type
: The "type" of data. Right now the only valid option, and the default value, isinboard
. This is the CSV file generated on the telemetry module during flight. I recommend reviewing the data and clipping the pre-launch and post-landing useless data for faster conversion.--progress
:true
orfalse
, print a progress bar during conversion
summary
: Analyze the data and print a few summary data points like apogee, max v, etc--input
: The file path to the input file (use the file made duringconvert
)
chart
: Generate altitude and velocity charts--input
: The file path to the input file (use the file made duringconvert
)--ouput
: The directory to save the charts to
This software requires I2C, SPI0, and Serial to be enabled on a Raspberry Pi.
To install this software on a Raspberry Pi, execute the following:
$ cd ~
$ git clone git@github.com:johnjones4/white-vest.git
$ cd white-vest/air
$ make install
Then, run make install-service
To start the software in the background, run sudo systemctl start air
In addition, you may verify wiring connections by running make sensor-test