Olimex Nano with Mod-GPS: No GPS detected

Started by WimV, March 29, 2018, 06:10:05 PM

Previous topic - Next topic

WimV

I have recently tried to use the Olimex Nano with the Mod-GPS module.
Now the problem that I'm facing is that I can't get a connection with the GPS module using the Nano.
I used the examples as found on the module's page:
https://www.olimex.com/Products/Modules/GPS/MOD-GPS/

When I run the code, I get the Serial.println() texts without problem, but the connection with the GPS module keeps saying: "No GPS detected: check wiring."
I connected the UEXT connector of the module with the one of the Nano. There's only one possible way for them to fit and even then I checked the pinouts and I'm pretty sure they're connected correctly.

I have tried to use the GPS module with my Arduino Uno on 3.3V VCC and there it runs with almost exactly the same code like in the example without any problems.
I'm using the same baud rate as the one that worked with the Arduino and is standard in the example so I don't really get why the example can't connect to the GPS module. Am I missing something very obvious?

olimex

OLIMEXINO-NANO is designed for low power and UEXT connector power supply by default is OFF
you must drve D8 LOW to enable power supply on UEXT

WimV

Thanks, that seems to have caused my problems. For some reason, the if condition it was in wasn't executed because the argument wasn't defined. I put the pinMode (8, OUTPUT) out of that statement and now everything works fine :). I didn't know what that command actually did and, to be honest, I never thought about looking it up in the schematic.

So it used to be like this:

#include <TinyGPS++.h>
#include <SoftwareSerial.h>

#if    defined (ARDUINO_AVR_OLIMEXINO_32U4)
#define SERIAL  Serial1
#elif defined (ARDUINO_AVR_OLIMEXINO_328)
#define SERIAL  Serial1
#else
#define SERIAL  Serial1
#endif

#define BAUDRATE 9600 // this is the default baudrate of the GPS module

// The TinyGPS++ object
TinyGPSPlus gps;

void setup()
{
#if    defined (ARDUINO_AVR_OLIMEXINO_32U4)
  pinMode (8, OUTPUT);
  digitalWrite (8, LOW);;
  SERIAL.begin(BAUDRATE);
#endif
  Serial.begin(BAUDRATE);
  while (!Serial);
}


But by putting the command outside of the if-statement, it now executes fine.
Is it necessary to define the ARDUINO_AVR_OLIMEXINO_32U4 or is it something I can omit?