# Holybro Pixhawk RPi CM4 底板

Holybro Pixhawk RPi CM4 底板 (打开新窗口) 是一种单板解决方案,将(可交换)Pixhawk 飞行控制器与 Raspberry Pi CM4 配套计算机("RPi")预集成在一起。基板外形小巧,配有开发所需的所有连接。

配备 Pixhawk 的 RPi CM4

飞行控制器模块通过以下方式与 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
      • 无线:是

# 连接和端口

备注

圣溪文档 (打开新窗口) 有更详细(可能也更及时)的端口和连接信息。

下图显示了底板上的所有连接器和端口。

示意图

# RPi CM4 & FC 串行连接

飞行控制器 TELEM2 端口内部连接到 RPi CM4,如图所示:

RPi CM4 FC Telem2 (FMU)
GPIO14 TXD
GPIO15 RXD
GPIO16 CTS
GPIO17 RTS

备注

连接还必须是 在 RPi 和 PX4 中均已配置 除非 以太网 来代替)。

# 安装飞行控制器

插头兼容的飞行控制器,如 Holybro Pixhawk 5XHolybro Pixhawk 6X 只需推入模块插槽即可。

外形尺寸不同的飞行控制器需要额外的接线。

# 安装 RPi CM4 配套软件

本节介绍如何将 Raspberry Pi CM4 安装/连接到底板。

图片显示单独的底板、底板盖、RPi、飞行控制器和螺钉

安装 Raspberry Pi CM4 配套电脑:

  1. 断开 风扇 接线。

    HB_Pixhawk_CM4_Fan

  2. 卸下底板背面的 4 个螺丝。

    电路板底部,显示固定盖板的四角螺钉

  3. 卸下底板箱,安装 CM4,并用 4 个螺钉将其固定(如图所示):

    HB_Pixhawk_CM4_Screws

  4. 重新装上盖子。

# 电源模块接线

PM03D 电源模块随电路板提供。

RPi CM4 和飞行控制器必须单独供电:

  • 飞行控制器通过 CLIK-Mate 电缆供电,以 POWER1POWER2
  • RPi CM4 的电源由 USB C (CM4 Slave)连接。您也可以使用自己的电源为 RPi CM4 底板供电。

下图显示了接线的更多细节。

显示从 PM03D 电源模块写入底板的图片

# 刷新 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多旋翼 上。

  1. 切换拨码开关至 RPI.

  2. 将电脑连接至 USB-C CM4 从属设备 端口,用于为 RPi 供电和闪存。

  3. 获取 usboot,构建并运行它。

    sudo apt install libusb-1.0-0-dev git clone --depth=1 https://github.com/raspberrypi/usbboot, cd usbboot make sudo ./rpiboot
    
  4. 现在,您可以使用 rpi-imager.确保添加 WiFi 和 SSH 设置(隐藏在齿轮/高级符号后面)。

    sudo apt install rpi-imager rpi-imager
    
  5. 完成后,拔下 USB-C CM4 从属设备(这将卸载卷,并关闭 CM4 的电源)。

  6. 切换拨码开关回到 EMMC.

  7. 通过为 USB-C CM4 从端口供电,开启 CM4。

  8. 要检查它是否启动/工作,您可以这样做

    • 检查是否有 HDMI 输出
    • 通过 SSH 连接(如果已在 rpi-imager 中设置,且有 WiFi)。

备注

如果您使用 以太网 连接 FC 和 RPi,不需要这种设置。

Pixhawk FC 模块是 内部连接至 RPi CM4 使用 TELEM2 (/dev/ttyS4).FC 和 RPi CM4 都必须配置为通过该端口进行通信。

# FC 串行端口设置

FC 应设置为连接到 TELEM2 默认情况下,该端口是正确的。如果不是,可以使用如图所示的参数配置端口。

要在 FC 上启用此 MAVLink 实例:

  1. 通过底板上标有 USB Type C 的端口连接运行 QGroundControl 的计算机 FC

    显示 FC USB-C 连接器的底板图像

  2. 设置参数:

    • MAV_1_CONFIG = 102
    • MAV_1_MODE = 2
    • SER_TEL2_BAUD = 921600
  3. 重新启动 FC。

# RPi 串行端口设置

RPi 方面

  1. 连接 RPi(使用 WiFi、路由器或 Wifi 密码锁)。

  2. 运行以下命令启用 RPi 串行端口 RPi-config

    • 转到 3 个接口选项那么 I6 串行端口.然后选择
      • 可通过串行访问登录 shell → 否
      • 串行端口硬件已启用
  3. 完成并重新启动。(这将增加 enable_uart=1/boot/config.txt并删除 console=serial0,115200/boot/cmdline.txt

  4. 现在,MAVLink 流量应该可以在 /dev/serial0 波特率为 921600。

# 试用 MAVSDK-Python

  1. 确保 CM4 已连接到互联网,例如使用 Wifi 或以太网。

  2. 安装 MAVSDK Python:

    python3 -m pip install mavsdk
    
  3. MAVSDK-Python 示例 (打开新窗口).

  4. 更改 system_address="udp://:14540";system_address="serial://dev/serial0:921600";

  5. 试试这个例子。串行端口的权限应该已经可以通过 拨出 组。

# 以太网连接(可选)

飞行控制器模块 内部连接至 RPi CM4TELEM2 (连载)。

您还可以使用随附的电缆在它们之间建立本地以太网连接。与 USB 或其他串行连接相比,以太网连接提供了快速、可靠和灵活的通信选择。

备注

更多一般信息,请参见 PX4 以太网设置.

# 连接电缆

要在 CM4 和飞行计算机之间建立本地以太网连接,需要使用提供的 8 针转 4 针连接器连接两个以太网端口。

HB_Pixhawk_CM4_Ethernet_Cable

电缆的引脚分配为

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 实例设置为向 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

# 另请参见