You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NEO-6M GPS模块与Arduino Uno通信乱码及波特率调整问题

NEO-6M GPS模块Arduino Uno读取乱码及波特率修改解决方案

问题分析

你遇到的乱码核心原因是Arduino Uno的SoftwareSerial模拟串口在115200波特率下稳定性极差——模拟串口依赖CPU中断模拟时序,高波特率下极易出现丢包、时序偏移,导致输出乱码。而TTL转换器用的是硬件串口,因此能正常读取115200波特率的GPS数据。

临时解决:用硬件串口验证GPS通信

Arduino Uno的硬件串口(Serial,对应引脚0/RX、1/TX)支持稳定的115200波特率,可先用来验证GPS数据:

  1. 接线:

    • GPS模块VCC → Arduino 3.3V(NEO-6M为3.3V供电,禁止接5V)
    • GPS GND → Arduino GND
    • GPS TX → Arduino RX(0)
    • GPS RX → Arduino TX(1)

    注意:上传代码时需拔掉GPS与引脚0/1的连线,否则串口被占用会导致上传失败。

  2. 测试代码:

void setup() {
  Serial.begin(115200); // 与GPS默认波特率一致
}

void loop() {
  while (Serial.available()) {
    Serial.write(Serial.read()); // 转发GPS数据到串口监视器
  }
}

上传代码后重新接好GPS连线,打开串口监视器(波特率设为115200),此时应能看到正常的NMEA数据。

永久修改GPS波特率到9600

若想改用SoftwareSerial稳定读取,需将GPS模块的波特率永久降至9600,有两种实现方法:

方法1:用TTL转换器+串口助手修改

  1. 用TTL转换器连接GPS模块到电脑,打开串口助手(波特率设为115200)。
  2. 发送以下NMEA命令到GPS模块(需包含换行回车):
$PUBX,41,1,0007,0001,9600,0*17\r\n

该命令作用:设置GPS串口波特率为9600,保存到模块永久内存(断电后不会恢复默认值)。

  1. 发送后重启GPS模块,将串口助手波特率改为9600,若能正常读取数据,说明修改成功。

方法2:用Arduino硬件串口发送修改命令

  1. 保持硬件串口接线(GPS TX→Uno RX0,GPS RX→Uno TX1),上传以下代码:
void setup() {
  Serial.begin(115200);
  delay(1000);
  // 发送波特率修改命令
  Serial.println("$PUBX,41,1,0007,0001,9600,0*17");
  delay(1000);
  // 切换串口波特率到9600验证
  Serial.end();
  Serial.begin(9600);
}

void loop() {
  while (Serial.available()) {
    Serial.write(Serial.read());
  }
}
  1. 打开串口监视器(先设为115200,之后改为9600),若能正常接收数据,说明修改完成。

修改后用SoftwareSerial读取的代码

波特率改为9600后,即可用SoftwareSerial稳定读取,示例代码:

#include <SoftwareSerial.h>

// 定义软串口引脚,示例用2和3
SoftwareSerial gpsSerial(2, 3); // RX, TX

void setup() {
  Serial.begin(9600); // 电脑串口监视器波特率
  gpsSerial.begin(9600); // 与GPS波特率一致
}

void loop() {
  while (gpsSerial.available()) {
    Serial.write(gpsSerial.read());
  }
}

接线:GPS TX→Uno引脚2(软串口RX),GPS RX→Uno引脚3(软串口TX),VCC和GND保持不变。

内容的提问来源于stack exchange,提问作者Divyansh undley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 18:08:11