This is my very first Arduino project. I want to learn about GPS navigation by exploring the NMEA protocol!

Therefore, I bought a WeeBee GPS module. After reading the datasheet, I have two questions:

  1. The official Arduino website states

    Note: if you are using an Arduino Uno, keep in mind that you can't use the GPS module at the same time as your computer is connected on the USB port.

    But I you go to the end of his tutorial, you will see he can transmit the GPS data to his computer. I don't understand why it would not be possible...

  2. The GPS module datasheet (download link here) states that the maximum voltage is 5V. But it also states

serial connections are 3.3V CMOS Logic Levels


Suitable decoupling must be provided by external decoupling circuitry.

So, does it mean I need a logic level converter to prevent damage to the GPS module?

1 Answer 1

  • The article on the Arduino website means that you can't upload sketches from your PC to the Arduino or receive any sort of data, through the serial monitor or otherwise, from your PC, while the GPS module uses the RX pin. Any attempt to send data from PC to Uno in this condition would cause the Arduino to receive only corrupted data, since 2 devices (GPS module and PC) would be trying to send data at the same time, with the same line. This limitation is easily resolved by connecting the GPS module to a SoftwareSerial port instead; this keeps the HardwareSerial port (pins 0 & 1) free for bidirectional PC-Arduino communication.
  • The datasheet says that the maximum power supply voltage is 5 V. However, the serial connections are 3.3 V logic, so yes, you will need logic level shifters. A simple voltage divider will serve. However, 'external decoupling' refers to circuitry used in decoupling/smoothing out any spikes or dips that may occur in the supply voltage. An untamed spike could damage the device, while a dip (perhaps from large current draw) could cause the device to stop working, if the voltage falls low enough to be considered under-voltage. A 10uF electrolytic capacitor, connected from Vcc to GND close to the GPS module, should be okay.
  • Thank you for your answer! -) I will use the "softwareserial" on pins 2 and 3 instead of the "hardwareserial" on pins 0 and 1. But they didn't do it in the tutorial and they still can send GPS data to the computer... -) I assume that a logic level shifter like this one will do the job? Together with a 10µF capacitor connected with the "VA" and "OE" ports of the level shifter.
    – Simon
    Commented Jul 2, 2016 at 7:55
  • Dear @TisteAndii, Thanks again for you answer. Could you please look at my reply? Just to know I interpret your answer correctly. Regards, Simon.
    – Simon
    Commented Jul 5, 2016 at 19:01
  • @Simon Post a link to the tutorial. Yes, you should use pins 2 and 3 with SoftwareSerial. As for the logic shifter, all you need is a pair of resistors, perhaps 2.2k and 3.3k. Google "resistor voltage divider 5 3.3". Commented Jul 5, 2016 at 19:11
  • Dear @TisteAndii,I meant the Arduino page. You will see that they connected the GPS module on pin 0, but they could also send it with the SoftwareSerial to the computer (as shown at the buttom of the page).
    – Simon
    Commented Jul 7, 2016 at 19:01
  • Thank you for you input regarding the logic level shifter. Indeed, a 1.7k and 3.3k (or 10k and 20k and so on) would work. Although a simple resistor voltage divider is not the recommended solution. The impedance of the surrounding circuitry can affect it (although this is not an issue here, I guess) and high freq. signals (no idea if baud rate of 9600bps will be an issue).
    – Simon
    Commented Jul 7, 2016 at 19:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.