Search
Product Info
32 Channel LS20031 GPS 5Hz Receiver
sku: GPS-08975
Description: The LS20031 GPS receiver is a complete 5Hz GPS smart antenna receiver, that includes an embedded antenna and GPS receiver circuits. This low-cost unit outputs an astounding amount of position information 5 times a second. The receiver is based on the proven technology found in LOCOSYS 32 channel GPS SMD type receivers that use MediaTek chip solution.The GPS smart antenna will track up to 32 satellites at a time while providing fast time-to-first-fix, one-second navigation update and low power consumption. It can provide you with superior sensitivity and performace even in urban canyon and dense foliage environments. The capabilities meet the sensitivity requirements of car navigation as a well as other location-based applications.
This module makes a great gift for that special someone who's interested in playing with GPS. For more gift ideas check out the SparkFun Gift Guide!
Note: Unit does not contain a connector. There are 5 bare pads you can solder to.
Check out our GPS buying guide!
Features:
- MediaTek MT3318 solution
- 5Hz output
- 57600bps TTL serial interface
- 3.3V @ 41mA
- 32 Channel GPS
- Fast TTFF at low signal level
- Up to 5Hz update rate
- Capable of SBAS (WAAS, EGNOS, MSAS)
- Built-in micro battery to preserve system data for rapid satellite acquisition
- LED indicator for fix or no fix
- Datasheet
- PMTK Protocol Reference
- Great configuration software: Mini GPS
- Example Configuration from DIYDrones
Pricing
Comments
67 comments
Feeds
Currency
Display prices in
Feedback
If you would like to tell us more, you can fill out our form if you need some psycho-suggestive questions. Go to the form.
















Can you set it up with SirfDemo or another program.
With SAW filter, LED status, built in RAM backup super cap, and slight lower mass, and same command set as EB-85A, this unit is by far my preferred choice over the ETek unit.
If you make a serial connection to your PC, you can use the same media Tek PC programs that Saprkfun has on the page for the EB-85A (Mini GPS, GPS locator utility.)
I soldered the wires directly to the pads.
everything works great.
Alex
Will you be offering the LS20033 soon?
What is the input voltage range? please
Thanks
The two really nice features that this GPS module has, compared to the FV-M8, is a battery to preserve GPS data and quite a bright red LED that blinks once per second upon fix. Not to mention the big price difference.
It is more convenient to use without requiring a special cable and connector (or a break out board) as others have mentioned about it. Overall I see it as a great replacement/alternative for the FV-M8.
Now there is one interesting difference from this module and the FV-M8 is that there is no EMI shield housing the components. Not sure if that will effect or matter to anybody else in terms of quality of the module because so far I've seen nothing wrong with the LS20031 module.
Also, how do you enable/disable DGPS/WAAS? Locosys data sheet is pretty thin. Has nothing at all about inputs.
Also, you can turn on 5Hz mode with this: $PMTK220,200*2C
And turn off all but the GGA and RMC NMEA sentences with this: $PMTK314,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*28
(For reference, the '200' at the end there means milliseconds between sending data back. default for mine was 1000=1hz)
TTL is hardware (signal level logic), and NMEA is software (NMEA protocol). The NMEA data is provided on a TTL serial port.
Antoine
This thing works great. I'm in my basement workshop and can receive a solid signal from 7 satellites. I have a few other GPS receivers, and none of them can get a lock while in the house, not to mention in the basement.
A very simple question (but probably quite hard to answer):
Is it a true 5Hz update rate GPS (I mean not extrapolated) ?
I've been testing a few GPS sensors, from fake ones to good ones, but I haven't tested this one yet.
For example the EB-85A is not a true 5hz GPS and has a horrible latency. In fact, to reduce the position noise, it has a low pass filter on the accelations, which makes it good when translating smoothly (car application), but unusable on an airplane/helicopter.
The only good one is the Ublox5 GS406 with a real 4hz update and a very good configuration tool (u-center). You can specify the filter parameters (<1g, <2g, <4g accelerations for example) But it seems to not be in stock anymore...I luckily could buy one when it cames out.
So, has anyone check the latency/reactivity of this GPS.
The test is simple: At T0, start running in one direction. Measure the time T at which the GPS moves. T-T0 should be less than 300ms.
Subsidiary question :
Is the GPS velocity calculation based on doppler effect (of the carrier) or derivative of the positions?
Thank you, and have fun.
Antoine
http://www.sparkfun.com/datasheets/GPS/Modules/PMTK_Protocol
========================================
Packet Type: 390 PMTK_API_SET_USER_OPTION
Packet Meaning:
API_Set_Flash_User_Option
Write the user setting to the flash to override the default setting. Maximum 8 times without erase the chip.
DataField:
PMTK390, Lock, Update_Rate, Baud_Rate, GLL_Period, RMC_Period, VTG_Period, GSA_Period, GSV_Period, GGA_Period, ZDA_Period, MCHN_Period, Datum, DGPS_Mode, RTCM_Baud_Rate
Lock: nonzero: freeze the setting; 0: allow further setting
Update_Rate: 1~5 (Hz)
Baud_Rate: 115200, 57600, 38400, 19200, 14400, 9600, 4800
RTCM_Baud_Rate: 115200, 57600, 38400, 19200, 14400, 9600, 4800
XXX_Period: NMEA sentence output period
DGPS_Mode: 0 (disable), 1 (RTCM), 2 (SBAS)
Datum: We support more than 200 datum. Please refer to Appendix A for the supported datum list. The typical value is: 0 (WGS84), 1 (Tokyo-M), 2 (Tokyo-A)
Example:
$PMTK390,0,5,57600,1,1,1,1,1,1,0,0,0,2,9600*04
Download it while you can..... =:-)
http://www.rigacci.org/wiki/lib/exe/fetch.php/doc/appunti/hardware/gps/mtk_nmea_packet_0.8_transystem.pdf
I have this unit and want to test it out first.
The unit I received, was programmed for 57600 bps out of the box - despite what the spec sheet says. Set your serial port up for 8 bits, No parity, 1 stop (8N1).
I was able to set up for slower bit rates, but because of the sheer number of NMEA sentences generated at the 5hz update rate, bit rates slower than 38400 generate a PMTK_ACK message that says the baud rate command was 'valid but action failed'. 115200 bps worked fine as well. I suspect you can slow down the baud rate if you turn down the position fix rate and turn off the NMEA sentences you don't need/want to use.
To see a more complete reference to the control commands, see the PDF link I posted above.
just so others know, the default for my unit was 57600bps, 5hz output. I was able to lower the baud rate to 4800 only after I reduced the output to 1hz.
Does anyone know what the best setting for DGPS_Mode should be, or at least what it depends on? If RTCM, how does RTCM baud rate fit in? (or are they unrelated)
Also, I am a bit unsure of what "API_Set_Flash_User_Option" does. Is it used to set the default settings, so a reset to default using "$PMTK104*37" would reset to the settings I set with "API_Set_Flash_User_Option"
Thanks.
See Zlite's comments from 28-Nov-2008 above for setting baud rate and sentence rate.
First thing to keep in mind is that you will have to set the sentence rates and quantity to less than 5Hz before you can successfully set communication at 4800 baud. The sheer quantity of data at 5Hz is faster than 4800b can deliver before the next fix update is ready.
The sentence setting commands are easy enough to build, but you will need to construct them with proper checksums - which I assume you know how to do. There is guidance available from code at the DIYDrones link above, or I can post C code to get you over the hump.
Please also see
http://www.rigacci.org/wiki/lib/exe/fetch.php/doc/appunti/hardware/gps/mtk_nmea_packet_0.8_transystem.pdf as it is a more complete reference that Sparkfun posts here.
#define CH_CR 0x0D
#define CH_LF 0x0A
const char CRLF[]={CH_CR, CH_LF, 0};
char *NMEA_ComputeChecksum(char *s)
{
static char ck_string[4];
static unsigned char chksum;
for(chksum=0; *s; ++s)
chksum ^= *s;
sprintf(ck_string, "*%02X", chksum);
return(ck_string);
}
char *NMEA_ConstructSentence(char *s, char *msg )
{
strcpy(s, "$");
strcat(s,msg);
strcat(s,NMEA_ComputeChecksum(msg));
strcat(s, CRLF);
return(s);
}
That assumes that you are already communicating with the GPS module at some established default rate - which in the case of this module is 57600.
The paradox is that if the new baud rate is sucessfully set on the module, you will need to reset the rate on your serial port - so success is indicated by NOT being able to read the acknowledgment sentence "PMTK010,001" (or "$PMTK010,001*2E" in complete NMEA format.
This is done by using the PMTK314 command. Not to be so smug - RTFM! =:-)
For experimental purposes, an example configuration sentence to set that only GPRMC sentences are to be sent at 1hz: (which should slow down and simplify things considerably)
NMEA_ConstructSentence(buf,PMTK314,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0");
How's that??
"$PMTK314,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*2D"
but with *xx cr lf added on
Now the dumb question, what is the checksum byte ??
I have no way of calking it !(within reason)
Try this Web App: http://www.hhhh.org/wiml/proj/nmeaxor.html
BTW, I don't think appending the checksum is necessary. Try it without if you want, especially if your doing the setup manually.
"$PMTK251,4800*14"
Did you find out why your GPS couldn't lock anymore ?
My unit seems to follow the same scheme : first days it was locking 8 sats indoors, and now I have to go outside and wait 15min to get 3 sats.
And when I move few meters around my position, the signal disappears !
I don't know what to do...
If the unit gets into an unknown state, (i.e. you forgot the baud rate) try disconnecting the unit, and short out the battery terminals for just a second. That will bring the unit back to it's default state. (57,600bps and all the sentences).
Note that that's awful for the battery, will void warranties, and stress the space/time fabric of the universe, but it works.
Don't ask me how I know this. I didn't just spend a whole day on this.
-Dan n7nmd
Thanks!
1) Altitude limit of 60,000 feet
2) Speed limit of 999 knots
The can sometimes be an "or" limit (i.e. stops working when either of the limits are reached), or an "and" limit (both limits much be reached before it stops working).
Obviously for high altitude projects the altitude limit can be met, but it's not common for hobby projects to reach the speed limit.
I emailed the manufacturer and got back from them...
"This is Eric Chin from LOCOSYS Technology Inc.
Thank you very much for this email and using our product.
All commercial GPS module has altitude limitation, 60000 feet. If the module over the altitude specification, it will not get position immediately. "
Interperet that as you will...
"$PMTK314,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*2D"
Thanks, works here !
ftp://ftp.leadtek.com.tw/gps/9023/LeadtekNMEAProtocolManualforMTKV1.0.pdf
PMTK221,RunDuration,RunInterval
RunDuration: Duration [msec] to fix for (or attempt to fix for) before switching from running
mode back to a minimum power sleep mode.
`0': Disable
Flag:
>=`200': Enable
RunInterval: Interval[msec] to come out of a minimum power sleep mode and start running
in order to get a new position fix.
Some restrictions for the parameters:
(1) RunDuration >= 200 ms
(2) RunDuration <= RunInterval
(3) RunInterval <= 86400 ms
Example:
Fix 5 seconds and then sleep 5 seconds periodically
$PMTK221,5000,10000*07
-Open Terminal (/Applications/Utilities)
-If you don't know the /dev entry for your serial communication device, with it disconnected type "ls /dev/tty.*"
-Now connect your serial communication device, and enter the previous command again
-The /dev entry for your device should be the only new entry
-With your serial device connected to your computer and GPS module, type this line in Terminal (replacing "" with the real /dev entry):
screen -L 57600
-The hard part for me was sending the CRLF sequence after each sentence. The best way I found to send this sequence is to use screen's command line mode by pressing ctrl+a, and then : (colon)
-Enter your sequence using the following format (obviously replacing "$PMTK000*32" with the appropriate sequence. The "$" character needs to be escaped and the " 15 12" sequence will be converted to the CRLF sequence):
stuff "$PMTK000*32 15 12"
-Then just press return to send the sentence
The sample sequence should be:
stuff "\$PMTK000*32\015\012"
screen -L [your /dev entry] 57600
Replacing "[your /dev entry]" with your actual dev entry.
Sheesh. Where's the "edit" button for these comments?!?!
I would also like to connect the LS20031 to a USB port (for use with a laptop that has no RS232 serial port) -- is there a converter available for this, and does Sparkfun sell it? Does it come with software to allow serial comms programs to operate via the USB port?
Cheers
C
Cheers
C
Yes, the default UART communication rate (despite the documentation) is 57600. This rate can be made slower via commands (to rates as slow as 300 Baud - I think).
The fix update rate can be made as slow as 1 per second and as high as 5 per second (default) via command.
However - with the fix rate at 5 per second, the slowest UART communication rate that can be set is 38400 because there is too much information to transmit (if all the sentence type are turned on - which is the default) before the next fix is ready to be sent.
Bottom line, you can slow down the communication rate, but you also have to either slow down the fix rate - or - turn off sentences that you don't need - or - both.
For the connection, I have used a common right angle header strip - broken off to 5 pins, then soldered to the pads on the unit.
For mounting, there is always double sided tape, stuck to the processor shield, then to the PCB (crude, but effective). The "proper" way would be to use stand off posts in the corners and fasten to the PCB - or make a square hole for the antenna, then fasten directly to the PCB.