当前位置:首页 > 系统教程 > 正文

PX4飞控与上位机串口通信完全指南 (Jetson/树莓派通用教程 Ubuntu18/20/22)

PX4飞控与上位机串口通信完全指南 (Jetson/树莓派通用教程 Ubuntu18/20/22)

在无人机和机器人开发中,PX4飞控与上位机(如Jetson Nano树莓派4B)的串口通信是实现高级功能(如视觉导航、路径规划)的核心。本文手把手教你如何在Ubuntu 18/20/22系统上建立稳定可靠的连接,全程无坑,小白也能成功!

1. 硬件准备清单

  • PX4飞控(如Pixhawk 4、Pixhawk 6c等)
  • 上位机:Jetson系列(Nano/TX2/Xavier)或树莓派3B/4B
  • USB转TTL串口模块(推荐CP2102或CH340)
  • 杜邦线(母对母)若干
  • 已安装Ubuntu 18.04/20.04/22.04的主机(或直接在Jetson/树莓派上操作)

2. 硬件连接(关键!)

USB转TTL模块PX4飞控的TELEM1(或TELEM2)接口按下表连接:

USB转TTLPX4 TELEM1
TX (发送)RX (接收, pin2)
RX (接收)TX (发送, pin3)
GNDGND (pin6)
VCC (5V)5V (pin1) — 可选,若模块无独立供电可不接

接线实物示意图如下(点击放大):

PX4飞控与上位机串口通信完全指南 (Jetson/树莓派通用教程 Ubuntu18/20/22) PX4飞控串口通信  Jetson树莓派连接 Ubuntu串口配置 pyserial编程 第1张

3. 飞控端配置(QGC)

使用QGroundControl连接飞控,进行以下设置:

  1. 进入参数界面,搜索SER_TEL1_BAUD(若使用TELEM1)并设置为11520057600(与上位机约定一致)
  2. 确保SER_TEL1_ENABLED参数为1(启用)
  3. 若使用TELEM2,对应参数为SER_TEL2_BAUDSER_TEL2_ENABLED
  4. 保存参数并重启飞控。

4. 上位机端(Ubuntu)配置

4.1 安装必要软件

sudo apt updatesudo apt install python3-pip minicom screenpip3 install pyserial

4.2 识别串口设备

将USB转TTL模块插入上位机的USB口,然后运行:

ls /dev/ttyUSB* 或 ls /dev/ttyACM*

通常会出现/dev/ttyUSB0/dev/ttyACM0

4.3 添加用户权限

避免每次使用sudo,将当前用户加入dialout组:

sudo usermod -a -G dialout $USER

注销并重新登录后生效。

4.4 测试通信(使用minicom)

minicom -D /dev/ttyUSB0 -b 115200

如果飞控正在发送数据,你应该能看到乱码或MAVLink数据流。按Ctrl+A然后X退出。

5. Python编程示例(使用pyserial)

下面是一个简单的读写示例,发送心跳包并接收数据:

import serialimport timeser = serial.Serial(    port="/dev/ttyUSB0",    baudrate=115200,    timeout=1)try:    while True:        # 发送任意数据(例如AT指令或MAVLink字节)        ser.write(b"hello PX4")        # 读取返回数据        if ser.in_waiting:            data = ser.readline().decode().strip()            print(f"Received: {data}")        time.sleep(1)except KeyboardInterrupt:    ser.close()    print("串口已关闭")

保存为test_serial.py,运行python3 test_serial.py观察输出。

6. 常见问题排查

  • 权限问题could not open port /dev/ttyUSB0: [Errno 13] Permission denied → 检查是否加入dialout组并重新登录。
  • 无数据/乱码:检查波特率是否一致(飞控和上位机必须相同);接线TX-RX是否交叉;TELEM端口是否已启用。
  • USB转TTL模块不识别:更换USB线或换一个USB口;在Ubuntu下可能需要安装驱动(如CH340:sudo modprobe ch341)。
  • 数据断断续续:检查电源是否足够,或尝试降低波特率到57600。

7. 总结

通过以上步骤,你已经成功实现了PX4飞控Jetson/树莓派之间的串口通信。无论是进行无人机编队、视觉定位还是ROS2集成,这都是基础中的基础。遇到问题欢迎在评论区交流!

—— 本文关键词:PX4飞控串口通信、Jetson树莓派连接、Ubuntu串口配置、pyserial编程 ——