After a few months of gathering pieces, writing code, and actually building the payload, PiBalloonII is ready.
The subsystems of PiBalloonII consist of:
- Raspberry Pi B+
- uBlox NEO-6M GPS (UART/TTL level)
- TI TMP513 Power Monitoring System (I2C)
- DS18B20 Temp Sensor (1-Wire)
- DHT11 Humidity Sensor (Proprietary)
- BMP180 Pressure Sensor (I2C)
- Dorji DRA818V 2M Transceiver (UART/TTL level)
- 8xAA Ultimate Lithium batteries (in two 4xAA configuration)
Each of the sensors listed above is interfaced to the Pi with their respective protocol. Due to the nature of the sensors, some can update very quickly, while others can take up to two seconds. The barometer can update at 53Hz, while the humidity sensor can update once every two seconds. Because of this, it’s easiest for each sensor to maintain its own log file.
The GPS feeds a program called GPSD. This program makes it very easy to cross-interface multiple types GPS units, while also providing libraries to Python. As learned on the first PiBalloon, it’s best to set the GPS in high-altitude mode. I didn’t know such a mode was needed, and at 12,000 meters, the GPS started sending garbled data. The GPS purchased has a battery, so it’s easy enough to set the configuration on the computer and it will maintain the settings.
The TI TMP513 is the coolest sensor on the payload. It will measure voltage and current, while also providing up to three external temperature sensors. Here is a snippet of the TMP513 log file:
1417641807.10, 12.368, 318, 30.44, 27.00, 20.44, 318, 676 1417641808.31, 12.172, 680, 30.44, 27.38, 178.25, 318, 680 1417641809.27, 11.972, 683, 30.50, 28.19, 255.94, 318, 683 1417641809.93, 11.984, 689, 30.50, 28.25, 255.94, 318, 689 1417641810.58, 11.964, 606, 30.50, 27.62, 248.38, 318, 606 1417641811.68, 12.180, 304, 30.50, 29.25, 255.94, 304, 606 1417641812.74, 12.352, 311, 30.44, 27.00, 18.94, 311, 606 1417641813.42, 12.352, 323, 30.44, 27.00, 19.31, 323, 606 1417641814.08, 12.352, 312, 30.44, 26.94, 19.31, 312, 606 1417641814.76, 12.356, 312, 30.44, 26.94, 19.19, 312, 606
The first column is UNIX epoch time. All log files will share this property. The second column battery voltage, followed by current (in mA). The fourth column is the onboard temperature sensor on the TMP513, then a remote internal temperature sensor and a remote external temperature sensor. The last two columns are idle current and transmit current.
As you can see, a temperature of 255.94C is very unlikely, so I’m going to write it off as RFI problems on the remote sensor. Fortunately, we have a digital sensor for the external temperature readings, with almost no chance of RFI.
The DS18B20, DHT11, and BMP180 measure temperature, humidity, and pressure respectively. I much prefer the DS18B20 to the TMP513 for temperature readings at the moment, as I don’t yet fully understand how to calibrate the 513 and minimize RF interference.
The final item on the payload list is the Dorji DRA818V. This is our 2 meter transceiver. Originally I planned to fly two of these, but after much thought and some technical difficulties, I determined that we could move a similar amount of data, with little compromise, using only one radio. The compromise made pertains to the quality of the SSTV images. Because SSTV can’t use the transmitter continuously, I opted for a 36 second Robot 36 image instead of a 5 minute Scottie DX image. The visual difference is definitely noticeable, but it’s not worth the trouble of maintaining a second transmitter.
To save time, the scripts will compile APRS packets while the SSTV image is transmitting. Theoretically, I could reduce the cycle down to about 45 seconds, but I’m going to opt to keep it at 60 seconds to give the transmitter some time to unkey and cool (ever so slightly).
Using the Energizer Ultimate Lithium Batteries, I’m able to get a predicted 4 hours of use from 8 batteries. The Pi uses about 300mA, transmitter 750mA and we lose 100mA in the voltage regulators, so we can assume 1.25A of draw at any given time. After cross referencing the datasheets, I can predict we will see at least 4 hours, if not more from a given set of batteries.
All of the code can be found on GitHub.