Arduino Nano V3 and GPS NEO-6M

Hi community!

I'm a newbie in Arduino, and will very much appreciate your help.

I made a project on the Arduino Uno: GPS + OLED screen to display location, time, etc - IT WORKS FINE
now I got a new Arduino NANO v3 card and I want to make exactly the same project.

The problem: when everything is connected to Nano (simply identical wiring, no changes) I am not getting any info from GPS module (leb blinks - so it has a fix). Reconnecting to UNO - it works ...

it seems that SoftwareSerial is the problem: it returns garbage .... playing with BAUD rate does not help ...

additional info: it seems I have a Chinese clone of Nano v3 with (USB-serial chip: CH340G)
(to make serial prompt work I need to specify SerialMonitor.begin(BAUD) speed x4 time larger than in the Serial Monitor)
I have tried different BAUD rates for GPS module - NO changes

Any advise? I have already twisted my brains on the issue.

My code below:

#define I2C_ADDRESS 0x3C
#include <math.h>
#include <stdio.h>
#include "SSD1306Ascii.h"
#include "SSD1306AsciiAvrI2c.h"
#include <TinyGPS++.h>
#include <SoftwareSerial.h>
#define ARDUINO_GPS_RX 3
#define ARDUINO_GPS_TX 4
#define GPS_BAUD 38400
#define gpsPort ssGPS
#define SerialMonitor Serial
#define I2C_ADDRESS 0x3C
TinyGPSPlus tinyGPS;
SSD1306AsciiAvrI2c oled;

void setup()
  oled.begin(&Adafruit128x64, I2C_ADDRESS);

void loop()
  static const double LONDON_LAT = 51.508131, LONDON_LON = -0.128002;


  oled.setCursor(0, 0);

void printGPSInfo()
  SerialMonitor.print(, 6);
  SerialMonitor.print(tinyGPS.location.lng(), 6);

  oled.print(, 6);
  oled.print(" "); oled.println(tinyGPS.location.lng(), 6);

static void smartDelay(unsigned long ms)
  unsigned long start = millis();
    while (gpsPort.available())
  } while (millis() - start < ms);
void printDateTime()
  char buff1[50];
  sprintf(buff1, "%02d:%02d:%02d   %02d.%02d.%02d",tinyGPS.time.hour(), tinyGPS.time.minute(), tinyGPS.time.second(),,,;

void printAltVelCourse()
  oled.print("Z:");oled.print(tinyGPS.altitude.meters(),  1); 
  oled.print(" C:");oled.print(tinyGPS.course.deg(), 0); 
  oled.print(" V:");oled.println(tinyGPS.speed.mps(),1); 

void printSat()
  oled.print("  HDOP:");oled.print(tinyGPS.hdop.hdop(), 2);