在无人机和机器人开发中,PX4飞控与上位机(如Jetson Nano、树莓派4B)的串口通信是实现高级功能(如视觉导航、路径规划)的核心。本文手把手教你如何在Ubuntu 18/20/22系统上建立稳定可靠的连接,全程无坑,小白也能成功!
将USB转TTL模块与PX4飞控的TELEM1(或TELEM2)接口按下表连接:
| USB转TTL | PX4 TELEM1 |
|---|---|
| TX (发送) | RX (接收, pin2) |
| RX (接收) | TX (发送, pin3) |
| GND | GND (pin6) |
| VCC (5V) | 5V (pin1) — 可选,若模块无独立供电可不接 |
接线实物示意图如下(点击放大):
使用QGroundControl连接飞控,进行以下设置:
SER_TEL1_BAUD(若使用TELEM1)并设置为115200或57600(与上位机约定一致)SER_TEL1_ENABLED参数为1(启用)SER_TEL2_BAUD和SER_TEL2_ENABLEDsudo apt updatesudo apt install python3-pip minicom screenpip3 install pyserial 将USB转TTL模块插入上位机的USB口,然后运行:
ls /dev/ttyUSB* 或 ls /dev/ttyACM* 通常会出现/dev/ttyUSB0或/dev/ttyACM0。
避免每次使用sudo,将当前用户加入dialout组:
sudo usermod -a -G dialout $USER 注销并重新登录后生效。
minicom -D /dev/ttyUSB0 -b 115200 如果飞控正在发送数据,你应该能看到乱码或MAVLink数据流。按Ctrl+A然后X退出。
下面是一个简单的读写示例,发送心跳包并接收数据:
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观察输出。
could not open port /dev/ttyUSB0: [Errno 13] Permission denied → 检查是否加入dialout组并重新登录。sudo modprobe ch341)。通过以上步骤,你已经成功实现了PX4飞控与Jetson/树莓派之间的串口通信。无论是进行无人机编队、视觉定位还是ROS2集成,这都是基础中的基础。遇到问题欢迎在评论区交流!
—— 本文关键词:PX4飞控串口通信、Jetson树莓派连接、Ubuntu串口配置、pyserial编程 ——
本文由主机测评网于2026-03-12发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:http://www.vpshk.cn/20260330851.html