3、树莓派串口配置:启用UART接口

好,咱们进入实战环节的第一个硬骨头——把树莓派的串口给"解放"出来。

你可能会问:串口不是现成的吗?为什么还要配置?

嗯,这里有个坑。树莓派默认情况下,硬件串口是被蓝牙占用的。你直接插上串口模块,大概率收不到数据。我当年第一次做飞控地面站时,就被这个坑折腾了一整个下午。

3.1 树莓派的串口资源分配

先搞清楚树莓派上有哪些串口资源。以树莓派3B/3B+/4B为例:

设备名 对应引脚 默认用途 备注
ttyAMA0 GPIO14(TXD)、GPIO15(RXD) 蓝牙 真正的硬件串口,频率精准
ttyS0 GPIO14(TXD)、GPIO15(RXD) 串口控制台 mini UART,频率随核心频率变化
ttyUSB0 USB转串口 外接USB串口模块 需要额外硬件

说白了,树莓派只有一个真正的硬件串口——ttyAMA0。但默认被蓝牙霸占了。我们要做的,就是把蓝牙踢开,让ttyAMA0回到GPIO引脚上。

核心目标:让ttyAMA0成为可用的硬件串口,用于和PX4飞控通信。

3.2 方法一:用raspi-config图形化配置

我个人习惯先用这个方式,因为它直观,不容易出错。

打开终端,输入:

sudo raspi-config

然后按以下步骤操作:

  1. 选择 Interface Options
  2. 选择 Serial Port
  3. 第一个问题:"Would you like a login shell to be accessible over serial?" → 选 No
  4. 第二个问题:"Would you like the serial port hardware to be enabled?" → 选 Yes
  5. 退出raspi-config,选择重启

小提示:第一个问题选No,是为了不让串口被系统控制台占用。否则你发出去的数据会被系统"截胡"。

重启后,用这个命令检查串口状态:

ls -l /dev/ttyAMA0

如果能看到类似 crw-rw---- 1 root dialout 204, 64 的输出,说明串口已经就绪了。

3.3 方法二:手动修改config.txt(推荐)

为什么推荐手动改?因为raspi-config有时候会漏掉一些配置。我在项目中遇到过几次,明明显示配置成功了,但串口就是没反应。后来发现是config.txt里少了一行。

直接编辑配置文件:

sudo nano /boot/config.txt

在文件末尾添加以下内容:

# 启用UART,禁用蓝牙占用
enable_uart=1
dtoverlay=disable-bt

保存退出后,还需要禁用蓝牙服务,彻底释放串口:

sudo systemctl disable bluetooth
sudo systemctl stop bluetooth

然后重启:

sudo reboot

注意:禁用蓝牙后,树莓派的蓝牙功能就失效了。如果你后续要用蓝牙(比如接蓝牙手柄),需要重新启用。但做飞控通信时,蓝牙基本用不上,放心关掉。

3.4 验证串口是否正常工作

重启后,我们来验证一下。先看设备节点:

ls -l /dev/ttyAMA*
ls -l /dev/ttyS*

正常情况下,你应该看到 /dev/ttyAMA0 存在,而 /dev/ttyS0 可能消失或变成软链接。

接下来做个回环测试。把树莓派的GPIO14(TXD)和GPIO15(RXD)用杜邦线短接起来:

# 安装minicom(如果没装的话)
sudo apt install minicom

# 测试串口通信
minicom -D /dev/ttyAMA0 -b 115200

在minicom里随便敲几个字符,如果能显示出来,说明串口收发正常。

我的经验:回环测试是最快验证串口硬件是否正常的方法。如果回环都不通,先检查接线,再检查配置。别急着怀疑代码。

3.5 常见问题与排查

我整理了几个你可能会遇到的坑:

  • 找不到ttyAMA0:检查config.txt里有没有拼写错误。我曾经把"dtoverlay"写成了"dt-overlay",结果折腾了半天。
  • 串口有数据但乱码:波特率不匹配。PX4默认是57600或115200,确认两边设置一致。
  • 权限不足:把当前用户加入dialout组:sudo usermod -a -G dialout $USER,然后注销重新登录。
  • 蓝牙还在占用:执行 sudo systemctl mask bluetooth 彻底屏蔽蓝牙服务。

3.6 本章知识体系

下面这张图帮你理清串口配置的完整流程:

树莓派串口配置流程 步骤1:了解串口资源 ttyAMA0 vs ttyS0 步骤2:选择配置方式 raspi-config 或 config.txt 步骤3:禁用蓝牙 释放ttyAMA0 方法A:raspi-config 图形化,适合新手 方法B:手动改config.txt 更可靠,推荐 步骤4:重启并验证 ls -l /dev/ttyAMA0 步骤5:回环测试 minicom -D /dev/ttyAMA0 ✅ 串口就绪,可以连接PX4飞控

这张图把整个流程串起来了。你跟着走一遍,基本不会出问题。

3.7 小结

配置串口这件事,说白了就是三步:启用硬件串口、禁用蓝牙占用、验证通信正常。别被那些配置文件吓到,其实核心就几行代码。

我个人建议你直接用方法二(手动改config.txt),因为raspi-config有时候会"偷懒",漏掉一些关键配置。改完文件、重启、回环测试,一套下来也就五分钟。

串口配置好了,下一步就是让树莓派和PX4飞控"对上话"。嗯,这部分我们后面会详细讲。


公众号:蓝海资料掘金营,微信deep3321