GPS Featherwing with Arduino (and logic level shifter) returning strange result

So in a previous post (https://forum.arduino.cc/t/featherwing-gps-to-arduino/1336598) I learned that I need to use a logic level shifter (I'm still really new to all this and love to learn more about it) to get the data from my gps featherwing to my arduino and read it. However, when I the arduino, logic level shifter and the gps featherwing, I get a strange result. Below you can see the code I'm using:

#include <SoftwareSerial.h>
SoftwareSerial GPSSerial(8, 9);  //Rx pin, Tx pin
void setup()
{
    // make this baud rate fast enough to we aren't waiting on it
    Serial.begin(115200);

    // wait for hardware serial to appear
    while (!Serial) delay(10);

    // 9600 baud is the default rate for the Ultimate GPS
    GPSSerial.begin(9600);
}

void loop()
{
    if (Serial.available())
    {
        char c = Serial.read();
        GPSSerial.write(c);
    }
    if (GPSSerial.available())
    {
        char c = GPSSerial.read();
        Serial.write(c);
    }
}

The pictures below show how I connected everything together, if not clearly visible or a diagram is required, please tell me (and which type of diagram please) such that I can provide it.

The result I'm getting when running the code in the arduino IDE is this:

I don't understand why I'm getting this strange result and I think that's not what the output should look like. Can anyone help me out please?

The pictures are not useful. Please post a wiring diagram with all pins, parts and connections clearly labeled. Hand drawn is preferred.

Since almost all sensors these days are 3.3V, you would be much better off buying a Feather or other 3.3V Arduino. Then you don't have to bother with level shifters.

Looking at the Adafruit basic rx-tx test web page, they don't mention having to send any data to the GPS module in order to get it to output NMEA sentences.

If that is true - and I believe it is - you should be able to simplify your test setup by removing the level shifter and all its wiring as it is only needed if you need to send information to your GPS module.

That should leave you just GND and 3v3 from the UNO to the Featherwing and the yellow wire from the Featherwing TX to UNO pin 8.

How is the yellow wire attached to the GPS Featherwing? Have you just pushed the pin into the TX hole on the board?

EDIT: The baud rate shown at the lower right hand corner of the IDE should match the baud rate in your Serial.begin function. Try that first.

To clarify, by "baud rate shown at the lower right hand corner of the IDE", @markd833 is actually referring to the menu at the top right corner of the Serial Monitor panel:

Although that menu is near the bottom right corner of your screenshot, it is not so near that location in the actual Arduino IDE window, so I thought I should add a note to avoid any chance of confusion.

The garbage characters you saw in Serial Monitor are expected when you have a mismatch between the configuration of the Serial Monitor and the baud rate configured in the Serial.begin call in your sketch.

1 Like

This is the diagram.

I might have this wrong, but if the Bx signals are 5V signals, then shouldn't UB (or is it VB?) be connected to +5V? And similarly if the Ax signals are 3.3v, then shouldn't UA (or VB?) be connected to 3.3V.

There looks to be a pin marked OE on your logic shifter board. OE is usually abbreviation for Output Enable. I would be looking into the documentation for your level shifter to see what you are meant to do with this pin.

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