Issue: control GPS 18x-5Hz using Arduino

Hi All,

I am using Arduino UNO to record the data from Garmin GPS 18x-5Hz LVC (GPS Logger Shield Hookup Guide - learn.sparkfun.com). The wiring between the GPS and Arduino is :

GPS --> Arduino

Pin2 (Red (Vin)) --> 5V
Pin3 (Black (GND) ) --> GND
Pin4 (White (Tx)) --> Pin9 (Rx)
Pin5 (Black (GND)) --> GND
Pin6 (Green (Rx)) --> Pin8 (Tx)

I connected all ground pins between Arduino and GPS (Page 9, Figure 3 in user manual: (https://static.garmin.com/pumac/GPS_18x_Tech_Specs.pdf).

I tested the device outdoor, however I got zero for each data (time, location, speed). The Tx light on Arduino board blinks (serial monitor), but the Rx light does not. It seems Arduino does not receive data from GPS. How can I solve this issue?

Thank you for your help in advance.
Abbas

First thing you always should do, is replace your sketch with a simple read of the serial data coming from the GPS. The NMEA sentences are human readable, it's much easier to troubleshoot.

You say, "however I got zero" so I infer that you must be using some GPS library... it would be good to tell us which one. Also if you think you might have wiring errors, please post images of your hardware.

Hi aarg,

Thank you for your reply. I am using the code from the link below and it uses TinyGPS++ library.

https://learn.sparkfun.com/tutorials/gps-logger-shield-hookup-guide/example-sketch-tinygps-serial-streaming

For wiring I used Figure 3 in page 9 of the GPS manual from this link :

GPS --> Arduino
Pin2 (Red (Vin)) --> 5V
Pin3 (Black (GND) ) --> GND
Pin4 (White (Tx)) --> Pin9 (Rx)
Pin5 (Black (GND)) --> GND
Pin6 (Green (Rx)) --> Pin8 (Tx)

In the wiring image, I put the pin number of the GPS pins on the wires (sorry for the not clean wiring image).

I am just using Arduino and not a professional Arduino programmer. Any idea regarding the code and wiring issues?

Thank you,
Abbas

Yes, the library obscures the raw data coming from the GPS. You need to verify that by running a pass-through sketch that just passes raw serial data back and forth between the console serial and the GPS serial port. It's in the IDE, look for "SerialPassThrough' in the communications section of the examples.

You profess ignorance of the wiring, so how did you decide on your current wiring scheme?

I notice that you are using a GPS that uses RS-232 voltage levels. Those are completely incompatible with Arduino inputs/outputs.

Manual:
"The unit accepts TIA-232-F (RS-232) level inputs and transmits voltage levels from ground to the input voltage, TIA-232-F (RS-232) polarity."

Actually, there is some chance that you've blown the Arduino pins.

aarg,

Yes, you are right. The device accepts RS-232. However, I did wiring based on the information below that I found in the user manual:

  1. 1.6.2.1 input voltage (page 5)
  2. Table 1 (page 8)
  3. Figure 3 (page 9)

Do you think I did a wrong wiring? or the device is not compatible with Arduino?

Thanks,
Abbas

Table 1 page 8 shows a PC connection, Arduino isn't a PC. Illustration 3 page 9 just shows some vague "host application device".

Yes, it is not Arduino compatible, without a voltage level translation from RS-232 levels to TTL levels. As I already pointed out in reply #4.

See "1.6.4 Interfaces"

aarg,

Do you have any suggestion for a converter kit to translate the RS-232 to TTL voltage levels (which can make the device compatible with Arduino)?