I don’t see any categories for the GNSS modules, so I guess I will post this here. I have a few questions about the XA1110 and was wondering if this is in anyone’s expertise here? I am talking to the chip via UART successfully but I had some questions about the output of it. I want to only get the GNGGA data every 5 seconds, but I am still getting a PGACK EPE xxxxxxxxx command every second/fix. I tried to turn this off via PMTK 231 command (it responds that the command succeeded), but I am still seeing them come through every second. I am trying to keep the data overhead low on the GPS UART lines for this particular application. Once I get everything setup, I will only need the location coordinates every 5 seconds. Would be great if I could turn everything off, and then the chip responds with location via a command (instead of always outputing every fix/5fixes. Is there a way to do this? I will continue to study the documents and test.
We are correcting the fact that there is no GNSS section in the forum at the moment, hopefully resolved shortly.
With regards your question, which firmware are you using? Using the 5.1.1 firmware I have tested using the 231 command and it works with regards turning the below responses on and off.
I used the following
$PGCMD,231,05D - Turn off
$PGCMD,231,15C - Turn on
It does require a power cycle between them as it does not change the output immediately for that power session.
Hi Matt, Yeah I think I needed to power cycle. Thank you for your response. I do have a couple more questions to finish my code for my companys project with this chip:
- I am trying to get the geofence command to work. I can send the geofence enable command, and it accepts it successfully. When I try to actually set the geofence with cmd 25, I never get an acknowledge from it (I do with every other configuration command I send). I also noticed the data fields that are in the description are different than the example used. They do not match, or maybe I am missing something. I am referring to page 57 of the software user guide r2. I tried a bunch of different combinations to try to get the geofence CMD 25 to work, but no success yet. The GPS coordinates I get from the module are 6 decimal places, but I just truncate it to get it to 4 : for example 8300.1234 is the format I was trying before trying the example (which has no decimal places). The examples just uses 1234. I tried sending the packet in the example just to see if I can get a response, but nothing.
I also notice I get PGTOP /geofence information message every second after it is enabled (and I think power cycled). But I get the 001 parameter which means geofencing doesn’t contain any parameters, which is expected I believe since my geofence command did not “take”. Once I get the geofence CMD 25 to accept, is there anyway to just query the chip to see if it is inside geofence, or is the only way to parse the PGTOP commands that are received every second.?
Ok done a bit of playing and got it working (well the commands are accepted at least). I have attached the teraterm script I have created and given the results from my unit testing below with comments.
$PGACK,SW_INI_ANT_INPUT_OK*31 $PGACK,SW_INI_ANT_INPUT_OK*31 $PMTK011,MTKGPS*08 $PMTK010,001*2E $PGACK,EPE,H=9999000.000000,V=100000000.000000*3D $PGTOP,3,001,3,0.00,0.00,0*5D $PMTK011,MTKGPS*08 $PMTK010,002*2D $PMTK605*31 $PGACK,EPE,H=9999000.000000,V=100000000.000000*3D $PGTOP,3,001,3,0.00,0.00,0*5D $GNGGA,235942.869,,,,,0,0,,,M,,M,,*5A $GPGSA,A,1,,,,,,,,,,,,,,,*1E $GLGSA,A,1,,,,,,,,,,,,,,,*02 $GNRMC,235942.869,V,,,,,0.00,0.00,050180,,,N*53 $GNVTG,0.00,T,,M,0.00,N,0.00,K,N*2C $PMTK705,AXN_5.1.1_3333_17090118,8530,XA1110,1.0*33 $PMTK314,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*28 $PMTK001,314,3*36 $PGCMD,221,1*5D $PGACK,No_Change_Data*45 $PGCMD,25,1,1000,5100.1822,N,0047.1234,S*xx //Set the geofencing info, I have change the position of my house so the checksum will change $PGACK,25,1*68 //Confirms it has been written $PGCMD,25,2*68 //Query the geofencing info $PGACK,25,2,1000,5100.182200,N,47.1234000,S*xx //Responds with the geofencing info as per the above comment re position/CS $PMTK104*37 $PGACK,SW_INI_ANT_INPUT_OK*31 $PGACK,SW_INI_ANT_INPUT_OK*31 $PMTK011,MTKGPS*08 $PMTK010,001*2E $PGACK,EPE,H=9999000.000000,V=100000000.000000*3D $PGTOP,3,001,3,0.00,0.00,0*5D $PMTK011,MTKGPS*08 $PMTK010,002*2D //Force a cold start $PGACK,EPE,H=9999000.000000,V=100000000.000000*3D $PGTOP,3,001,3,0.00,0.00,0*5D $GNGGA,235942.869,,,,,0,0,,,M,,M,,*5A $GPGSA,A,1,,,,,,,,,,,,,,,*1E $GLGSA,A,1,,,,,,,,,,,,,,,*02 $GNRMC,235942.869,V,,,,,0.00,0.00,050180,,,N*53 $GNVTG,0.00,T,,M,0.00,N,0.00,K,N*2C $PGACK,EPE,H=9999000.000000,V=100000000.000000*3D $PGTOP,3,001,3,0.00,0.00,0*5D //No geo fencing info $GNGGA,235943.869,,,,,0,0,,,M,,M,,*5B $GPGSA,A,1,,,,,,,,,,,,,,,*1E $GLGSA,A,1,,,,,,,,,,,,,,,*02 $GNRMC,235943.869,V,,,,,0.00,0.00,050180,,,N*52 $GNVTG,0.00,T,,M,0.00,N,0.00,K,N*2C
Some points from the above which I am fairly sure are correct…
- Yes the examples in the documentation do not line up, they should be effectively the same as the way the unit is outputting them with the positions truncated as you have done.
- No I do not believe there is a command to be able to query the unit if it is in or outside of the geo fenced area, I think you just need to catch the notification.
- The geofencing parameters are not saved in flash and will need to be re input on power up. The ‘cold start’ comment reflects the actual settings i.e. enabling/disabling geo fencing, not to dynamic data like the geofence itself which is effective immediately.
XM1110 - Geo fencing set, query and turn on.zip (527 Bytes)
Thank you so much Matt. You guys are so nice to respond. So I did run the same command you sent, and it did work. I am pretty sure I did try a similar command, but my format must have been off. I am able to get position information from the chip, and then send that position info to use as a geofence, so working great.
For my company’s product, we will be putting the GNSS module in power down a lot, bringing it out of power down often, etc. I am going to try to understand tonight exactly how all of the configurations and commands work between power cycles and power down. If I send a “cold start” command, that is essentially the same as a power cycle? If so , I will use that command if I need to power cycle to make certain commands “take”. The geofencing enable has indeed been saved in flash, I have never had to re-enable it. When I send the set output command (to only have the GNGLL command output every 5 seconds), I do notice it quits sending every NMEA message, and then will only send the GNGLL after 5 secs (like I want) after a power cycle. Anyway, I am going to play with all of that and make sure I understand it. Is it ok if I respond back if I have a question on any of that?
I am using a microcontroller to talk to the XA1110. Using the EVK board, it was not easy I had to cut traces and solder some wires to the Tx and Rx, and then power it using a USB charger. Thanks again for all your help!!!
I also notice, when I send a geofence enable/disable command (whichever is opposite to what is configured), it responds with “Command_vaild”. “Valid” is mispelled. I am pretty sure this is not on my end, as I have not seen anything like it while working with the GPS. One thing I am doing is checking the responses of the GPS module to make sure it “took” the commands. So I am doing lots of string compares. Not a big deal, as I just put something in there to handle the mispelling, but just wanted to let you know.
Yes its been there forever and no one spotted it before Sierra took over with its native English speakers. Certainly for this model we will probably not change it because it would mean a definite firmware change for anyone upgrading which is unnecessary (not that firmware upgrades don’t normally mean some changes).
I am having issues on the geofence. What I am doing is taking my current position, sending that as the geofence coordinates with a radius of 500. I am expecting to be inside the geofence, but the PGTOP commands I get have a ‘2’ in it. This is what my specs say:
PGTOP,3, 002, 2(GNSS module position over Geofencing radius)
PGTOP,3, 002, 1(GNSS module position in Geofencing radius)
I have included my commands below. When I send the set geofence command, I get a successful PGACK. I have also tried power cycles /cold starts. What do all the numbers mean after the ‘2’ or ‘1’ in the PGTOP? Is that the distance outside/inside of the geofence radius? I also tried sending geofence coordinates that were not the exact same as my position( a little bit different but still within “radius”), as well as coordinates that were far far away. I am always getting over the radius. I also tried a radius of 1000 meters. What am I doing wrong here?
Geofence cmd sent:
Geofence Query Response:
$PGTOP 3 002 2 929588550.53,18.22,1826C
I see what you are saying, I am having similar issues, I have asked some people.
Ok. Let me know what you find out. I might also forward this to my Sierra Wireless rep, but it can take forever to get a reply from them.
I got it to work with rthe below command.
$PGCMD,25,1,5000,xx.xxxx,N,y.yyyy,W //Where the position is in the decimal degree format so some conversion needs to be done from the NMEA information.
This resulted a second or so later in the below output.
You are the man!!! Thank you so much for looking into this. I will try it now and let you know how it goes. So basically it is taking the geofence coordinates in degrees only, not the minutes. And looking at the datasheet, it does say “degrees, 4 decimal places”. I guess I have must looked over that meaning degrees only.
Ok. I did get this working and am now getting “inside the geofence”. I have to grab the string of the position, convert it to fractions of a degree, then convert it back to a string to send in the geofence command. Basically I take the minutes value and divide by 60. I also just tried putting a position far away as my geofence center and it was “outside the geofence”. So seems to now be working! Thanks again for your help!