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
然后按以下步骤操作:
- 选择 Interface Options
- 选择 Serial Port
- 第一个问题:"Would you like a login shell to be accessible over serial?" → 选 No
- 第二个问题:"Would you like the serial port hardware to be enabled?" → 选 Yes
- 退出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 本章知识体系
下面这张图帮你理清串口配置的完整流程:
这张图把整个流程串起来了。你跟着走一遍,基本不会出问题。
3.7 小结
配置串口这件事,说白了就是三步:启用硬件串口、禁用蓝牙占用、验证通信正常。别被那些配置文件吓到,其实核心就几行代码。
我个人建议你直接用方法二(手动改config.txt),因为raspi-config有时候会"偷懒",漏掉一些关键配置。改完文件、重启、回环测试,一套下来也就五分钟。
串口配置好了,下一步就是让树莓派和PX4飞控"对上话"。嗯,这部分我们后面会详细讲。
公众号:蓝海资料掘金营,微信deep3321