Flight Computer Development Update

Flight Computer Prototype Component List

  • SparkFun Arduino Mega Pro
  • Falcom GPS
  • RF Monolithics DNT900 Radio
  • SparkFun Power Shield
  • SparkFun 2000mAh LiPo Battery
  • DS18B20 Temperature Sensor

I started using a battery to power the flight computer and radio.  The SparkFun Power Shield and LiPo battery work very well to provide power for both.  I chose the 2000 mAh battery because the radio may transmit up to 1 watt requiring 1.2 amps for a brief instant.  Additionally, I use some of their sample code to read the battery voltage, and transmit it along with the GPS data.

To improve the data throughput performance, I increased the baud rate of the GPS to 19200 from 9600, and similarly for the radio to 19200 from 9600.  I modify the GPS in the flight computer program because it requires a battery to persist a baud rate different from the default.  Also, if the flight computer detects errors from the GPS, I can reset the GPS and baud rate.  Lastly, the GPS presents multiple NMEA sentences by default.  I reduced them to just two that provide relevant information similar to what an APRS packet contains.  This also improved performance a little.

While I was looking forward to planning battery life tests and communication distance tests, I thought I would add temperature sensors.  I added two Maxim DS18B20 sensors.  With the microlan and single pull up, I thought these were easy to install.  Also, there is sample code available in many places which helped me evaluate them quickly.  After some optimizations to the code, I’ll be ready to begin some tests.

User Suggestions in Development for Release 1.3

During the Spring and Summer of last year, I chatted with a few Flight Track users.  We explored how Flight Track operates, how to set up and track flights, and we also traded stories of past flights.  These conversations were a great inspiration and I received many cool suggestions.  I have implemented some of these, and wanted to both thank you for the suggestions and provide a preview of what I plan for Release 1.3.

Drop me a note with your thoughts at chiefsurfer@surfingsatellites.org!

Automatic Packet Format Detection
I reviewed the APRS Protocol (version 1.0.1) and crafted a few regular expressions to recognized commonly used packet formats.  I have used the automatic detection in reviewing past flights successfully.  I expect to follow some flights over the next few months to validate this feature.


This should eliminate the requirement to define a packet format before tracking a flight.

Delete Wind Predictions
In practice, I capture many wind predictions ahead of a launch to get a sense for flight distance and wind changes.  It helps me select a launch site and plan for recovery.  During the flight, Flight Track uses wind data (usually the most recent) to provide real time prediction for flight path and landing site. In reviewing the flight, it will use the same wind data (the most recent).  It makes sense to keep that wind data and to delete the others (I’ve never used them again).


Release 1.3 provides a method for deleting older wind data, and improves the method of selecting wind data for predictions.

Flight Track Hot Key
Occasionally, I adjust the map in MapPoint and switch back to Flight Track by clicking on it or using Alt-Tab.
I had a suggestion to bring back Flight Track using a hot key.  MapPoint is not all that friendly when I attempt to use hot keys but in this case it worked out well.  After MapPoint loads, you will be able to hold down Alt and press T (for Tools), and T (for Flight Track) – that is, Alt T T.  I have been using this exclusively since I implemented it and I really like it.  I have also used it to bring focus back to Flight Track from MapPoint.


Review All Packets
One user suggested a feature to review all the packets Flight Track receives.  This would help verify that packets are being received, AND that their packets get processed.  While this ability has been a part of Flight Track for a few releases, it was hidden (right-click the Bearing and Distance label to switch between all packets and just flight packets).
Release 1.3 features a View menu to select Flight Packets or All Packets.  The same menu also provides for toggling between charts.


Indicate Altitude and Direction
Flight Track displays the position of the payload on MapPoint with its flight designation.  Release 1.3 features both the altitude and direction (A for Ascending, D for Descending) in addition to the flight designation.


The Landing Zone
I am experimenting with an indication of the landing zone on the map.  To create the landing zone, I run a prediction in multiple prediction mode.  I collect the four extremes of the prediction and draw the landing zone (roughly a rectangle).  The Landing Zone displays during tracking or review.


With Respect and Appreciation, Thank You Flight Track Users!

Flight Computer Development Update 9/2013

I successfully transmitted live GPS data between DNT900 radios!

The remote radio is under Arduino control where I built a DNT900 library to interact with the radio.  This allows the main program to capture GPS data, format it for transmission, and transmit it to the base.
The base radio has a similar DNT900 library in C#.  The program, a prototype for a larger data management program, captures and displays the GPS data sent from the remote.  The transmission distance was about two meters.

The transmission of live GPS data has been a goal since last December.  With this milestone, I am planning next steps.  Certainly the end result is a PC board, however I want to evaluate longer distances, and provide for peripheral devices (limit switches, temperature probes, pressure sensors, and the like).

New Flight Computer Development

The development of my new flight computer continues although slower than I prefer.  I have complete the following experiments successfully (I am using a Falcom FSA03 GPS, a RFM DNT900 900 MHz spread spectrum radio, and an Arduino Mega Pro).

  • Captured, parsed, and displayed GPS data using the TinyGPS library in the Arduino
  • Use the Arduino to send data from one radio to another

While the goal is to integrate the transmission of GPS data from one radio to another,  I am spending some time learning to create efficient coding structures to facilitate the goals of this platform.

Flight Track 1.2.1 Testing

With the changes completed for the next Flight Track release, I started evaluating it by following balloon flights.  This is possible because Flight Track can request data from APRS-IS and process it as if it were transmitted from the balloon payload.  In this manner, I can evaluate the tracking functionality as if I were on the ground joining your chase.
Recently, I followed a flight in Saskatoon and one in Texas.  While the tracking continues to work well, my primary intent was to evaluate changes made to interpret data from different locations.  For example, many European countries use a comma to separate floating point numbers, and the date format varies as well.  To develop and evaluate this, I set my laptop to operate as if it were in a different country.  For the Saskatoon flight, my laptop was in Poland, and for the Texas flight, my laptop was in Canada.
I found small display errors in the Pushpin information boxes, and found I did not port some code changes correctly.  With these errors corrected, the evaluation of Flight Track continued and both flights were successfully followed.  After one or two more flights, I’ll publish the new release.

New Hardware Development

I was able to finally start a hardware development.  It is an ambitious project to replace my existing flight computer.  The plans include an Arduino at the core to manage telemetry, data collection and storage, and possibly experiments.
I started with an investigation into the DNT900 Transceiver built by RFM.  This 900 MHz transceiver features high data rates and a 40 mile line-of-site range.  I successfully prototyped one transceiver just to request configuration information from it.  Next, I will set up the second transceiver and drive it from the Arduino.

Wind Data Transaction Integration

I am completing the integration of a web transaction with the Air Resources Laboratory (ARL) hosted at the NOAA website.  The ARL provides wind data forecasts, known as a GFS Sounding, for up to two weeks in the future.
With their permission, I submit the launch site coordinates and other launch data, present and collect the Security Code (it is required), and finally retrieve the predicted wind data.  Flight Track uses the wind data to make a flight path prediction.  With this integration, the prediction workflow is easier and faster.  In testing, Flight Track retrieves the data in seconds where a manual method may take up to a minute.
Some of the interesting bugs along the way were entering the wrong Security Code, misunderstanding when the wind data model time starts, and selecting the correct Forecast Cycle.  Looking forward to completing this testing and making this available to Flight Track users!