Neo-6M GPS shield - update faster than 1Hz

escuta:
Any suggestions?

Run NMEAorder.ino and make sure NMEAGPS_cfg.h has the correct LAST_SENTENCE_IN_INTERVAL. I have seen the ublox device reject configuration commands if you send them while it is still sending characters.

escuta:
I wired it up to the arduino with VCC connected to 3.3V, ground to ground and Tx and Rx of the GPS wired to pins 4 and 3 of the arduino respectively.

Did you forget about reply #17?

This is a 3.3V device, so you really need to shift the Arduino's 5V levels down to 3.3V. This is strongly recommended for connecting the Arduino transmitting pin (9 or whatever, outputs minimum of 3.9V) ) to the GPS RX pin (max allowed is 3.6V) . A resistor divider will work.

I hope you haven't damaged the GPS RX pin again! There's a schematic in that link. It describes how to pick the resistor values for the Arduino TX-to-GPS RX connection (R1 and R2). Some folks use a 10K in series (i.e., between Arduino TX and GPS RX).

BTW, I have never seen a ublox device emit this sentence:

    $GPTXT,01,01,01,ANTENNA...

... so that's a little curious.

From the data in your Reply #13, it looks like ZDA should be the LAST_SENTENCE_IN_INTERVAL.

Regarding the $GPTXT, it looks like warning messages were enabled. I don't know why "ANTENNA OK" is a warning message. :-/ It can only be enabled by a UBX binary command. Maybe the manufacturer turned it on to make sure the unit was ok. You might be able to turn it off with

      gps.send_P( &tee, F("PUBX,40,TXT,0,0,0,0,0,0") );

If that doesn't work, you'll have to send the binary message:

const unsigned char ubxConfigInf[] PROGMEM =
  { 0x06,0x02,10,0,1,0,0,0,0,0,0,0,0,0 }; // disable all NMEA test,dbg,notice,warning and error msgs

    ...

          sendUBX( ubxConfigInf, sizeof(ubxConfigInf) );

Cheers,
/dev

Did you forget about reply #17?

I must be trying to do too many things at once. I didn't read it properly. I've now bought the parts in the diagram: a diode and 3 resistors where R1 = 2.2k, R2 = 4.7k and R3 = 2.2k

Is this OK? I know next to nothing about electronics, sorry.

A question about the diagram: Do the VCC and GND connections of the GPS remain unattached?

Thanks again

Do the VCC and GND connections of the GPS remain unattached?

No, attach the Arduino 5V pin to VCC and the Arduino GND pin to GND. This module has a voltage regulator to provide 3.3V to the GPS chip, so you have to provide 5V to the module on the VCC pin.

With the circuit wired up and attached i ran NMEAorder.ino

It gave the error:

ERROR: LAST_SENTENCE_IN_INTERVAL is incorrectly set to NMEAGPS::NMEA_GLL!

so i changed NMEAGPS_cfg.h to have NMEAGPS::NMEA_ZDA as the LAST_SENTENCE_IN_INTERVAL

Ran it again with success.

This however stops me from running ubloxRate.ino which requires NMEAGPS::NMEA_GLL to be defined as LAST_SENTENCE_IN_INTERVAL

I can of course run my own code which attempts to change the update rate on setup. Unfortunately there is no change. I can receive GPS data however the GPS unit itself seems unresponsive to messages.

So perhaps I really have burnt out 2 units...

escuta:
i changed NMEAGPS_cfg.h to have NMEAGPS::NMEA_ZDA ... This however stops me from running ubloxRate.ino

Oops, yes. I think I have a change to ubloxrate.ino to fix that.

Try using GLL for LAST_SENTENCE. Then press 'e' to get echo, and then press '0' several times. Press '0' at random times with respect to when the GPS sends data: while the characters come in, between batches, etc. If you're using the Serial Monitor window, you have to press ENTER to actually send what you've typed.

Does it ever stop sending all the sentences?

Unfortunately there is no change

Do you have a 3.3V TTL Serial-to-USB converter? Then you could hook the GPS to your PC and try ucenter. If you can't change the configuration with ucenter, either, the RX pin is burnt out.

I suppose there is a possibility that it is a counterfeit GPS device that does not implement those commands. The only way to know for sure is to connect it safely and correctly, using either a 3.3V USB converter with ucenter, or level-shift the 5V Arduino signals with your sketch.

If you have to order parts, I would suggest throwing in a level-shifting module. They can also be used for an SD card interface.

Cheers,
/dev

Try using GLL for LAST_SENTENCE. Then press 'e' to get echo, and then press '0' several times. Press '0' at random times with respect to when the GPS sends data: while the characters come in, between batches, etc. If you're using the Serial Monitor window, you have to press ENTER to actually send what you've typed.

Does it ever stop sending all the sentences?

No, unfortunately not. That level shifting module looks good. I'll try and buy a USB converter in town next week, or buy one online and test out with the ucentre. Thanks again!

I have the same situation than escuta.
Did you made any progress in order to get more than 1Hz?

Thanks!

I've been reading this post for a week and I still can't run faster than 1Hz. I might burnt out RX GPS pin too, since I made the same. How can I check it for sure?

How can I check it for sure?

Send it commands to turn sentences off:

gps.send_P ( &gpsPort, F ("PUBX,40,GLL,0,0,0,0,0,0") );

Do that for several sentences: GGA, RMC, ZDA, VTG. If it stops sending those sentences, you know it received the commands correctly.

Before setting the higher update rate, you must

  • disable all sentences,
  • wait a little (100ms or so),
  • set the baud rate (flush, then wait 250ms or so),
  • set the update rate (wait), and
  • enable the sentences you need.

This is what ubloxrate.INO does.

Thank you. When I compile ubloxRate.ino I get this error:

./opt/arduino-builder/arduino-builder -compile -core-api-version 10611 -build-path /tmp/098822899/build -hardware opt/arduino-builder/hardware -hardware ./opt/cores -tools opt/arduino-builder/tools -tools ./opt/tools -built-in-libraries opt/libraries/latest -libraries /tmp/098822899/pinned -libraries /tmp/098822899/custom -fqbn arduino:avr:uno -build-cache /tmp -logger humantags -verbose=false /tmp/098822899/MaxVel

Multiple libraries were found for "NMEAGPS.h"

Used: /tmp/098822899/custom/NeoGPS

Not used: /home/ubuntu/opt/libraries/latest/neogps_4_2_7

Not used: /home/ubuntu/opt/libraries/latest/neogps_4_2_7

Not used: /home/ubuntu/opt/libraries/latest/neogps_4_2_7

Not used: /home/ubuntu/opt/libraries/latest/neogps_4_2_7

Multiple libraries were found for "AltSoftSerial.h"

Used: /home/ubuntu/opt/libraries/latest/altsoftserial_1_4_0

Not used: /home/ubuntu/opt/libraries/latest/cmmc_nb_iot_0_0_2

Not used: /home/ubuntu/opt/libraries/latest/barebonesim800_1_2_0

Not used: /home/ubuntu/opt/libraries/latest/ais_nb_bc95_1_0_5

In file included from /tmp/098822899/custom/NeoGPS/src/NMEAGPS.h:336:0,

from /tmp/098822899/MaxVel/MaxVel.ino:1:

/tmp/098822899/custom/NeoGPS/src/NMEAGPSprivate.h:80:41: error: 'NMEAGPS_KEEP_NEWEST_FIXES' was not declared in this scope

static const bool keepNewestFixes = NMEAGPS_KEEP_NEWEST_FIXES;

^

/tmp/098822899/custom/NeoGPS/src/NMEAGPSprivate.h: In static member function 'static const bool NMEAGPS::validateChars()':

/tmp/098822899/custom/NeoGPS/src/NMEAGPSprivate.h:82:49: error: 'NMEAGPS_VALIDATE_CHARS' was not declared in this scope

static const bool validateChars () { return NMEAGPS_VALIDATE_CHARS; }

^

/tmp/098822899/custom/NeoGPS/src/NMEAGPSprivate.h: In static member function 'static const bool NMEAGPS::validateFields()':

/tmp/098822899/custom/NeoGPS/src/NMEAGPSprivate.h:83:49: error: 'NMEAGPS_VALIDATE_FIELDS' was not declared in this scope

static const bool validateFields() { return NMEAGPS_VALIDATE_FIELDS; }

^

exit status 1

When I compile ubloxRate.ino I get this error:

That's a mess.

There are many things you have not told us.

* Are you using the Arduino IDE or some other builder environment?
* What Arduino are you using?
* How is everything connected?
* Put your error messages in a code block, so they look like this:

/opt/arduino-builder/arduino-builder -compile -core-api-version 10611 -build-path /tmp/098822899/build -hardware opt/arduino-builder/hardware -hardware ./opt/cores -tools opt/arduino-builder/tools -tools ./opt/tools -built-in-libraries opt/libraries/latest -libraries /tmp/098822899/pinned -libraries /tmp/098822899/custom -fqbn arduino:avr:uno -build-cache /tmp -logger humantags -verbose=false /tmp/098822899/MaxVel

Multiple libraries were found for "NMEAGPS.h"

Used: /tmp/098822899/custom/NeoGPS
   ...

You should modify your post to insert the
** **[code]...[/code]** **
tags around those error messages.

These things are described in How To Use the Forum.

Regarding the error messages:

You have multiple copies of NeoGPS and AltSoftSerial. There should be one copy in the Arduino/Libraries directory.

You have multiple sketches: MaxVel.ino and ubloxrate.ino. There should be one file in the ubloxRate sketch directory: ubloxRate.ino.

I did not say to build ubloxRate.ino. I said "that's what ubloxrate.ino does." You should do the same thing in your own sketch. That means copy some of the code into your sketch.

If you don't know how to download libraries and build example programs, I don't think you're ready to set the update rate of a GPS device to 10Hz.

I suggest that you start over. Delete all the libraries and reinstall one copy of AltSoftSerial and NeoGPS with the Arduino Library Manager, under the IDE menu Sketch -> Include Library -> Manage Libraries.

You can keep your current sketches, but I would make new directories for any new work. Start with the NeoGPS examples -- they don't require you to make a sketch directory. Each installed library comes with example sketch directories for you (e.g., Arduino/Libraries/NeoGPS/examples/NMEA).

Be sure to modify GPSport.h if you are not using AltSoftSerial on Uno, Nano, etc. or Serial1 on a Mega, Leo, Due, etc. Since I don't know which Arduino you are using, I can't give you a definite answer.

Thank you very much. I apologize for the format I used. I', pretty new in arduino and also in the forum.
I have an arduino UNO and I use the web tool to compile and download.
I will start cleaning the libraries and starting over.
Thanks again.