CUAV 智能控制器文档 / ArduPilot 配置指南 / 网口配置

网口配置

ArduPilot 4.5(及更高版本)提供了一个网络接口框架,允许局域网和广域网连接。 以下CUAV智能控制器提供了以太网MAC接口(标识为ETH)

  • 7-Nano V2 /7-Nano
  • Pixhawk V6X v2 /Pixhawk V6X
  • X25 EVO
  • X25 MEGA

以下智能控制器可以通过使用 PPP(点对点协议)、 PPP 至以太网适配器 和自定义固件版本通过串行端口连接到以太网。有关更多详细信息,请参阅 PPP 配置

  • X7+
  • X7+ Pro
  • Nora+

目前,ArduPilot 中常规串行管理器的接口不仅允许串行协议通过普通 UART 连接连接到智能控制器,还可以通过网络连接。这些接口可以与 Ethernet 或 PPP 接口一起使用。 此外,LUA 脚本绑定允许智能控制器通过 LUA 脚本运行网络服务器类应用程序。一个网页服务器 LUA 示例作为小程序提供,允许更快的日志下载以及展示车辆/系统状态数据。

对于带网络接口的外设,ArduPilot AP_Periph 固件允许通过外设的串行或无人机 CAN 接口轻松开发网络外设设备,并便于设置通过网络将这些设备数据传递给智能控制器。

ArduPilot 网络框架概述

ArduPilot 提供 NET 管理器功能,提供 IP 协议引擎以及 UDP 和 TCP 传输层引擎。共有四个可配置的 IP 端口,每个端口可以是 UDP 或 TCP,客户端或服务器端口。智能控制器可以将这些端口的数据流当作以下数据流使用:

  • ArduPilot 支持的串行设备(即测距仪、云台、串口电子交换器等)
  • 通过MAVLink 连接另一辆车或 GCS

此外,运行在智能控制器上的 LUA 脚本还可以访问这些数据端口。

apm-eth

配置简介

NET_ENABLE 必须设置为“1”并自动重启,才能查看网络参数:

🌐 以太网 MAC 配置

📌
NOTE

适用于带有以太网 MAC 的智能控制器。这是全局 6 字节的 MAC 地址,默认由 CPU 唯一 ID 自动生成,也可手动修改。

🏷 参数名称 📝 描述 ⚙ 默认值
NET_MACADDR0 MAC 地址第 1 字节 基于 CPU ID 自动生成
NET_MACADDR1 MAC 地址第 2 字节 基于 CPU ID 自动生成
NET_MACADDR2 MAC 地址第 3 字节 基于 CPU ID 自动生成
NET_MACADDR3 MAC 地址第 4 字节 基于 CPU ID 自动生成
NET_MACADDR4 MAC 地址第 5 字节 基于 CPU ID 自动生成
NET_MACADDR5 MAC 地址第 6 字节 基于 CPU ID 自动生成

📡 智能控制器 IP 地址

📌
NOTE

包含智能控制器的 4 字节 IP 地址。若网络有 DHCP 服务器,可通过 NET_DHCP 动态分配,否则使用以下手动设置。

🏷 参数名称 📝 描述 ⚙ 默认值 💡 示例
NET_IPADDR0 IP 地址第 1 字节 192 192
NET_IPADDR1 IP 地址第 2 字节 168 168
NET_IPADDR2 IP 地址第 3 字节 144 144
NET_IPADDR3 IP 地址第 4 字节 14 14

🛤 子网掩码与网关配置

📌
NOTE

子网掩码限制直接通信的 IP 范围;网关用于与本地子网之外的 IP 地址进行路由通信。

🏷 参数名称 📝 描述 ⚙ 默认值 / 示例
NET_NETMASK 子网掩码中连续置为 1 的位数(如 24 代表 255.255.255.0 24
NET_GWADDR0 网关 IP 地址第 1 字节 192
NET_GWADDR1 网关 IP 地址第 2 字节 168
NET_GWADDR2 网关 IP 地址第 3 字节 144
NET_GWADDR3 网关 IP 地址第 4 字节 1

网络端口配置参数

📌
NOTE

以下参数适用于以太网或 PPP 数据链路。每个网络物理接口提供了四个逻辑端口。以端口 1 为例。

WARNING

修改以下任何参数后,均需重启设备方可生效。

参数名称 简洁描述
NET_P1_TYPE 端口类型0:禁用, 1:UDP客户端, 2:UDP服务器, 3:TCP客户端, 4:TCP服务器。
NET_P1_IP0 服务端IP 第 1 字节。作为客户端必填,服务器可设为 0.0.0.0
NET_P1_IP1 服务端IP 第 2 字节。作为客户端必填,服务器可设为 0.0.0.0
NET_P1_IP2 服务端IP 第 3 字节。作为客户端必填,服务器可设为 0.0.0.0
NET_P1_IP3 服务端IP 第 4 字节。作为客户端必填,服务器可设为 0.0.0.0
NET_P1_PORT 通信端口号。设置 TCP 或 UDP 端口。
NET_P1_PROTOCOL 通信协议。将端口注册至串口管理器,交由 ArduPilot 按指定协议处理数据。

特殊 IP 寻址规则

  • UDP 广播:IP 设为 255.255.255.255 时触发。
  • UDP 组播:IP 设为组播地址范围时触发。

下面章节根据应用场景简介其配置过程。

服务器还是客户端?

在智能控制器的通信架构中,设备的角色取决于其数据交互方式:

  • 指令响应型设备(如电调、云台):通常作为服务器,需保持监听状态,等待并执行控制器下发的指令。
  • 数据上报型设备(如空速传感器):通常作为客户端,负责产生连续数据流,并主动向控制器推送数据,无需等待轮询。

以太网应用场景

场景一:单设备连接(地面站)

🌐通过以太网连接至地面站(客户端 vs 服务器端配置二选一)

apm-eth

控制器参数配置

📂 参数分类 🏷 参数名称 💻 客户端设定值 (推荐) 🖥 服务器端设定值
启用以太网 NET_ENABLE 1 1
禁用 DHCP NET_DHCP 0 0
网络角色 NET_P1_TYPE 1 2
网关配置 NET_GWADDR0 192 192
网关配置 NET_GWADDR1 168 168
网关配置 NET_GWADDR2 144 144
网关配置 NET_GWADDR3 1 1
控制器 IP NET_IPADDR0 192 192
控制器 IP NET_IPADDR1 168 168
控制器 IP NET_IPADDR2 144 144
控制器 IP NET_IPADDR3 14 14
目标 IP NET_P1_IP0 192 0
目标 IP NET_P1_IP1 168 0
目标 IP NET_P1_IP2 144 0
目标 IP NET_P1_IP3 15 0
通信端口 NET_P1_PORT 14550 14550
通信协议 NET_P1_PROTOCOL 2 2

电脑IP配置

需确保网关、电脑等局域网设备处于同一网段中,才可进行通信。(如 192.168.144.15)。

eth-apm-pc
eth-apm-pc
  • 客户端模式:由控制器推流给电脑,电脑只要监听本机对应端口;地面站连接时选择UDP(如果需要设置IP地址则设置为127.0.0.1);设置端口号。
eth-udpcli
eth-udpcli
  • 服务器端模式:由地面站发送连接拉流。地面站连接时选择UDPCl连接,并设置输入控制器IP与端口。控制器的NET_P1_IPx参数组应设置为0或者控制器IP。
eth-apm-pc
eth-apm-pc
eth-apm-pc
eth-apm-pc

场景二:多以太网设备连接

以下设备为例:

  • CUAV Pixhawk V6X

  • SIYI A8 迷你云台/高清相机

  • H16遥测系统

  • BotBlox ArduPilot 以太网交换机

控制器作为客户端、云台相机作为服务端;控制器主动往相机推送数据。

📷 控制器参数设置

🏷 参数名称 ⚙ 设定值 📝 配置说明
NET_ENABLE 1 启用以太网功能
NET_DHCP 0 如无DHCP则关闭
NET_IPADDR0 192 控制器 IP 地址第 1 字节
NET_IPADDR1 168 控制器 IP 地址第 2 字节
NET_IPADDR2 144 控制器 IP 地址第 3 字节
NET_IPADDR3 26 网络中唯一的值,遥控器占用10/11
NET_NETMASK 24 子网掩码(对应 255.255.255.0)
NET_GWADDR0 192 网关 IP 地址第 1 字节
NET_GWADDR1 168 网关 IP 地址第 2 字节
NET_GWADDR2 144 网关 IP 地址第 3 字节
NET_GWADDR3 1 网关 IP 地址第 4 字节

配置 ArduPilot 识别云台,并通过以太网建立虚拟串口发送控制指令。

🏷 参数名称 ⚙ 设定值 📝 配置说明
CAM1_TYPE 4 允许通过摄像头控制快门等功能
MNT1_TYPE 8 选择 SIYI 挂载类型
MNT1_YAW_MAX 135 云台偏航角最大极限
MNT1_YAW_MIN -135 云台偏航角最小极限
NET_P1_TYPE 1 网络端口 1 类型:UDP 客户端
NET_P1_IP0 192 服务端(云台) IP 地址第 1 字节
NET_P1_IP1 168 服务端(云台) IP 地址第 2 字节
NET_P1_IP2 144 服务端(云台) IP 地址第 3 字节
NET_P1_IP3 25 服务端(云台) IP 地址第 4 字节
NET_P1_PORT 37260 云台监听指令的端口号
NET_P1_PROTOCOL 8 云台串口协议

建立控制器与地面站空中单元之间的 MAVLink 通信路径。

🏷 参数名称 ⚙ 设定值 📝 配置说明
NET_P2_TYPE 1 网络端口 2 类型:UDP 客户端
NET_P2_IP0 192 服务端(地面站) IP 地址第 1 字节
NET_P2_IP1 168 服务端(地面站) IP 地址第 2 字节
NET_P2_IP2 144 服务端(地面站) IP 地址第 3 字节
NET_P2_IP3 11 服务端(地面站) IP 地址第 4 字节
NET_P2_PORT 14550 遥测通信端口号
NET_P2_PROTOCOL 2 MAVLink2 协议

📌
NOTE

视频流配置:以太网为多路通信,视频流的信息不经过控制器,将云台相机的IP和端口设置为地面站访问链接与端口,即可显示视频。

场景三:通过WEB下载日志

ArduPilot 的 LUA 脚本绑定允许智能控制器以网络服务器形式运行应用。官方提供了一个网页服务器小程序 net_webserver.lua,运行后可通过浏览器直接访问智能控制器 microSD 卡的内容,实现快速下载飞行日志,并可同时展示飞行器/系统状态数据(如解锁状态、GPS/AHRS 位置等)。

工作原理

  • 脚本在智能控制器的网络接口(ETH)上监听端口,默认 8080
  • 默认以 microSD 卡根目录为网站根目录,可直接在浏览器中浏览、下载日志文件。
  • 支持在 .shtml 文件中嵌入 LUA 表达式生成动态内容,也支持 SD 卡根目录 cgi-bin 文件夹中的 LUA 脚本(CGI)。

第一步:获取并安装脚本

  1. 从 ArduPilot 仓库下载 net_webserver.luahttps://github.com/ArduPilot/ardupilot/tree/master/libraries/AP_Scripting/applets/net_webserver.lua
  2. 将脚本上传到 microSD 卡的 /APM/scripts/ 目录(可通过 QGC 的 Scripting 页面上传,或使用 MAVFTP)。
  3. 设置 SCR_ENABLE = 1重启智能控制器
📌
NOTE

SCR_ENABLE 启用后需重启才能加载脚本;脚本运行时会注册 WEB_* 系列参数,需重启后这些参数才会出现在参数列表中。

第二步:配置 Web 服务器参数

🏷 参数名称 ⚙ 设定值 📝 说明
WEB_ENABLE 1 启用 Web 服务器
WEB_PORT 8080 监听端口,可按需修改
WEB_DEBUG 0 详细调试信息开关
WEB_BLKSIZE - 网络/文件读写块大小,调大可提升性能但更耗内存
WEB_TIMEOUT - 空闲客户端连接超时时间(秒)

第三步(可选):在 SITL 中测试

未接硬件时,可先在仿真环境验证 Web 服务器功能:

  1. 启动 SITL,例如 sim_vehicle.py -v ArduCopter
  2. 在 SITL 运行目录下创建 scripts 文件夹,放入 net_webserver.lua
  3. 设置 SCR_ENABLE = 1,重启 SITL。
  4. 设置 SCR_VM_I_COUNT = 1000000(网络服务器计算量较大,需提高脚本指令上限),重启 SITL。
  5. 用浏览器打开 http://127.0.0.1:8080
📌
NOTE

SITL 中智能控制器的网络接口模拟在宿主机本地,因此用 127.0.0.1 访问;且必须输入 http 而非 https,否则会访问失败。

第四步:通过网络连接真实智能控制器

  1. 将智能控制器 ETH 接口接入局域网(直连电脑或通过以太网交换机)。
  2. 按上文配置网络参数:NET_ENABLE = 1 并重启;设置 NET_IPADDR0~3(如 192.168.144.14)、NET_NETMASK = 24 及网关,确保电脑与智能控制器处于同一网段。
  3. 在电脑浏览器中打开 http://<控制器IP>:8080,例如 http://192.168.144.14:8080

日志下载操作

  1. 浏览器访问 http://<控制器IP>:8080 后,即可看到 microSD 卡根目录的目录列表。
  2. 进入 APM/logs 目录,可看到各次飞行的 .bin 日志文件,点击即可直接下载,速度远快于数传链路。

自定义动态页面(以下为示例)

在 SD 卡根目录放置 index.shtml,即可用内嵌 LUA 显示智能控制器状态:

<h1>智能控制器状态</h1>
<p>解锁状态:<?lstr vehicle:get_armed() ?></p>
<p>纬度(度):<?lstr ahrs:get_location():lat()/1e7 ?></p>
<p>经度(度):<?lstr ahrs:get_location():lng()/1e7 ?></p>
  • 多行逻辑可用 <?lua ... return "字符串" ?> 形式嵌入。
  • 也可在 SD 卡根目录创建 cgi-bin 文件夹,放置以 .lua 结尾的 CGI 脚本实现动态响应。
WARNING
  1. Web 服务器仅支持 http,不支持 https。
  2. 修改 WEB_PORT 后需重启脚本/智能控制器方可生效。
  3. Web 服务器会占用网络带宽与智能控制器资源,请合理使用;SD 卡中日志文件过多时,日志列表生成会变慢。
preview