NEO-6M GPS with Arduino Nano

Wiring for the NEO-6M GPS module (GY-NEO6MV2) on the Arduino Nano (ATmega328P, 5 V logic), chosen with the same pin rules BoardPilot uses: default buses first, and no pins that are used for flash, USB, the debugger or booting.

Wiring

NEO-6M GPS pinRoleArduino Nano pinNotes
VCCPower5V
RXInput to the partD2 (PD2)
TXOutput from the partD3 (PD3)
GNDGroundGND

Check before you power it on

Test code (Arduino)

// Library: SoftwareSerial (built in)
#include <SoftwareSerial.h>

SoftwareSerial gps(3, 2);  // RX, TX

void setup() {
  Serial.begin(115200);
  gps.begin(9600);
}

void loop() {
  while (gps.available()) Serial.write(gps.read());  // NMEA sentences, e.g. $GPGGA
}

Arduino board: arduino:avr:nano. Clones with the old bootloader upload at 57600 baud: choose “ATmega328P (Old Bootloader)” if uploads fail.

Questions

Which Arduino Nano pins do I use for the NEO-6M GPS?

VCC → 5V, RX → D2 (PD2), TX → D3 (PD3), GND → GND.

Does the NEO-6M GPS work with the Arduino Nano at 5 V?

Yes: the NEO-6M GPS runs at 3.3-5 V and the Arduino Nano uses 5 V signals, so no level shifting is needed.

BoardPilot checks this wiring in 3D as you build it, and finds crossed or missing wires on the real board.

Download BoardPilot

Full Arduino Nano pinout · NEO-6M GPS module (GY-NEO6MV2): all pins and data

The NEO-6M GPS on other boards

Other parts on the Arduino Nano