SoftwareSerial problem, no data to serial monitor

Hi, for past 2 days i’m trying to make my GPS beitian BN-880 module work, but I am not getting any data to serial monitor. GPS module is working because I have already connected it with USB to serial cable, and serial monitor was showing messages.

But when I connect it to arduino UNO, it shows nothing.
I used simple sketch just to see if I’m getting anything.

#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3);

void setup()
{
  mySerial.begin(9600);
  Serial.begin(19200);
}

void loop()
{
  if (mySerial.available())
    Serial.write(mySerial.read());
  if (Serial.available())
    mySerial.write(Serial.read());
}

I would appreciate any help, thank you!

I wonder if you have the GPS connected correctly? Perhaps you need to swap the rx and tx wires? You also need a GND connection.

Have a look at the examples in Serial Input Basics - simple reliable ways to receive data.

...R

Robin2:
I wonder if you have the GPS connected correctly? Perhaps you need to swap the rx and tx wires? You also need a GND connection.

Have a look at the examples in Serial Input Basics - simple reliable ways to receive data.

...R

Hi, thank you for your reply.
GPS is connected correctly, I have already tried swapping them, I also tried other digital pins.
It even worked in U-blox center like a charm with a USB to serial cable. But I can't get it to work with arduino.
TX light on GPS is blinking which means it's sending something, but RX on arduino is not, does that mean anything?

You might need to level-shift the GPS TX line up to 5V logic levels. Was the USB-to-serial converter a 3.3V module?

Also, TinyGPS will not parse that stream correctly. You could try NeoGPS, which should parse it correctly. It also has a diagnostic program, NMEAdiagnostic.ino.

Cheers,
/dev

/dev:
You might need to level-shift the GPS TX line up to 5V logic levels. Was the USB-to-serial converter a 3.3V module?

Also, TinyGPS will not parse that stream correctly. You could try NeoGPS, which should parse it correctly. It also has a diagnostic program, NMEAdiagnostic.ino.

Cheers,
/dev

Hi, I am using 5,5V batteries to power GPS. Even with USB-to serial I only connected TX and RX lines.
This is the cable: USB-to-TTL-Serial

Thanks for that information, but now I can't parse anything because I am getting nothing.

Robin2:
I wonder if you have the GPS connected correctly? Perhaps you need to swap the rx and tx wires? You also need a GND connection.

Have a look at the examples in Serial Input Basics - simple reliable ways to receive data.

...R

This was the problem, I didn't have GND on arduino connected to GND on the battery. Thank you!

/dev:
You might need to level-shift the GPS TX line up to 5V logic levels. Was the USB-to-serial converter a 3.3V module?

Also, TinyGPS will not parse that stream correctly. You could try NeoGPS, which should parse it correctly. It also has a diagnostic program, NMEAdiagnostic.ino.

Cheers,
/dev

Do you know why tinyGPS doesn't parse stream correctly? Is there any fix for that?

Do you know why tinyGPS doesn’t parse stream correctly?

Yes. TinyGPS does not handle different Talker IDs.

Is there any fix for that?

Use NeoGPS? Be sure to follow the Installation instructions.

Talker IDs are just one reason I wrote NeoGPS. Efficiency and RAM usage are two other reasons: NeoGPS is smaller and faster than all the other libraries. You can configure it to parse only the fields and messages that you really need, saving even more space and time.

BTW, the are problems with the TinyGPS examples. Many people have trouble when they try to modify the examples for their sketch.

I would also suggest using AltSoftSerial on pins 8 & 9, because SoftwareSerial is very inefficient. SoftwareSerial can interfere with other parts of your program.

If you can’t change pins, I would suggest NeoSWSerial, because it is more efficient than SoftwareSerial, and does not usually interfere with other parts of your program. NeoSWSerial is a drop-in replacement. Just change the include and the declaration:

#include <NeoSWSerial.h>

NeoSWSerial mySerial(2, 3);

Cheers,
/dev

(deleted)