# Holybro Pixhawk RPi CM4 底板
Holybro Pixhawk RPi CM4 底板 (打开新窗口) 是一种单板解决方案,将(可交换)Pixhawk 飞行控制器与 Raspberry Pi CM4 配套计算机("RPi")预集成在一起。基板外形小巧,配有开发所需的所有连接。
飞行控制器模块通过以下方式与 RPi CM4 进行内部连接 TELEM2
但也可以使用提供的外部电缆通过以太网连接。
该底板与以下设备的插件兼容 Holybro Pixhawk 5X, Holybro Pixhawk 6X以及任何其他 Pixhawk 控制器,它们都遵循 Pixhawk 自动驾驶仪总线标准 (打开新窗口) 不同供应商的机械兼容性指南。
备注
董事会遵循 Pixhawk 连接器标准 (打开新窗口) 和 Pixhawk 自动驾驶仪总线标准 (打开新窗口) (包括跨供应商机械兼容性指南)。
# 购买
Holybro Pixhawk RPi CM4 底板 (打开新窗口) (www.holybro.com)
底板可与 RPi CM4 和/或飞行控制器一起购买,也可单独购买:
- 由 Holybro 提供的 Raspberry Pi CM4 (CM4008032) 规格如下:
- 内存: 8GB
- eMMC:32GB
- 无线无
- RPi CM4 的建议最低规格为
- 内存: 4GB(或 8GB)
- eMMC:16GB
- 无线:是
- 由 Holybro 提供的 Raspberry Pi CM4 (CM4008032) 规格如下:
# 连接和端口
备注
圣溪文档 (打开新窗口) 有更详细(可能也更及时)的端口和连接信息。
下图显示了底板上的所有连接器和端口。
# RPi CM4 & FC 串行连接
飞行控制器 TELEM2
端口内部连接到 RPi CM4,如图所示:
RPi CM4 | FC Telem2 (FMU) |
---|---|
GPIO14 | TXD |
GPIO15 | RXD |
GPIO16 | CTS |
GPIO17 | RTS |
备注
连接还必须是 在 RPi 和 PX4 中均已配置 除非 以太网 来代替)。
# 安装飞行控制器
插头兼容的飞行控制器,如 Holybro Pixhawk 5X 和 Holybro Pixhawk 6X 只需推入模块插槽即可。
外形尺寸不同的飞行控制器需要额外的接线。
# 安装 RPi CM4 配套软件
本节介绍如何将 Raspberry Pi CM4 安装/连接到底板。
安装 Raspberry Pi CM4 配套电脑:
断开
风扇
接线。卸下底板背面的 4 个螺丝。
卸下底板箱,安装 CM4,并用 4 个螺钉将其固定(如图所示):
重新装上盖子。
# 电源模块接线
PM03D 电源模块随电路板提供。
RPi CM4 和飞行控制器必须单独供电:
- 飞行控制器通过 CLIK-Mate 电缆供电,以
POWER1
或POWER2
港 - RPi CM4 的电源由
USB C
(CM4 Slave)连接。您也可以使用自己的电源为 RPi CM4 底板供电。
下图显示了接线的更多细节。
# 刷新 RPi CM4
本节将介绍如何在 RPi EMCC 上安装您喜欢的 Linux 发行版,例如 Raspberry Pi OS 64bit"。
备注
- 如果使用 PX4,则需要使用 1.13.1 或更新版本的 PX4 才能识别该基板。
- 风扇不会显示 RPi CM4 是否通电/运行。
- 插入 Power1/2 的电源模块不能为 RPi 部分供电。您可以使用从 PM03D 电源模块到 CM4 从 USB-C 端口的附加 USB-C 电缆。
- Micro-HDMI 端口是一个输出端口。
- 没有 Wifi 设备的 RPi CM4 板不会自动连接。在这种情况下,您需要将其插入路由器或将兼容的 Wifi 加密狗插入 CM4 主机端口。
# 闪存 EMMC
将 RPi 映像闪存到 EM多旋翼 上。
切换拨码开关至
RPI
.将电脑连接至 USB-C CM4 从属设备 端口,用于为 RPi 供电和闪存。
获取
usboot
,构建并运行它。sudo apt install libusb-1.0-0-dev git clone --depth=1 https://github.com/raspberrypi/usbboot, cd usbboot make sudo ./rpiboot
现在,您可以使用
rpi-imager
.确保添加 WiFi 和 SSH 设置(隐藏在齿轮/高级符号后面)。sudo apt install rpi-imager rpi-imager
完成后,拔下 USB-C CM4 从属设备(这将卸载卷,并关闭 CM4 的电源)。
切换拨码开关回到
EMMC
.通过为 USB-C CM4 从端口供电,开启 CM4。
要检查它是否启动/工作,您可以这样做
- 检查是否有 HDMI 输出
- 通过 SSH 连接(如果已在 rpi-imager 中设置,且有 WiFi)。
# 配置 PX4 至 CM4 MAVLink 串行连接
备注
如果您使用 以太网 连接 FC 和 RPi,不需要这种设置。
Pixhawk FC 模块是 内部连接至 RPi CM4 使用 TELEM2
(/dev/ttyS4
).FC 和 RPi CM4 都必须配置为通过该端口进行通信。
# FC 串行端口设置
FC 应设置为连接到 TELEM2
默认情况下,该端口是正确的。如果不是,可以使用如图所示的参数配置端口。
要在 FC 上启用此 MAVLink 实例:
通过底板上标有 USB Type C 的端口连接运行 QGroundControl 的计算机
FC
设置参数:
MAV_1_CONFIG
=102
MAV_1_MODE = 2
SER_TEL2_BAUD
=921600
重新启动 FC。
# RPi 串行端口设置
RPi 方面
连接 RPi(使用 WiFi、路由器或 Wifi 密码锁)。
运行以下命令启用 RPi 串行端口
RPi-config
- 转到
3 个接口选项
那么I6 串行端口
.然后选择可通过串行访问登录 shell → 否
串行端口硬件已启用
→是
- 转到
完成并重新启动。(这将增加
enable_uart=1
至/boot/config.txt
并删除console=serial0,115200
从/boot/cmdline.txt
现在,MAVLink 流量应该可以在
/dev/serial0
波特率为 921600。
# 试用 MAVSDK-Python
确保 CM4 已连接到互联网,例如使用 Wifi 或以太网。
安装 MAVSDK Python:
python3 -m pip install mavsdk
更改
system_address="udp://:14540";
至system_address="serial://dev/serial0:921600";
试试这个例子。串行端口的权限应该已经可以通过
拨出
组。
# 以太网连接(可选)
飞行控制器模块 内部连接至 RPi CM4 从 TELEM2
(连载)。
您还可以使用随附的电缆在它们之间建立本地以太网连接。与 USB 或其他串行连接相比,以太网连接提供了快速、可靠和灵活的通信选择。
备注
更多一般信息,请参见 PX4 以太网设置.
# 连接电缆
要在 CM4 和飞行计算机之间建立本地以太网连接,需要使用提供的 8 针转 4 针连接器连接两个以太网端口。
电缆的引脚分配为
CM4 Eth 8 引脚 | FC ETH 4 引脚 |
---|---|
A | B |
B | A |
C | D |
D | C |
- | 不适用 |
- | 不适用 |
- | 不适用 |
- | 不适用 |
# CM4 上的 IP 设置
由于该配置中没有 DHCP 服务器,因此必须手动设置 IP 地址:
首先,通过 SSH 连接 CM4 的 WiFi(或使用 Wifi 加密狗)。插入以太网电缆后,将 eth0
网络接口似乎从 DOWN 切换到了 UP。
您可以使用
ip 地址 show eth0
您也可以尝试手动启用它:
sudo ip link set dev eth0 up
然后,它似乎会自动设置一个链接本地地址,在本例中是这样的:
ip address show eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff inet 169.254.21.183/16 brd 169.254.255.255 scope global noprefixroute eth0 valid_lft forever preferred_lft forever inet6 fe80::yyyyy:yyyy:yyyy:yyyy/64 scope link valid_lft forever preferred_lft forever
这意味着 CM4 的以太网 IP 地址为 169.254.21.183。
# FC 上的 IP 设置
现在连接到 NuttX 外壳(使用控制台或 MAVLink 外壳),并检查链接状态:
ifconfig eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx at DOWN inet addr:0.0.0.0 DRaddr:192.168.0.254 Mask:255.255.255.0
在本例中,一开始是 DOWN。
要将其设置为 UP:
ifup eth0 ifup eth0...OK
现在再次检查配置:
ifconfig eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx at UP inet addr:0.0.0.0 DRaddr:192.168.0.254 Mask:255.255.255.0
不过,它还没有 IP。请设置一个与 RPi CM4 类似的 IP:
ifconfig eth0 169.254.21.184
那就检查一下:
ifconfig eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx at UP inet addr:169.254.21.184 DRaddr:169.254.21.1 Mask:255.255.255.0
现在设备之间应该可以互相 ping 了。
请注意,该配置是短暂的,重启后就会丢失,因此我们需要找到静态配置它的方法。
# Ping 测试
首先是 CM4:
ping 169.254.21.184 PING 169.254.21.184 (169.254.21.184) 56(84) 字节数据。来自 169.254.21.184 的 64 字节:icmp_seq=1 ttl=64 时间=0.188 ms 来自 169.254.21.184 的 64 字节:icmp_seq=2 ttl=64 时间=0.131 ms 来自 169.254.21.184 的 64 字节:icmp_seq=3 ttl=64 时间=0.190 ms 来自 169.254.21.184 的 64 字节:icmp_seq=3 ttl=64 时间=0.190 ms 来自 169.254.21.184 的 64 字节:icmp_seq=3 ttl=64 时间=0.190 ms254.21.184: icmp_seq=4 ttl=64 time=0.112 ms ^C --- 169.254.21.184 ping 统计 --- 4 个数据包传输,4 个数据包接收,0% 数据包丢失,时间 3077ms rtt min/avg/max/mdev = 0.112/0.155/0.190/0.034 ms
然后从 NuttShell 中的飞行控制器:
ping 169.254.21.183 PING 169.254.21.183 56 bytes of data 56 bytes from 169.254.21.183: icmp_seq=0 time=0 ms 56 bytes from 169.254.21.183: icmp_seq=1 time=0 ms 56 bytes from 169.254.21.183: icmp_seq=2 time=0 ms 56 bytes from 169.254.21.183: icmp_seq=3 time=0 ms 56 bytes from 169.254.21.183: icmp_seq=4 time=0 ms 56 bytes from 169.254.21.183: icmp_seq=5 time=0 ms 56 bytes from 169.254.21.183来自 169.254.21.183:icmp_seq=5 时间=0 毫秒 56 个字节 来自 169.254.21.183:icmp_seq=6 时间=0 毫秒 56 个字节 来自 169.254.21.183:icmp_seq=7 时间=0 毫秒 56 个字节 来自 169.254.21.183:icmp_seq=8 时间=0 毫秒 56 个字节 来自 169.254.21.183:icmp_seq=9 时间=0 毫秒 发送 10 个数据包,接收 10 个数据包,0% 数据包丢失,时间 10010 毫秒
# MAVLink/MAVSDK 测试
为此,我们需要将 MAVLink 实例设置为向 CM4 的 IP 地址发送流量:
我们可以进行初步测试:
mavlink start -o 14540 -t 169.254.21.183
这将通过 UDP 向 14540 端口(MAVSDK/MAVROS 端口)发送 MAVLink 流量到该 IP,这意味着 MAVSDK 可以监听任何到达该默认端口的 UDP。
要运行 MAVSDK 示例,请通过 pip 安装 mavsdk,然后从 MAVSDK-Python/examples (打开新窗口).
例如
python3 -m pip install mavsdk wget https://raw.githubusercontent.com/mavlink/MAVSDK-Python/main/examples/tune.py chmod +x tune.py ./tune.py
# 另请参见
- 让 Holybro 的 Pixhawk Raspberry Pi CM4 底板与 PX4 对话 (打开新窗口) (px4.io博客):
- 演示如何通过有线以太网连接 CM4 底板上的 Pixhawk 6X + Raspberry Pi 的教程。