Dual GPS using SkyTraQ receivers

In this topic I want to introduce my project as Brian asked me to do.

In an earlier project (handheld bluetooth RTK and NTRIP base station) I used the SkyTraQ receiver NS-HP-GN2 (NS-HP-GN2 : PX1122R Multi-Band Quad-GNSS RTK Breakout Board - NavSpark Store). This is a GNSS receiver supporting
GPS L1 / L2C
Galileo E1 / E5b
Beidou B1I / B2I
with RTCM base stream input and NMEA output. It also could be configured for use as base station to output RTCM or SkyTraQRaw data or “Precisely Kinematic Base” to get high accurate heading on moving vehicles. The NS-HP-GN2 is a breakout board based on the PX1122R chip wich starts from 99$ (125$ as breakout board) and is therefor a bit cheaper than the often used simpleRTK boards.

Across this summer I’m planning to build a dual antenna setup using two of these receivers. It should be easily configured to send a RTCM stream to the first receiver, give the output to the second receiver and take the output from second receiver to AgOpenGPS. Next to the “normal” NMEA stream you get $PSTI,032,… messages wich include heading as angle between the vector of the two receivers and north, the “upProjection” wich is the difference in altitude of both receivers and the “baselineLength” wich is the distance of the receivers. I plan to mount two antennas next to each other on the roof (with distance as far as possible). You get the actual heading of the tractor with adding 90 degree to the heading from output and you could calculate the roll from upProjection and baselineLength.

What I already did is coding the parsing of the $PSTI stream in AgOpenGPS which you could find under this PullRequest and added by Brian in this Commit:

I tested the code yesterday inside AgOpenGPS (Visual Studio) with a setup of two NS-HP-GN2 receivers on my working desk to get the $PSTI,032,… output and it worked so far (I got values for roll and heading which looked properly), but I cannot say anything about accuracy and reliability yet as I have only had float RTK on that setup.

I will post the progress in this topic if you like.



Absolutely keep posting! This is very interesting.

Right now the PSTI support is in the source code. Once you confirm it works, will update the msi as well. At least now its in the code so with every change you don’t need to add it.

Dont expect anything the next days… Have to do a lot on the field: planting summer crops, fertilizing and maybe spraying winter crops, spreading slurry…
I hope to find some time to build a little test setup for a test outside afterwards :wink:

1 Like

Ya we all face that challenge, work before play - some of the time at least

Ya keep us posted. Pretty new here and trying to get the concept.

Just a question. With the dual antenna does that eliminate the need of a correction station for sub cm accuracy?

No, you still need the base.

1 Like

I was/am really busy at the moment, so don’t have the time I would like to have for this project… Just some small tests on last weekend I could report to you:

I used two of the NS-HP-GN2 receivers with two beidou gnss survey grade looking antennas configured as kinematic (moving) base und rover outside behind my shed but without any correction signal from a static base. The results in aog were really good looking: when moving the antennas, the heading and roll were facing the right way and without any movement the values were quite stable.

To use this setup with my NTRIP-Base I will need one additional receiver and antenna as I only own two at the moment. Also I’m waiting for a firmware update from NavSpark to implement the PreciselyKinematicBaseMode wich I need for this and is only available for some older receivers at the moment. They want to implement it in the second quarter (so right now) as you could read in their forum.

I’m also thinking about developing a little pcb for the two gnss receivers and an serial-ethernet module or even a big all in one pcb (with smd parts) with everything including the gnss receivers, an arduino, a cytron… But at the moment this looks quite far away for me… I’ll see how much time I will have for this the next weeks/months. Some days ago I played a bit with KiCad and built an all in one pcb with everything from the standard pcb and additionally two gnss receivers, an serial-ethernet module, a can-interface and some fuse-holders:

Now I hope to see the firmware update from NavSpark soon. I will then try it with my two receivers und some public ntrip stream (I think the best one is about 150 km away :roll_eyes:) and if it looks promising I will order two more receivers (99$ as smd part hopefully fitting my pcb or 125$ as breakout board, I’m not sure about this at the moment…) and antennas.

1 Like

No, dual antenna is “only” to get some data about the difference in position of the two antennas. You could calculate heading and roll from a dual antenna setup if you place them next to each other.

@THiamu great experiment you’re doing here !
I’m currently planning to design a PCB for AOG (hes another one, see here : Project : designing an all-in-one compact PCB for AOG - what do you need?) which will include two GNSS recievers.
The PX1122R looks like a promising alternative to the ZED-F9P : cheaper, smaller and with similar performances (at least at first sight). I have a few questions about it :

  • Are there GND pad under the module ? (I didn’t find a photo of it from behind). If there are none, the module can be soldered by hand more easily, which is nice.
  • The heading and roll calculations are made internally, which means there is no need for an ESP32 like here ?
  • How does it communicate with AOG ?( I guess UART to USB)
  • Is AOG now fully compatible with a dual PX1122R setup ? If not, are there plans to make it compatible in the near future ?
  • Is there a software similar to U-Center allowing to configure / monitor the modules ?
  • Did you manage to build a RTK base station with NTRIP with this module ?

At the moment I really dont have any time to go further with my project… So in fact nothing happend since my last posting…
I will try to answer your questions:

I dont think there is one. In fact the module is a small pcb with a head on top and has four (?) ground pads spread around the sides. In a previous project I used the NS-HP-GN2 with is the PX1122R as breakout board with 2,54mm pin layout on two sides.

Thats not completely right… At the moment Im waiting for an firmware update for the PX122R with will implement an precisely kinematic base mode. Then it is possible to give the NTRIP stream to the first receiver, the output from first to second receiver and then the output from second receiver to AOG. Next to the normal RTK NMEA output you get some data about the position between the two receivers (baseline data). The interesting data for me/us is the heading between the two receivers and north and the up-projection (difference in hight). With these data we could calculate heading and roll directly in AOG (on the windows tablet). I already coded the necessary lines and Brian also implemented it already (AgOpenGPS/CNMEA.cs at master · farmerbriantee/AgOpenGPS · GitHub, lines 279 and 555-606)
The firmware update I mentioned earlier should have been released in second quarter 2020, but Im still waiting and will not buy another receiver until its available for download! Without the update I tested the existing kinematic base mode + rover mode with two receivers. The values for heading and roll in AOG look promising, but you cant get RTK this way…

Yes, the receivers need one serial input with the RTCM stream from base and give an serial output with the NMEA stream. You could use one UART to USB adapter for the two receivers. In my setup I plan to use a serial-ethernet module to get a communication over udp and some pins and jumper/bridge connectors for configuration (like this: CSE-M53N | elmicro.com ; german website). The PX1122R has one TXD pin for data output but two RXD pins for RTCM input or confiuration input.

I think I already answered this :wink:
It should work, but there may be some improvements to make in the AOG code for the nmea-parsing of the $PSTI,032 sentence I think.

There is a software called “GNSS Viewer” wich shows the data and which you use for configuration. Its made for some more different gnss modules, so you have to search a bit for the options you need, but you dont have to make a lot of configuration. I cant compare with U-Center, as I never used it…

Yes. I build a little setup with a raspberry pi zero, one NS-HP-GN2, one UART-USB adapter, one ethernet head for the raspi, one gnss antenna (“survey grade looking”) from aliexpress and one power over ethernet adapter. Im using this software: GitHub - eringerli/RpiNtripBase wich works good for me. All the parts except the antenna I put inside a small box (about 11x11x3,5 cm I think).
I also build a gnss stick with a second module, a little battery from a powerbank and a bluetooth module witch I could connect to my mobile phone. With the lefebure ntrip app I get a rtk position with the gnss stick and my base pretty fast and reliable. I use this setup to save the positions of my drainage boxes (underground). The next time I could easily find them.

I hope I could answer all your questions so far.
I agree with you, that this receiver looks promising (“cheaper, smaller”), but at the moment the necessary firmware for an RTK setup is still missing :sleepy: and Im not sure if we will get more than 5Hz update rate with a working setup.


Thank you very much @THiamu for your answers. So, besides the firmware update issue, it seems that the PX1122R can really do the job. Once the update gets there, the setup will become even more simple as all the calculations of interest for AOG will be done internally. But because the functionality is not there yet, we don’t know what the refresh rate will be (the datasheet says 10Hz max for RTK, and 8Hz max for moving base, so what about the two combined ? :thinking:)

I don’t know yet if I will use this new receiver or the ZED-F9P. This one has a lot of advantages, but is newer and less well known. I think I’ll go for the U-Blox solution for now, and update my PCB in case of new developments.

If you continue this way, please keep us posted !

I bought three PX1122R EVB modules after reading this post. I just liked the idea of the module outputting nmea and not needing a pi. They were a lot easier to set up initially than the ublox co99 modules I’ve been using. Gnss viewer is a lot simpler to me.
The only knowledge I have on all of this is what I’ve learned from the obviously very intelligent people on this site.
My questions are. I don’t know how to connect the rover and moving base together. I have two ublox antennas forward and rear for heading only.
Have also configured the third as base. Using 3dr sik telemetry radios, and cant get them to work either. Connect 5v and ground to the boards and they pair immediately. When I connect the TX from rover radio to rx on rover, red light starts blinking, but green light starts blinking, signaling it’s no longer paired. Same with the base. Set them up in mission planner same with 56k baud, all other setting same at default.

I never used the EVB Modules… What I could say from using the breakout boards is, that you have to connect TXD (output) from moving base to RXD2 (correction input) on rover. You then get $PSTI,032 message output with data like up-projection und angle between north and the two modules. You dont get RTK Postition at the moment, as you cant give the correction from your static base to the moving base! This is where we need the precisely moving base mode, which is still in development as they told in their forum :roll_eyes:
At the moment AOG calculates an the roll from the up-projection and the distance between the antennas and also corrects the heading by 90 degree as the antennas have to be next to each other for the roll. I’m not quite sure, but I think the rover has to be on the left and the (precisely) moving base on the right, but you could easily try this out with a working setup. Of course you also have to set the right configuration in AOG for the source of heading and roll.

As I dont have time to go on with the project at the moment I hope the firmware update will be available when I need it… Sure I will keep you updated!

One thing about the breakout-boards I have to say here: There is only this little coax connector on the pcb wich is not really reliable. I have had some issues with it while building my base and gnss-stick. I wouldnt trust these inside the cab of a tractor. This is also one reason why I think about building a custom pcb with the PX1122R an a bigger connector on the pcb edge like on the evb module.

Thanks THiamu, I have the antennas front of cab and rear for heading only. I am plenty pleased with mma for roll. I didn’t realize we couldn’t connect for rtk yet. Might have been a little hasty on my purchase. For now I guess I’ll just use one module and bno55 as we are intersecting cotton rows and need rtk correction. Please post if they get they release the coding for the dual setup. Thanks again

A question @Jhmach : is there a specific reason that you chose a front/rear antenna setup + MMA ? If you went for a left/right setup, you could get rid of the MMA as well, if I’m correct

I believe you are correct, and I may be wrong in my thinking, as I am still very new to electronic side of this, but it’s my understanding if you were to lose connection to one of the antenna the offset to center would be off, where if I lose connection front and back I only lose heading. Please correct me if this is not so, because I would prefer having less components in the box.

I think this is not exact, but as no one had yet the opportunity to implement a moving baseline + rtk fix setup with SkyTraq hardware, what will follow is only assumptions.

I guess one of the two receivers in the cab will get the NTRIP stream and the other not. So if you lose fix on this receiver, the tractor position becomes inaccurate. If this receiver is also the moving base (like in a setup using two ZED-F9P), you keep the heading. On the other hand, if only the other receiver (the rover of the moving baseline system) loses rtk fix, heading becomes inaccurate but you should keep the absolute position of the tractor.

To properly address these issues and provide AOG with the most relevant data, it would probably be necessary to use an ESP32 or equivalent as an interface (like it is done with dual antenna setups with ZED-F9Ps and MTZ8302 program). Advantages would be at least the following :

  • Reduced complexity in AOG to keep it compatible with as much receivers as possible
  • Ability to generate a “virtual antenna” in the middle of the two physical antennas, with offsets if needed

Here, people discussed about physical implementation of a left/right moving baseline setup, and here about the (dis)advantages of a front/back setup.

I have to share some information about the PX1122R with you:

Some days ago they released a new firmware with an “advanced moving base mode”, see User-Guide page 28.
So I think what I was waiting for should be possible now. At the moment I only have two modules at home from wich one works inside my base on the roof of my house, so I cant test the setup at the moment… Maybe @Jhmach wants to try it out and give some feedback? If you take the NMEA output from Receiver C into AOG and put antenna C on the left (antenna B on the right) I would hope it already works with AOG.
As far as I read the User Guide I think the maximum update rate will be 5Hz. For the experts with a working setup: Is this enough? Do we need more than 5Hz?
I also asked some additional questions on the NavSpark-Forum about NMEA output, update-rate and pin-description.

If I find some time for that, I will design a pcb with two PX1122R the next days (weeks) and order all the parts for a first setup…

This is great THiamu. However I used my second antenna this last week for a permanent base on the barn. I will get another one coming and give this a try.
Also thanks for sending a simple hookup drawing, it take most of the frustration out of these new setups.