做汽车定位、轨迹记录、户外寻踪,甚至给机器人标记"现在在哪",GPS模块是绕不开的。NEO-6M是u-blox出的一套经典定位方案,GY-NEO6MV2这种开发板把核心模块、陶瓷天线、纽扣电池备份全做在一起,通电就往外吐NMEA语句,里面全是经纬度、速度、时间这些关键信息。这篇把它的收据线怎么接、串口怎么读、第一次搜星为什么慢讲透。
NEO-6M引脚:VCC、GND、TX、RX四脚
模块上四个核心脚:VCC接5V或3.3V都行(板载稳压)、GND接地、TX是数据发送脚、RX是接收脚。因为本身带陶瓷天线和可充电纽扣电池做RTC备份,断电后星历和时区能保一段时间,再次上电搜星会快不少。它每秒默认输出一组定位信息,波特率通常9600,也用38400的少见厂商版本。模块板载的LED灯平时闪烁规律能帮你判断定位状态:有信号时灯会规律闪,没信号时乱闪。

接线图:模块TX接Arduino RX
最关键是交叉接:模块的TX(发送)要接Arduino的RX(接收),模块RX接Arduino的TX,不能同向相连,同向接法串口永远收不到数据。在Uno上UART只有硬件串口0,为了把打印和收数分开,多用软串口,比如把模块TX接到Arduino D3,用SoftwareSerial软串口在D3上接收。接五针或四针模块时同理,确认GND共地后基本数据就能飘进来。

代码:串口读出一句句$GPRMC
接好后,代码就是不断从软串口读字符,拼成一行一行的NMEA句子。最常见的是$GPRMC,里面带时间、有效位标志、纬度、经度、速度、方位角。判断定位有效要看句子里状态位是不是A(有效)而不是V(无效),还没锁星时经常是V。想省事就装TinyGPS++库,它直接帮你解析出location.lat()和location.lng(),再判断valid就能拿到干净坐标。
常见坑:冷启动很久没信号怎么办
新模块冷启动搜星慢很正常,第一次可能需要30秒到几分钟,有的甚至要到窗口边等更久,别一上电就说模块坏了。定位成败一半看环境:在窗边、阳台、空旷处信号好,在室内或金属顶棚下基本无解,这是GPS硬性的直视天空需求。供电电流别省,模块启动瞬间需要上百毫安的峰值电流,用不足的USB线可能反复重启搜不到星。(来源:lastminuteengineers接线图、circuitdigest定位实测)


冷启动要等挺久那条说得实在,我第一次以为模块坏了,开到窗边等一会就有了
看RMC状态位是不是A判断定位是否有效,这个细节很实用,比瞎猜强
TX接RX这个交叉接法最容易错,同向接真的收不到数据,看这篇就对齐了