my gps ublox cn06 v3 not working properly to read data, i got nothing on serial monitor
I use an Arduino Uno with an ITEAD GPS shield with a U-Blox Neo-6m GPS module.
I am very new to Arduino projects, but may offer 2 suggestions from my recent experiences.
1. The RX and TX pin designations are reversed when thinking about the pins from the Arduino point of view. On my shield, I have changed jumpers so that the Itead GPS shield is jumpered to TX on 3, RX on 4. However, when using a statement like "SoftwareSerial xxx(RXpin,TXpin)", the pin numbers should be reversed because the Adrduino RX is the gps's TX. Failure to do so will cause the GPS output to be invisible. This is assuming you are using something like the software serial port library.
2. My ITEAD shield came with the GPS module set to a default port speed of 38400 BPS, which is way too fast for the software serial port (at least mine) to handle. I had to set the shield port to 4800 bps before my NMEA sentences could be recognized and therefor a positional "fix" could be achieved. An incorrect bit rate (Bits Per Second BPS) will give you a blank screen or a lot of garbage characters.
There is a downloadable u-blox utility called "u-center" which allows you to directly monitor and adjust the u-blox gps module, but it wouldn't set the speed on mine. In addition, once set, the speed of the software port would revert on a cold boot. I therefor added a few lines of code to the beginning of my GPS code that force it to go back to 4800 bps on power up restarts.
If you are using the Software Serial library, you define a port with pin designations (see above), and then you may be able to set the BPS rate in software with:
#include <SoftwareSerial.h>
SoftwareSerial GPS(3,4);
void setup()
{
GPS.begin(38400);
// START OUR SERIAL DEBUG PORT
Serial.begin(4800);
Serial.println("GPS Level Convertor Board Test Script");
Serial.println("03/06/2012 2E0UPU");
Serial.println("Initialising....");
//
// THE FOLLOWING COMMAND SWITCHES MODULE TO 4800 BAUD
// THEN SWITCHES THE SOFTWARE SERIAL TO 4,800 BAUD
//
GPS.print("$PUBX,41,1,0007,0003,4800,0*13\r\n");
// command 41 (set protocol and baud), com port ID,input protocol mask,output protocol mask,baudrate,autobauding enable=1,*checksum,return,newline
GPS.begin(4800);
GPS.flush();
Credit due to :
GPS Level Convertor Board Test Script
03/05/2012 2E0UPU
Since you offered no particulars on your hardware setup, I can only assume that one or both of these painfully acquired bits of knowledge might address your issue.
In my case, I am using a shield with software serial port on pins 3(TX) and 4(RX) of the shield. Pins 0 and 1 cannot be used because I want to use the hardware port for debug communications with the host PC. The serial monitor (between the arduino Uno and the PC) is started at 4800 bps above, and then the software serial object (GPS above) is set to 4800 bps as well, using the u-blox command beginning with "$PUBX" above. This seems to force the GPS shield module to 4800 on startup each time a power cycle reboots the Arduino.
Hope this helps. Let me know how you make out with the problem.
Hello, Today 30 JAN 2014 I had the same issue, could not get the data from my UBLOX NEO-6M connected to my Arduino Uno. I was many hours trying, configuring, reading, searching, and figuring it out what to do. But you came with the solution: Use pin 3 and 4, and now I'm able to see the data comming from my UBLOX NEO-6M. THANK YOU VERY MUCH!!!
Hello, Today 30 JAN 2014 I had the same issue, could not get the data from my UBLOX NEO-6M connected to my Arduino Uno. I was many hours trying, configuring, reading, searching, and figuring it out what to do. But you came with the solution: Use pin 3 and 4, and now I'm able to see the data comming from my UBLOX NEO-6M. THANK YOU VERY MUCH!!!