NEO-6M flashing but not returning any data

My NEO-6M module's LED is flashing indicating it has a lock, however it does not return any data.

I am using an Arduino UNO R4 WiFi, and have it set up as follows:

VCC -> 3.3v
Rx -> 3
Tx -> 4
GND -> GND

Upon running the following code, I am only returned 0s regardless of using the gps outside, the rx and tx pins being swapped, the baud rate I set the gps to (4800, 9600, and 115200), or the wires used.

#include "SoftwareSerial.h"

SoftwareSerial gps(4, 3);

void setup(){
  Serial.begin(9600);
  gps.begin(9600);
}

void loop(){
  Serial.println(gps.available());
}

I've tested this with the module connected to both an external power supply at 3.3v and the Arduino, and they both return the same results. Additionally, I have used various example programs, and I am returned with some variation of " No GPS detected: check wiring." This module was working before, however after not powering it for around a month it has begun behaving like this. If it does help, the module does begin to heat up slightly when it is powered for longer than five minutes at 3.3v.

Thank you for your help!

Unlikely choice. 9600 is popular.

The R4 WiFi has 5V I/O and requires a logic level shifter to connect to a 3.3V sensor. Does your GPS module include that logic level shifter?

If not, you can damage both the Arduino and the GPS unit by connecting them directly together.

I had it at 9600 earlier while testing it, just slipped up in changing it back before pasting the code here haha.

The GPS module doesn't have a logic level shifter, however the logical pins are 5v tolerant, and it includes a 3.3v LDO voltage regulator for power, so it should be safe to connect to my Arduino.

The module was working fine when I was testing it around a month and a half ago, so I'm not too sure what's happening here

Try this code, what do you see in the serial monitor ?

#include "SoftwareSerial.h"

SoftwareSerial gps(4, 3);

void setup()
{
  Serial.begin(115200);
  gps.begin(9600);
}


void loop()
{
  while (GPS.available())
  {
    Serial.write(GPS.read());
  }
}

I tried this code, except with the pin TX connected to 0 and RX connected to 1, so I changed the third line to

SoftwareSerial gps(0, 1);

This only returned a single unrecognisable character despite the baud rate being correct, however when I unplugged pin 0 and plugged it back in, it sent between one and four of the same character. Pictured below is the output I got

image

So what happened when as suggested you tried the actual code suggested in post #4 ?

No need to use SoftwareSerial with an Arduino Uno R4 WiFi.

If you are going to use pins 0 and 1, then use Serial1.
Details are to be found in the Arduino UNO R4 WiFi Cheat Sheet.

1 Like

There was no output

If the GPS pins are connected correctly, and there is no output, then the GPS is faulty.

Please look at this post from UKhelicopterBOB: Uno R4 Wifi not detecting GPS module (SoftwareSerial) - #14 by UKHeliBob His code works for you. Its a simple echo program, that let you read whatever is sent on the hardware serial back and forth.

The Uno R4 wifi have hardware serial, defined as serial1, pin 0 and 1. The USB/serial monitor, is defined as Serial. Try to swap tx/tx if you do not recive anything. Forget the software serial in this setup. The 6M module should send nmea data to the serial monitor, even without satelite fix. I guess you got yourself a china ublox (stolen clone). They usualy is set with 9600 baud as a start. You get what you paid for, unstable, missing ublox commands, impossible to flash, bad reception. However, you could get a good one and use it for simple prototypes.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.