NEO-6M GPS module (GY-NEO6MV2)
u-blox NEO-6M GPS module (GY-NEO6MV2): VCC/RX/TX/GND pins, 9600 baud NMEA, 3.3 V logic notes, TinyGPSPlus and why it needs open sky.
Community draft — report a mistake
3.3 V or 5 V? The module’s TX is a 3.3 V signal, which every board reads fine. Its RX pin is 3.3 V logic: from a 5 V Arduino TX, add a 1 kΩ / 2 kΩ divider. You only need RX if your sketch sends configuration commands.
The NEO-6M is a u-blox GPS receiver on a small board with a ceramic patch antenna, a backup battery (or supercap) and a fix LED. It streams standard NMEA sentences over serial at 9600 baud; a library like TinyGPSPlus turns them into latitude, longitude, speed and UTC time.
GPS needs a view of the sky. Indoors under a concrete roof it may never get a fix — test near a window or outside, with the antenna’s ceramic side facing up.
The backup cell keeps recent satellite data, so the next start (a “warm start”) finds a fix much faster than the first one.
Pinout
| Pin | What it does |
|---|---|
VCC | Supply, 3.3–5 V (about 45 mA while acquiring) |
RX | Serial in (3.3 V logic) — connect to the board’s TX |
TX | Serial out, NMEA sentences at 9600 baud — connect to the board’s RX |
GND | Ground |
Library
TinyGPSPlus by Mikal Hart
Arduino IDE → Library Manager → search the name above. Each guide lists the exact version we compile against.
Use it with
- NEO-6M GPS module (GY-NEO6MV2) with Arduino Mega 2560 Arduino C++
- NEO-6M GPS module (GY-NEO6MV2) with Arduino Nano Arduino C++
- NEO-6M GPS module (GY-NEO6MV2) with Arduino Uno R3 Arduino C++
- NEO-6M GPS module (GY-NEO6MV2) with ESP32 DevKit V1 Arduino C++
- NEO-6M GPS module (GY-NEO6MV2) with ESP32-S3-DevKitC-1 Arduino C++
- NEO-6M GPS module (GY-NEO6MV2) with NodeMCU ESP8266 Arduino C++
- NEO-6M GPS module (GY-NEO6MV2) with Raspberry Pi Pico W MicroPython
Common errors
No fix, LED never blinks
The LED blinks once a second only after a fix. Take the antenna outdoors or to a window with open sky and wait — a cold start can take 30 s to several minutes.
Serial shows nothing
TX and RX are crossed: the module’s TX goes to your board’s RX. The default baud rate is 9600.
Garbage characters
Baud rate mismatch. Open the port at 9600 unless you have reconfigured the module.
Position jumps around indoors
Weak satellite signals indoors give poor fixes. Check the satellites and HDOP values TinyGPSPlus reports before trusting a position.