雾中知 2025-09-11 21:53 采纳率: 0%
浏览 9

GNSS与QGC建立通讯

外接GNSS模块与电脑端QGC建立通讯,谁先发出指令,是QGC先发出请求指令还是GNSS无需被请求,直接发出信息,是不是定时发送的。

  • 写回答

5条回答 默认 最新

  • 檀越@新空间 2025-09-11 21:54
    关注

    晚上好🌙🌙🌙
    本答案参考通义千问

    在使用外接GNSS模块与电脑端的QGroundControl(QGC)建立通讯时,GNSS模块通常不会主动发送数据给QGC,而是通过串口或USB接口将GPS信息传递给嵌入式系统(如飞控),然后由飞控再将这些信息转发给QGC。因此,QGC是主动请求数据的一方,而GNSS模块通常是被动地提供数据。


    一、GNSS模块与QGC通讯的基本原理

    1. GNSS模块的工作方式

    • GNSS模块(如UBlox、Trimble等)定时发送NMEA协议格式的数据(如GPRMC、GPGGA等)。
    • 这些数据包括:位置、速度、时间、卫星数量等信息。
    • 模块本身不等待指令,而是持续输出数据,除非被配置为只在特定条件下发送。

    2. QGC如何接收GNSS数据

    • QGC通常通过串口(USB转串口)、WiFi、蓝牙等方式与飞控系统连接。
    • 飞控系统(如PX4、ArduPilot)会从GNSS模块读取数据,并将其封装成MAVLink协议,转发给QGC
    • QGC并不直接与GNSS模块通信,而是通过飞控系统获取定位信息。

    二、谁先发出指令?

    QGC是主动发起请求的一方

    • QGC在启动后会向飞控系统发送MAVLink命令,例如:
      • MAV_CMD_REQUEST_DATA_STREAM 请求特定的数据流(如位置、姿态等)
      • MAV_CMD_GET_POSITION 获取当前坐标
    • 飞控系统收到请求后,会从GNSS模块读取数据并返回给QGC。

    GNSS模块无需被请求,但需要被正确读取

    • GNSS模块持续发送数据,但必须被飞控系统正确解析和处理
    • 如果飞控没有配置好串口读取逻辑,GNSS数据将无法被QGC获取。

    三、解决方案(有序列表)

    1. 确保GNSS模块正确连接到飞控系统

      • 使用USB转串口模块或者直接连接飞控的GPS接口。
      • 检查串口参数(波特率、数据位、停止位、校验位)是否与GNSS模块一致(如9600, 8N1)。
    2. 配置飞控系统读取GNSS数据

      • 在飞控固件中启用GPS模块(如在PX4中设置 GPS_TYPESERIAL_PORT_3_BAUD)。
      • 确保飞控系统能够识别并解析NMEA数据。
    3. 使用MAVLink协议将数据传给QGC

      • 飞控系统将GNSS数据打包为MAVLink消息(如GPS_RAW_INTGLOBAL_POSITION_INT)。
      • QGC监听这些消息并显示在地图上。
    4. 在QGC中检查数据来源

      • 打开QGC → 左下角“飞行数据” → “传感器” → 查看GPS状态。
      • 确认GNSS模块是否被识别并正常工作。
    5. 调试工具辅助排查问题

      • 使用QGC的Log Viewer查看日志,确认是否有GPS数据被接收。
      • 使用串口助手(如XCOM、PuTTY)直接查看GNSS模块输出的NMEA数据。

    四、示例代码(Arduino + UBlox GNSS模块)

    #include <SoftwareSerial.h>
    
    // 定义串口引脚
    #define RX_PIN 10
    #define TX_PIN 11
    
    SoftwareSerial gpsSerial(RX_PIN, TX_PIN); // RX, TX
    
    void setup() {
      Serial.begin(115200);
      gpsSerial.begin(9600); // UBlox默认波特率9600
    }
    
    void loop() {
      if (gpsSerial.available()) {
        char c = gpsSerial.read();
        Serial.print(c); // 将GNSS数据打印到串口监视器
      }
    }
    

    ⚠️ 注意:如果你使用的是飞控系统(如PX4/ArduPilot),不需要手动处理GNSS数据,只需确保模块正确连接即可。


    五、总结

    | 项目 | 内容 | |------|------| | GNSS模块是否主动发送数据? | ✅ 是,定时发送NMEA数据 | | 谁先发出指令? | ✅ QGC主动请求数据,飞控系统负责转发 | | GNSS模块是否需要被请求? | ❌ 不需要,但需被飞控系统正确读取 | | QGC是否直接与GNSS通信? | ❌ 不直接通信,通过飞控系统 |


    如有具体硬件型号或飞控系统(如PX4、ArduPilot),我可以提供更具体的配置方案。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月11日