TinyCircuits Forum

General Category => General Discussion => Topic started by: WillemH on July 20, 2020, 04:20:25 AM

Title: GPS TinyShield does not provide actual altitude
Post by: WillemH on July 20, 2020, 04:20:25 AM
The Telit JF2 GPS on the GPS TinyShield showed not to be able to follow rapid changes in height.

Based on the example from the GPS TinyShield Tutorial I have made a data logger with a TinyZero Processor Board with accelerometer, a GPS TinyShield and a MicroSD TinyShield. This logger is primarily meant for model rocket applications.
Using two separate buffer memories GPS NMEA strings are recorded in a .txt file and accelerometer outputs, time stamps and other administrative data like buffer usage are recorded in a .csv file.

The NMEA GPS string set consists of GGA, GSA and VTG strings at 5 Hz and GSV strings (normally 3 strings) at 1 Hz.
The 5 Hz command for the Telit JF2 GPS  has been taken from the chapter ” Enable 5Hz Update NMEA” from “Telit_Jupiter_JF2_EVK_User_Manual_r0.pdf” found on internet:
"$PSRF103,00,6,00,0*23\r\n"

To enable sufficiently fast communication between Telit JF2 GPS and TinyZero the baud rate has been increased from 9600 to 19200 after first initialization of the Telit JF2. To set this baud rate at the Telit JF2 side I have used the NMEA command:
"$PSRF100,1,19200,8,1,0*38\r\n"

The functionality of this logger application has been tested under static and dynamic conditions, e.g. car trips. Overall, it works fine on standard, x-y trajectories.

A vertical oriented trajectory was tested using a medium sized low power model rocket, MER-75.
The data logger with the GPS was placed in a specially prepared payload bay in the nose cone of the model rocket. A 2nd data logger consisting of a TinyZero Processor Board, a Combo Sensor TinyShield and a MicroSD TinyShield was placed in another payload bay at the bottom of the model rocket between the model rocket motors. Accurate time synchronization of the logger recordings was done afterwards by matching the z-axis accelerations during the start ramp of the boost phase. This synchronization enables direct comparison of the altitude from the GPS TinyShield and the altitude from the barometric pressure sensor of the Combo Sensor TinyShield. Furthermore, a separate Altimeter 2 was included in the payload bay in the nose cone.

The trial was executed on July, 11 near Almere, The Netherlands, with a surface height of -6 m with respect to sea level. Readings of the Altimeter 2: Apogee: 94m, altitude at parachute ejection: 90 m above ground level.

The attached figure vertically shows the altitude (in m) derived  from the barometric pressure sensor and the GPS for the time interval including model rocket launch, boost phase, ballistic phase, parachute ejection etc up to soft landing. The horizontal axis shows the time in milliseconds.

The part of the barometric sensor altitude curve during rocket motor trust (between 2.2 and 4.0 s) is not correct because the rocket motor trust influences the pressure, but after 4 s, when the motors have burnt out, it is reliable.
The GPS altitude only shows a decent increase with small steps up to 17.5 m and starts decreasing again when the rocket on the parachute is at about 10 m above ground.

It is clear that the GPS is not losing track; latitude and longitude values are not strange.
The minimum number of satellites tracked varies from 8 to 10. All GGA messages during the shown time interval show a fix.

However, it is obvious that the GPS altitude is incorrect during the most interesting parts of the model rocket trajectory. It seems to me that a very slow filter is applied on altitude data inside the GPS .

From my point of view this incorrect GPS altitude is related to the Telit JF2 functionality.
My main question: How can I get perhaps more noisy, but actual GPS altitude output?
Title: Re: GPS TinyShield does not provide actual altitude
Post by: WillemH on August 06, 2020, 10:25:29 AM
In the mean time I have found another Telit JF2 GPS related document on the web, “JF2 Hardware User Guide”, in which it is mentioned in paragraph 11.6.3:

“By default, the JF2 will compute a 2-D solution when possible when performing initial acquisition. In a 2-D solution, the receiver assumes a value for altitude and uses it to estimate the horizontal position.” And also

“To accommodate applications for which these situations are a concern, a version of JF2 firmware is offered that requires a calculated altitude, i.e. a 3-D navigational solution, in order for the receiver to first enter navigation.”

So in fact it is stated that the JF2 by default does not directly calculate the altitude, but basically only a 2D solution instead of a 3D solution. However, the GPS fixes coming from the JF2 are indicated as 3D. I think that this 2D solution based process is the root cause of not providing the actual altitude in a dynamic vertical oriented trajectory.

It is also stated that another version of JF2 firmware is offered that provides a 3D solution. Can TinyCircuits provide this alternative JF2 firmware?
Title: Re: GPS TinyShield does not provide actual altitude
Post by: lennevia on August 11, 2020, 11:54:45 AM
Hello Willem,

Can you link where you found this information?

The Telit firmware might not be open source, but I would be happy to look further into the firmware discrepancies and a possible fix.

Thank you,

Laveréna
Title: Re: GPS TinyShield does not provide actual altitude
Post by: WillemH on August 12, 2020, 11:21:25 AM
Hello Laveréna,

It would be nice to find a fix for the JF2, because it is a nice small solution.

In the mean time I am experimenting with the Sparkfun GPS 15210 connected to a TinyZero set through a proto shield. This Sparkfun board has a very flexible GPS:  u-blox SAM-M8Q. In fact it is a GNSS with default GPS and GLONASS and features e.g. different dynamic platform models. Only drawback is the large size of the Sparkfun breakout board.  The SAM-M8Q GPS chip including patch antenna is small, only 15.5 x 15.5 x 6.3 mm. Perhaps it would fit on a bit higher TinyShield. That it is higher would not be a problem, because it is logical to use it as top shield because of the antenna.

The Telit “JF2 Hardware User Guide” can be found e.g. by Google using the search term “JF2 Hardware User Guide”.

Two results in the top 10 give access to this pdf document Rev.4 from 2013-04-09, links:
 
https://media.digikey.com/pdf/Data%20Sheets/NAVMAN%20Wireless%20PDFs/JF2_Hardware_UG.pdf

https://www.manualslib.com/download/1573008/Telit-Wireless-Solutions-Jf2.html

In the top 10 there is also a link for r5 (Rev. 5 I assume) to the Telit download zone, but that is only for direct Telit customers, and I am not. Perhaps TinyCircuits is a direct customer.

I hope this information is useful.

Willem

Title: Re: GPS TinyShield does not provide actual altitude
Post by: WillemH on August 27, 2020, 09:03:29 AM
Herewith the results of a vertically oriented trajectory trial with the u-blox SAM-M8Q GPS instead of the Telit JF2 GPS.

The u-blox SAM-M8Q GPS on the Sparkfun GPS 15210 board is connected to a TinyZero set through a proto shield (both I2C and UART). The set consists of a TinyZero Processor Board with accelerometer,  a MicroSD TinyShield , a Barometric Pressure TinyShield and on top the proto shield.

I have chosen to control the GPS settings through I2C and to use a selection of NMEA strings as output through UART set at 19200 baud rate. Using two separate buffer memories the NMEA strings are recorded in a .txt file and accelerometer outputs, barometer outputs, time stamps and other administrative data like buffer usage are recorded in a .csv file.

The NMEA GPS string set consists of GGA, GSA (separate strings for GPS and GLONASS) and VTG strings at 5 Hz. The dynamic platform model of the GPS is set to nr 8: “Airborne <4g”, with e.g. maximal vertical velocities up to 100 m/s.

The setup of the trial was comparable with the one as described earlier, but now with an additional barometric pressure sensor in the nose cone of the model rocket, MER-75 with a 75 mm diameter.

The trial was executed on August, 15 near Almere, The Netherlands, with a surface height of -6 m with respect to sea level. Readings of the Altimeter 2: Apogee: 111 m, altitude at parachute ejection: 109 m above ground level.
The attached figures show some results of the trial.

The first figure shows the latitude, longitude and altitude of the trajectory derived from the NMEA GGA strings and transformed to xyz in m with the launch position as origin. Spheres are in red before ejection of the nose cone / parachute and in blue after. The second figure provides the top view, so xy only in m. The third figure vertically shows the altitude (in m) derived  from the barometric pressure sensor (now the one in the nose cone) and the u-blox SAM-M8Q GPS for the time interval including model rocket launch, boost phase, ballistic phase, nose cone / parachute ejection etc up to landing. The horizontal axis shows the time in milliseconds.

While the acceleration during launch shows a short peek > 4g, the GPS was not losing track ; outputs look fine.
The number of satellites tracked during the trajectory was constantly 12. All GGA messages during the shown time interval showed a Differential GPS fix.

As can been seen in the third figure the altitude values from GPS and barometric pressure sensor are rather close to each other. The GPS curve is very smooth, but altitudes before and after the trajectory differ more than the expected order of 1m, presumably because of noise.

In contrast with the Telit JF2 GPS, the u-blox SAM-M8Q GPS on the Sparkfun GPS 15210 board provides actual and useful altitude outputs.
As mentioned before, the major drawback is the large size of the Sparkfun breakout board, approx. 41 x 41 mm, which does not enable application in smaller diameter model rockets.
Title: Re: GPS TinyShield does not provide actual altitude
Post by: Ben Rose on September 24, 2020, 06:37:02 PM
Sorry about the lack of response here. I think you did some good research on the JF2, and it's an older chipset with default firmware aimed at primarily 2D navigation applications. Unfortunately we're not a big volume customer with access to the alternate firmware, as far as I'm aware. However more fortunately, we have a new TinyScreen+ board that we've been working on with a ZOE-M8B module, LSM9DS1, BME280, and microSD slot. Overall size is approximately 26x25x6.5mm, with ~3mm of microSD sticking out on one side. Is this small enough for the rockets you want to test on?

Thanks,
Ben
Title: Re: GPS TinyShield does not provide actual altitude
Post by: WillemH on September 26, 2020, 09:44:23 AM
Hi Ben,

Thanks for your answer.

The new TinyScreen+ board you mention sounds interesting.

Especially, the choice of a u-blox 8th generation GPS is fine because of the large reconfigurability, e.g. dynamic model, combination of GNSS constellations etc. Reconfiguration can be done by sending a series of ubx messages or preferably by using the nice environment of u-center, that translates those rather complex messages for the user.

It is therefore essential that the planned ZOE-M8B GPS will have the possibility for an off-line UART-USB connection to a PC with this u-center programme. It is also essential that the chosen configuration can be kept in internal GPS back-up memory for some time using a  back-up battery.

The combination with LSM9DS1, BME280, and microSD slot provides a compact solution.

Assuming that the GPS antenna is not mounted on the board itself, this new TinyScreen+ board could be placed vertically in many model rockets even with small diameter, down to 35 mm. In case of horizontal position it can be applied with outside diameter down to 42 mm.

I am currently preparing the integration of a Mateksys M8Q-5883 GPS board, a 20 x 20 mm board with the u-blox SAM-M8Q GPS, which also includes the 15 x 15 GPS patch antenna. This is the smallest board with this M8Q-5883GPS I have found.
Connected through a Tiny Shield protoboard, the package with TinyZero, Combo Sensor TinyShield and MicroSD TinyShield will fit in a 35 mm diameter model rocket with the GPS antenna looking upwards.

Willem