Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 07:07 02 Aug 2025 Privacy Policy
Jump to

Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.

Forum Index : Microcontroller and PC projects : VK16E GPS module

     Page 1 of 2    
Author Message
robert.rozee
Guru

Joined: 31/12/2012
Location: New Zealand
Posts: 2442
Posted: 10:39pm 07 Dec 2015
Copy link to clipboard 
Print this post

hi,
i'm playing around with a VK16E GPS module and seeing some unexpected results. while the GPS time is returned correctly, as are the number of satellites in view, the location (latitude and longitude) remain static once a fix has been obtained, even if i start walking around with the module.

from one end of the driveway to the other (30m) i see no change in latitude or longitude. yet if i power the module down and restart it, then the location information updates.

has anyone seen similar behaviour? i am using the $GPGGA sentence to obtain the information. is this the correct sentence to use? or do i need to send 'update' commands to the module to get it to get a fix from a new location?


cheers,
rob :-)
 
palcal

Guru

Joined: 12/10/2011
Location: Australia
Posts: 1993
Posted: 11:04pm 07 Dec 2015
Copy link to clipboard 
Print this post

Hi,
I have used this module successfully, try using the GPRMC sentence.
Paul.
"It is better to be ignorant and ask a stupid question than to be plain Stupid and not ask at all"
 
robert.rozee
Guru

Joined: 31/12/2012
Location: New Zealand
Posts: 2442
Posted: 11:18pm 07 Dec 2015
Copy link to clipboard 
Print this post

have just tried using the $GPRMC sentence, but it reports exactly the same values for latitude and longitude.

cheers,
rob :-)
 
MicroBlocks

Guru

Joined: 12/05/2012
Location: Thailand
Posts: 2209
Posted: 11:20pm 07 Dec 2015
Copy link to clipboard 
Print this post

Can you post some of those sentences.
There might be info in them that can explain it.

Microblocks. Build with logic.
 
robert.rozee
Guru

Joined: 31/12/2012
Location: New Zealand
Posts: 2442
Posted: 11:43pm 07 Dec 2015
Copy link to clipboard 
Print this post

  MicroBlocks said   Can you post some of those sentences.
There might be info in them that can explain it.


here is a sample of data as i walk down the driveway:

$GPGGA,093928.205,4331.2730,S,17239.1438,E,0,00,,14.2,M,11.3,M,,0000*57
$GPGGA,093929.205,4331.2730,S,17239.1438,E,0,00,,14.2,M,11.3,M,,0000*56
$GPGGA,093930.205,4331.2730,S,17239.1438,E,0,00,,14.2,M,11.3,M,,0000*5E
$GPGGA,093931.205,4331.2292,S,17239.1413,E,0,04,,16.3,M,11.3,M,,0000*5C
$GPGGA,093932.205,4331.2333,S,17239.1415,E,0,04,,14.9,M,11.3,M,,0000*5B
$GPGGA,093933.207,4331.2648,S,17239.1432,E,1,05,1.8,4.4,M,11.3,M,,0000*4F
$GPGGA,093934.205,4331.2754,S,17239.1438,E,1,05,1.8,0.8,M,11.3,M,,0000*44
$GPGGA,093935.000,4331.2731,S,17239.1437,E,1,05,1.8,1.5,M,11.3,M,,0000*42
$GPGGA,093936.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*4D
$GPGGA,093937.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*4C
$GPGGA,093938.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*43
$GPGGA,093939.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*42
$GPGGA,093940.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*4C
$GPGGA,093941.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*4D
$GPGGA,093942.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*4E
$GPGGA,093943.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*4F
$GPGGA,093944.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*48
$GPGGA,093945.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*49
$GPGGA,093946.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*4A
$GPGGA,093947.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*4B
$GPGGA,093948.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*44
$GPGGA,093949.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*45
$GPGGA,093950.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*4D
$GPGGA,093951.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*4C
$GPGGA,093952.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*4F
$GPGGA,093953.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*4E
$GPGGA,093954.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*49
$GPGGA,093955.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*48
$GPGGA,093956.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*4B
$GPGGA,093957.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*4A
$GPGGA,093958.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*45
$GPGGA,093959.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*44
$GPGGA,094000.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*46
$GPGGA,094001.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*47
$GPGGA,094002.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*44
$GPGGA,094003.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*45
$GPGGA,094004.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*42
$GPGGA,094005.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*43
$GPGGA,094006.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*40
$GPGGA,094007.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*41
$GPGGA,094008.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*4E
$GPGGA,094009.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*4F
$GPGGA,094010.000,4331.2723,S,17239.1435,E,1,05,1.8,1.8,M,11.3,M,,0000*47
$GPGGA,094011.000,4331.2723,S,17239.1435,E,1,06,1.4,1.8,M,11.3,M,,0000*49
$GPGGA,094012.000,4331.2723,S,17239.1435,E,1,06,1.4,1.8,M,11.3,M,,0000*4A

 
MicroBlocks

Guru

Joined: 12/05/2012
Location: Thailand
Posts: 2209
Posted: 12:00am 08 Dec 2015
Copy link to clipboard 
Print this post

It says the data is valid, but the exact longitude/latitude every second is suspicious. Normally even when not moving it will change a tiny bit.

The GPRMC sentence is used more for tracking as it also has heading and speed.
It is also the sentence i use for my GPS trackers.

The number of satellites (4,5,6) should give a good fix.

Certainly not what you would expect, could it be an error in the code? Are values parsed and stored or is this a raw dump of the data.
Maybe catching all the different sentences can help figuring out what is wrong.

Microblocks. Build with logic.
 
robert.rozee
Guru

Joined: 31/12/2012
Location: New Zealand
Posts: 2442
Posted: 12:31am 08 Dec 2015
Copy link to clipboard 
Print this post

note that the 'fix quality' value (7th field) is 1:

1 Fix quality: 0 = invalid
1 = GPS fix (SPS)
2 = DGPS fix
3 = PPS fix
4 = Real Time Kinematic
5 = Float RTK
6 = estimated (dead reckoning) (2.3 feature)
7 = Manual input mode
8 = Simulation mode


would you expect this to be 4 (Real Time Kinematic) or 5 when the unit is in motion?

i am wondering if the configuration is wrong. bearing in mind the unit is from ebay, so could well be surplus stock being sold off that has been configured for a specific application.
 
MicroBlocks

Guru

Joined: 12/05/2012
Location: Thailand
Posts: 2209
Posted: 01:05am 08 Dec 2015
Copy link to clipboard 
Print this post

I have only ever seen a '1' for the fix quality.
Very unfortunate that it does this.
Did you try to take it for a larger distance (maybe by car) to see if the values change. Maybe it has a threshold for a minimum distance before it give a new lat/lon.
I am not familiar with this GPS module in particular, but i have used lots of different ones and they all have the same standard messages.
Any chance of getting some documentation?



Microblocks. Build with logic.
 
robert.rozee
Guru

Joined: 31/12/2012
Location: New Zealand
Posts: 2442
Posted: 04:22am 08 Dec 2015
Copy link to clipboard 
Print this post

mystery solved at 3am!

this post by palcal:
http://www.thebackshed.com/forum/forum_posts.asp?TID=7006
discusses what to do with the BOOT pin. i had been leaving this floating, assuming that since data was being produced by the module it could safely be ignored (after all, what sane manufacturer would not provide an internal pullup/down on a critical pin).

however, after reading palcal and jman's discussion, i tried tying it to ground via a 100 ohm resistor (a value i just happened to have to hand). lo and behold, with the BOOT pin grounded the latitude and longitude values spring to life. and when the resistor dislodged, the values froze again.

incidentally, pulling BOOT high seems to reset the module quite effectively.

now what was that saying, "assumption is the prelude to disaster"?


cheers,
rob :-)

ADDENDUM: grounding the BOOT pin doesn't work, nor does a 3k3 pulldown. something odd is going on, will go back to the 100 ohm resistor in the morning.
Edited by robert.rozee 2015-12-09
 
palcal

Guru

Joined: 12/10/2011
Location: Australia
Posts: 1993
Posted: 10:58am 08 Dec 2015
Copy link to clipboard 
Print this post

Hi Robert,
A data sheet can be found HERE . DON'T GO BY THE COLOURS for wiring. As the data sheet explains the default for the BOOT is 'floating'. On my module with the antenna side up and the wiring facing away from me the connections are NC, VCC, TX, RX, GND, NC.
Only the four wires are connected the other two float.
Paul.
Edit. sorry that link doesn't work. I have the data sheet and can send if you need it.Edited by palcal 2015-12-09
"It is better to be ignorant and ask a stupid question than to be plain Stupid and not ask at all"
 
TassyJim

Guru

Joined: 07/08/2011
Location: Australia
Posts: 6283
Posted: 11:08am 08 Dec 2015
Copy link to clipboard 
Print this post

Link faulty (Missing the : at the beginning).
Try this one link

I have a SIRF II module that was set to only change output if it had detected a move greater than 20-30 metres. This was to stop the usualy wandering that GPS outputs do when stationary.

I am not sure if I can find the program I used to turn that 'feature' off.

Can you take it for a longer walk?

Jim
VK7JH
MMedit
 
robert.rozee
Guru

Joined: 31/12/2012
Location: New Zealand
Posts: 2442
Posted: 01:59pm 08 Dec 2015
Copy link to clipboard 
Print this post

  TassyJim said  I have a SIRF II module that was set to only change output if it had detected a move greater than 20-30 metres. This was to stop the usual wandering that GPS outputs do when stationary.Jim


that is sounding hopeful, i've only been testing over about 25m so far. i shall try and take it for a longer walk this evening - my neighbours already think i'm insane as i wander along the driveway with a netbook balanced in one hand.

i have a program called SiRFDemo that seems to be able to do some configuration, could this be the program you used?

i've downloaded the datasheet from this page:
http://www.qrp-labs.com/ultimategps.html
it seems to be same one linked to above.


cheers,
rob :-)
 
TassyJim

Guru

Joined: 07/08/2011
Location: Australia
Posts: 6283
Posted: 04:17pm 08 Dec 2015
Copy link to clipboard 
Print this post

  robert.rozee said  
i have a program called SiRFDemo that seems to be able to do some configuration, could this be the program you used?

cheers,
rob :-)


Thats the one.
On page 67 of the users guide is this:

  Quote  Enable Track Smoothing
Enables smoothing of the calculated positions based on acceptable variances from the last calculated position. This assists in eliminating any sporadic position jumps possibly caused by multipath, for example.


Santa delivered my VK16E today so I will give it a try.

Jim
VK7JH
MMedit
 
TassyJim

Guru

Joined: 07/08/2011
Location: Australia
Posts: 6283
Posted: 05:06pm 08 Dec 2015
Copy link to clipboard 
Print this post

Page 71 of the users guide:
  Quote  Enabling/Disabling the Static Navigation
The steady state detection allows the navigating algorithms to decrease the noise in the
position output when the acceleration is below the threshold. This reduces the position
wander caused by Selective Availability (SA) and improves position accuracy
especially in stationary applications.
To select the static navigation mode:
1.Select Static Navigation from the Navigation menu.
The Static Navigation screen is displayed.
2.Select the option that you want to use.
3.Click Send to accept or Cancel to exit.
Note – The Static Navigation filter is Disabled when DGPS corrections are used in the navigation solution.


It did the job for me.

To use SRIFdemo, click on Action/Synchronise protocol and buad rate.
This should put it in SIRF mode.
Remember to switch it back to NMEA before exiting.

Jim

VK7JH
MMedit
 
TassyJim

Guru

Joined: 07/08/2011
Location: Australia
Posts: 6283
Posted: 05:25pm 08 Dec 2015
Copy link to clipboard 
Print this post

Caution!!!!

I don't seem to be able to reset the baud rate to 9600 when going back to NMEA mode.
It is currently set at 57600.

Jim

Edit:
All is not lost.
Under Action/Set main serial port, change it to 9600.
You should be able to leave the SIRF protocol at 57600 and NMEA chages to 9600 but that did not work for me.
Having both the same seems to be a safe way to go.



Edited by TassyJim 2015-12-10
VK7JH
MMedit
 
robert.rozee
Guru

Joined: 31/12/2012
Location: New Zealand
Posts: 2442
Posted: 06:14pm 08 Dec 2015
Copy link to clipboard 
Print this post

brilliant TassyJim, the last two posts did the trick!

now i just need to figure out if there is an NMEA command string to change the setting without needing to switch over to SiRF mode and back - i'll then need to program up a micromite to send the command as needed.

btw, i'm mulling over doing an SC construction article on differential GPS. essentially, while the GPS location of a single receiver wanders around, the difference between two GPS receivers close by provides a far greater accuracy. i want to see if i can get down to sub-centimetre resolution.


cheers,
rob :-)
 
TassyJim

Guru

Joined: 07/08/2011
Location: Australia
Posts: 6283
Posted: 06:25pm 08 Dec 2015
Copy link to clipboard 
Print this post

As far as I know, you have to be in SIRF mode to do any configuration.

Differential GPS has been on my to-do list for some time.
I want to put one on the tractor/mower with GPS and barometer (for elevation) and go for a drive around the paddocks. A second GPS & barometer will be at a fixed location.

Merge the two files and do some 3D plotting.

I did plot the local motocross track a long time ago but that was with one GPS only.
It did give us a nice map though.

For the record, I have left my BOOT pin floating.

Jim

VK7JH
MMedit
 
robert.rozee
Guru

Joined: 31/12/2012
Location: New Zealand
Posts: 2442
Posted: 07:26pm 08 Dec 2015
Copy link to clipboard 
Print this post

i've found that pulling the BOOT pin high briefly causes a full fatory reset. i shall move back to leaving it floating too.

the following link explains it all:
http://www.gpspassion.com/forumsen/topic.asp?TOPIC_ID=140673

seems like in 2011 someone else faced exactly the same problem. i've also been looking through an output log, along with the SiRF protocol datasheet, and with a bit of luck should be able to whip up a 'magic incantation' to change the configuration. note that in the above link there is mention of the static navigation mode switching back if the onboard battery goes flat while powered off.


cheers,
rob :-)
 
TassyJim

Guru

Joined: 07/08/2011
Location: Australia
Posts: 6283
Posted: 08:53pm 08 Dec 2015
Copy link to clipboard 
Print this post

That's a very useful link Rob.

Jim
VK7JH
MMedit
 
robert.rozee
Guru

Joined: 31/12/2012
Location: New Zealand
Posts: 2442
Posted: 02:48am 09 Dec 2015
Copy link to clipboard 
Print this post

for anyone interested, here is a pascal code snippet to switch static navigation on or off on a SiRF GPS receiver:

const ds1:array [1..26] of char='$PSRF100,0,9600,8,1,0*0C'#13#10;

ds2:array [1..10] of byte= // disable static navigation
($A0,$A2, // header
$00,$02, // payload length (2 bytes)
$8F,$00, // command + SN flag
$00,$8F, // payload checksum
$B0,$B3); // footer

ds3:array [1..10] of byte= // enable static navigation
($A0,$A2, // header
$00,$02, // payload length (2 bytes)
$8F,$01, // command + SN flag
$00,$90, // payload checksum
$B0,$B3); // footer

ds4:array [1..32] of byte= // return to NMEA mode
($A0,$A2, // header
$00,$18, // payload length (24 bytes)
$81,$02, // command + mode
$01,$01, // GGA (1) (interval + CS flag)
$00,$01, // GLL (interval + CS flag)
$01,$01, // GSA (1) (interval + CS flag)
$05,$01, // GSV (5) (interval + CS flag)
$01,$01, // RMC (1) (interval + CS flag)
$01,$01, // VTG (interval + CS flag)
$00,$01, // MSS (interval + CS flag)
$00,$01, // <unused>
$00,$01, // ZDA (interval + CS flag)
$00,$01, // <unused>
$25,$80, // baud rate (9600)
$01,$3A, // payload checksum (0x013A)
$B0,$B3); // footer
var put:DWORD;
i,c:integer;

begin
WriteFile(ComFile,ds1,length(ds1),put,nil); // switch to SiRF mode
sleep(200);
Application.ProcessMessages;

if CheckBox1.Checked then WriteFile(ComFile,ds3,length(ds3),put,nil)
else WriteFile(ComFile,ds2,length(ds2),put,nil);
sleep(200);
Application.ProcessMessages;

c:=0; // needed if we change any of the sentence settings
for i:=5 to 28 do inc(c,ds4); // recalculate checksum on ds3
ds4[29]:=c div $100; // insert high byte
ds4[30]:=c mod $100; // insert low byte

WriteFile(ComFile,ds4,length(ds4),put,nil); // return to NMEA mode
sleep(200)
end;


cheers,
rob :-)
 
     Page 1 of 2    
Print this page
The Back Shed's forum code is written, and hosted, in Australia.
© JAQ Software 2025