Why GPS use only Software Serial ?

Hello Guys,

This is my baby step in learning Arduino. I am playing around arduino because I saw its fun.

Well I am from a Web and Computer Programming background and have good knowledge of programming languages. However I never worked on Electronics before.

I have bought Arduino Uno and NEO6MV2 NEO-6M (http://www.amazon.in/KitsGuru-GY-NEO6MV2-GPS-NEO6MV2-antenna/dp/B00YAF57CC?ie=UTF8&psc=1&redirect=true&ref_=oh_aui_detailpage_o01_s01).

So my first step was to read software libraries. I read something called Software Serial using which we can convert existing digital pins to serial pins. And this is helpful when more that 1 device/module is going to get attached to serial. Correct me if I am wrong.

I am also referring to http://pighixxx.com/unov3pdf.pdf where Rx - 0 and tx - 1 are already present then why the heck people on internet are using SoftwareSerial with TinyGPSPlus?

Also one more thing, I am unable to connect the GPS module that I purchased with Arduino, pins fit very loosly on GPS module. Do I need to buy some sort of mounting jack for GPS ? As of now I only want to connect GPS to Arduino. I was so excited to see coordinates in console but now I am getting WTF kind of feeling

BTW I am connecting pins in following manner Arduino===GPS Module

Tx====Rx Rx====Tx Grnd=====Grnd 3.6V====VLCC

Need help.

Thanks :-)

If you are not planning on using the serial port to debug your sketch, it shouldn't be a problem to use it for the GPS.

If you plan on communicating with the PC through the serial port, then you must use software serial, or get an Arduino with multiple hardware serial ports, like the Mega.

As of now I only want to connect GPS to Arduino.

Why?

I was so excited to see coordinates in console

If you see data in the Serial Monitor app (NOT the consode; the Arduino doesn't HAVE a console), then you are sending data using Serial, which, if the GPS was connected to it, would be a silly thing to be doing. The GPS already KNOWS where it is. It doesn't need for you to tell it where it is.

The best choice for serial communications is obviously the HardwareSerial object, Serial, on pins 0 & 1. However, those pins are really dedicated to the USB connection (via the onboard Serial-to-USB adapter). That's how the PC displays your Serial.print messages in the Serial Monitor window and also how new sketches are uploaded to the Arduino. There are ways to connect other devices to these pins, but it is an advanced topic, and should not be attempted by beginners.

The second best choice would to connect the GPS to pins 8 & 9, because AltSoftSerial requires those pins. It is very efficient and reliable.

After that, any other pins can be used with one of these two software serial libraries:

NeoSWSerial is less efficient than AltSoftSerial, but much more efficient than SoftwareSerial. It only supports baud rates 9600, 19200 and 38400, but it does support simultaneous TX and RX. I maintain this library.

If you must use a different baud rate, SoftwareSerial is the last choice. It blocks interrupts for long periods of time and can interfere with other libraries. It cannot transmit and receive at the same time.

And for GPS libraries, you can't beat my NeoGPS. It's faster and smaller than all other libraries, and totally configurable. The NeoGPS example programs are more robust, and there is a diagnostic program to help you Troubleshoot problems. Many people have problems when they try to modify other libraries' examples.

Cheers, /dev

SurferTim: If you are not planning on using the serial port to debug your sketch, it shouldn't be a problem to use it for the GPS.

If you plan on communicating with the PC through the serial port, then you must use software serial, or get an Arduino with multiple hardware serial ports, like the Mega.

Ohh Does that mean Ports 0 and 1 (Hardware Rx and Tx) are used for serial monitor ?

PaulS: Why?

Let me go Step by Step, I dont want to mix up GPS, SIM, other sensors at the moment.

/dev: The best choice for serial communications is obviously the HardwareSerial object, Serial, on pins 0 & 1. However, those pins are really dedicated to the USB connection (via the onboard Serial-to-USB adapter). That's how the PC displays your Serial.print messages in the Serial Monitor window and also how new sketches are uploaded to the Arduino.

If they are used for Serial Monitor on PC, then why they are open ? I mean Arduino is connected to PC with blue USB cable which actually does not connect with these pins.

As of now I understood few points. Pins 0 and 1 are of no use when using Serial Monitor for debugging.

You might be laughing while answering thinking what sort of noob questions is I am asking ... :)

Anyways, thank you so much friends, I found this forum very helpful.

If [pins 0 & 1] are used for Serial Monitor on PC, then why they are open? I mean Arduino is connected to PC with blue USB cable which actually does not connect with these pins.

Look closer. :) There are traces on the printed circuit board that also go to the USB-to-Serial converter chip. There's a very tiny square chip near (and connected to) the USB connector, probably an ATmega16U2. It can be different if you have a clone instead of a "real" Arduino.

Cheers, /dev