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

ESP32连接GPS模块仅按复位键有串口输出问题求助

解决ESP32连接GPS模块只在重启时输出数据的问题

问题根源

  • 你代码里用的Serial是ESP32和电脑通讯的USB串口,GPS模块不能直接用这个串口通讯,得用ESP32的硬件串口2(GPIO16/GPIO17)。
  • Serial.read()每次只读1个字节,而且没判断串口有没有数据就读,没数据时会返回-1,直接赋值给String就会输出"-1"。
  • 按住RST时硬件串口短暂复用,才凑巧读到了GPS数据。

修正步骤

  1. 正确接线:

    • GPS模块TX → ESP32 GPIO16(RX2)
    • GPS模块RX → ESP32 GPIO17(TX2)
    • GPS模块VCC接ESP32 3.3V,GND接ESP32 GND(GPS是3.3V设备,别接5V)
  2. 修正代码:
    用HardwareSerial初始化串口2专门读取GPS数据,默认Serial保留给电脑串口监视器:

// 初始化硬件串口2,RX=GPIO16,TX=GPIO17
HardwareSerial GPSserial(2);

void setup() {
  // 电脑串口监视器波特率9600
  Serial.begin(9600);
  // GPS模块默认波特率一般是9600,根据模块参数调整
  GPSserial.begin(9600, SERIAL_8N1, 16, 17);
}

void loop() {
  // 检查GPS串口有没有数据
  if (GPSserial.available() > 0) {
    // 读取所有可用数据并输出到电脑串口
    while (GPSserial.available() > 0) {
      char c = GPSserial.read();
      Serial.print(c);
    }
  }
}

注意事项

  • 打开串口监视器时,波特率要选9600,和代码里一致。
  • 确认GPS模块的波特率,有些模块默认是115200,需要对应修改代码里的GPSserial.begin()参数。
  • 去掉原来的delay(500),会导致丢GPS数据,GPS每秒会输出1-2次NMEA语句,实时读取才不会漏。

内容的提问来源于stack exchange,提问作者Luke Lloyd LukeSkywalker

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 06:50:33