Quantcast

New Featherweight GPS Tracker text interface

The Rocketry Forum

Help Support The Rocketry Forum:

Adrian A

Sponsor
TRF Sponsor
TRF Lifetime Supporter
Joined
Jan 22, 2009
Messages
2,307
Reaction score
275
Ground stations for the Featherweight GPS Tracker system are now shipping with a new feature.

Up until now, the USB port on the ground station could only been used for battery charging. The new version of the ground station makes the USB port available as a serial port text interface that can work with pretty much any desktop or laptop computer, whether Windows or Mac or Linux.

This feature is completely optional; the Bluetooth connection to an iPhone or iPad are unaffected, and for the vast majority of users, the iFIP phone app will continue to be the only way they use the system. Also, we're not currently planning to provide any special software that uses this feature; all of our focus is on improving the functionality available through the phone app.

But if you're o.k. with writing your own software or using a terminal program like RealTerm or Putty, you can watch live data like what's shown below, save it to a file to sort, filter and plot in Excel or Matlab, or go wild and write your own application to do whatever you want with the data. If you're not, that's fine, just ignore this thread, 'cause it's going to get geeky.

Here's what it looks like using RealTerm:

1605458569312.png


If you look closely at the screen shot above, you can see there is a mix of readable text and garbage-looking binary output. The garbage binary output is an unavoidable side effect of the fact that the data lines going to the USB port are shared with the data lines connecting the two microcontrollers on the board. The main microcontroller sends out binary packets that go to the Bluetooth microcontroller and then on to the phone, and also sends out the ASCII text packets that you see here. The ASCII packets all start with an "@" character, and then have the packet type, packet length, and a date/timestamp. There are 14 different packet types that are documented in the command/data dictionary that you can download on the Featherweight GPS product page, a snapshot of which is attached below.

Taking a closer look at the middle lines of the above screenshot may give some idea for the possibilities:

1605460603063.png

First, a little background on the Featherweight GPS system "lost rocket" feature for those who aren't familiar: Every Featherweight Tracker transmits once per second to its paired ground station during flight, on its own dedicated channel. In between those transmissions, it's listening on a special lost-and-found channel to hear if there are any rockets in the area that are out of communication because they have landed and don't have a line of sight to their own ground station. If it does receive that lost rocket data, it sends the now-found rocket data down to its ground station. The ground station is communicating with other local ground stations on a special GS coordination channel when it's not talking with its paired tracker. A ground station that receives lost rocket data sends it along to the other ground stations at the launch. This way, if you fly your rocket and it lands behind a hill outside of LoRa radio range, if a friend flies her rocket, it will hear your rocket and automagically send your rocket's data back to you. The lines above show what this looks like from the perspective of a ground station that just received the lost rocket packet.

The first line is the RX_FOUND packet that ground station puts out when it hears that its tracker received a packet from a lost rocket. Here's how to decode it (taken from the command and data dictionary:

Sync CharParse typePacket LengthYearMonthDateTimeCRC CheckLoRa ID of senderGS Received counterRelay Sent counterSignal StrengthAck counterAck Sent CounterAck RSSIFound LoRa IDEDM Received by relay CounterEDM Sent CounterFound RSSISpreading Factor
@RX_FOUND2042020111516:49:43.0CRC_OKsecondTrkPkRx47467PkSnt49461p_RSSI-88AckRx48551AckSnt49442a_RSSI-95lostexampleFndRx148FndSnt0f_RSSI-28SF10f911000000CRC:94C5

The Ground station received a packet from its tracker called "secondTrk", which is passing along data from the "lostexample" rocket. The packet counters and received signal strength (in dBm) of the lost rocket to the tracker, the tracker to the ground station, and the GS acknowledgment to the tracker are all shown.
The next line is yet more information about the link from the lost rocket to the tracker that is relaying the data, the "relay" below:

Sync CharParse typePacket LengthYearMonthDateTimeCRC CheckLoRa ID of senderRelay Signal StrengthRelay delta AltitudeRelay horiz distanceFound battery voltageRelay battey voltageRelay Temperature
@RLY_DIST1562020111516:49:43.0CRC_OKRelay:lostexampleRSSI-28Relay_dAlt34Relay_Dist:4mFnd_mv:3763Rly_mV:35200degCCRC:EA10

This line describes the signal strength and geometry between the relay tracker and the lost rocket, based on the GPS data from the two units, along with the battery voltage of the tracker and the lost rocket. The relay temperature is currently an unsupported feature.

The next 3 lines give the GPS information from the found rocket, the tracker relay, and the ground station. Below is the example for the tracker
Sync CharParse typePacket LengthYearMonthDateTimeCRC CheckGPS Unit TypeLoRa IDAltitude ASLLatitudeLongitudeHoriz. VelocityHorizonal HeadingUpward VelocitySatellite Fix TypeTotal SatsSats >24 dB StrengthSats >32dB StrengthSats >40dB Strength1st Sat Info2nd Sat Info3rd Sat Info4th Sat Info5th Sat Info
@GPS_STAT2032020111516:49:43.094CRC_OKTRKsecondTrkAlt5676lt39.55612ln-105.10319Vel0-10Fix3#141262000_00_00000_00_00000_00_00000_00_00000_00_00CRC:95DF
BytesFeetDecimal DegreesDecimal Degreesfeet/secdegreesfeet/secondCountCountCountCounthex

Here the table is mostly self-explanatory. The detailed satellite info (satellite az, el, and strength) is known onboard the tracker but is not passed along to the ground station to reduce airtime. The ground station GPS data is all zeros because it, like the rest of the new ground stations, rely on the phone for its GPS location data, and do not have their own GPS module installed.
 

Attachments

Adrian A

Sponsor
TRF Sponsor
TRF Lifetime Supporter
Joined
Jan 22, 2009
Messages
2,307
Reaction score
275
Part 2:

Commands are also possible through text. The available commands are:


CommandComment, functionExample w argExample Response
set TrackerIDSets the ID string for the hardwareset TrackerID DRM_SN001<none>
?stateSet the flight state (00: GS default, 01-07 reserved 08: monitor (no acks) 09-10: reserved 11: Monitor only coordination channel)?state 08+state
?saveSaves the flight state used the next time the unit boots?save 01+save
set freqSets the frequencyset freq 915000000RX_TMOUT packet
?DT4Shows the firmware build time and various settings?DT4+DT4 packet


The ?state function can put the ground station into one of three available states: The default state (00) in which the GS will communicate with its tracker normally, a monitor state (08) in which the GS listens to a channel but won't ever transmit acknowledgements, and the coordination monitor state (11), where the GS stays listening to the GS coordination channel full-time. The latter is useful if, for example, you wanted to know what are all the channels current in use at the launch site, and to get data on all the lost rockets as they come in.

For the 3 of you who are still interested after all this, get your new ground station and have fun!
 

BTharpe

Active Member
TRF Supporter
Joined
Dec 5, 2019
Messages
25
Reaction score
9
For a computer science based nerd like me, this is fantastic to have access to the raw data!

Bring on the NumPy and MatPlotLab :)
 
Top