网口配置
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 脚本还可以访问这些数据端口。

配置简介
NET_ENABLE 必须设置为“1”并自动重启,才能查看网络参数:
🌐 以太网 MAC 配置
适用于带有以太网 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 地址
包含智能控制器的 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 |
🛤 子网掩码与网关配置
子网掩码限制直接通信的 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 |
网络端口配置参数
以下参数适用于以太网或 PPP 数据链路。每个网络物理接口提供了四个逻辑端口。以端口 1 为例。
修改以下任何参数后,均需重启设备方可生效。
| 参数名称 | 简洁描述 |
|---|---|
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 服务器端配置二选一)

控制器参数配置
| 📂 参数分类 | 🏷 参数名称 | 💻 客户端设定值 (推荐) | 🖥 服务器端设定值 |
|---|---|---|---|
| 启用以太网 | 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)。

- 客户端模式:由控制器推流给电脑,电脑只要监听本机对应端口;地面站连接时选择UDP(如果需要设置IP地址则设置为127.0.0.1);设置端口号。

- 服务器端模式:由地面站发送连接拉流。地面站连接时选择UDPCl连接,并设置输入控制器IP与端口。控制器的
NET_P1_IPx参数组应设置为0或者控制器IP。


场景二:多以太网设备连接
以下设备为例:
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 协议 |
视频流配置:以太网为多路通信,视频流的信息不经过控制器,将云台相机的IP和端口设置为地面站访问链接与端口,即可显示视频。
场景三:通过WEB下载日志
ArduPilot 的 LUA 脚本绑定允许智能控制器以网络服务器形式运行应用。官方提供了一个网页服务器小程序 net_webserver.lua,运行后可通过浏览器直接访问智能控制器 microSD 卡的内容,实现快速下载飞行日志,并可同时展示飞行器/系统状态数据(如解锁状态、GPS/AHRS 位置等)。
工作原理
- 脚本在智能控制器的网络接口(ETH)上监听端口,默认 8080。
- 默认以 microSD 卡根目录为网站根目录,可直接在浏览器中浏览、下载日志文件。
- 支持在
.shtml文件中嵌入 LUA 表达式生成动态内容,也支持 SD 卡根目录cgi-bin文件夹中的 LUA 脚本(CGI)。
第一步:获取并安装脚本
- 从 ArduPilot 仓库下载
net_webserver.lua:https://github.com/ArduPilot/ardupilot/tree/master/libraries/AP_Scripting/applets/net_webserver.lua - 将脚本上传到 microSD 卡的
/APM/scripts/目录(可通过 QGC 的 Scripting 页面上传,或使用 MAVFTP)。 - 设置
SCR_ENABLE = 1并重启智能控制器。
SCR_ENABLE 启用后需重启才能加载脚本;脚本运行时会注册 WEB_* 系列参数,需重启后这些参数才会出现在参数列表中。
第二步:配置 Web 服务器参数
| 🏷 参数名称 | ⚙ 设定值 | 📝 说明 |
|---|---|---|
WEB_ENABLE |
1 | 启用 Web 服务器 |
WEB_PORT |
8080 | 监听端口,可按需修改 |
WEB_DEBUG |
0 | 详细调试信息开关 |
WEB_BLKSIZE |
- | 网络/文件读写块大小,调大可提升性能但更耗内存 |
WEB_TIMEOUT |
- | 空闲客户端连接超时时间(秒) |
第三步(可选):在 SITL 中测试
未接硬件时,可先在仿真环境验证 Web 服务器功能:
- 启动 SITL,例如
sim_vehicle.py -v ArduCopter。 - 在 SITL 运行目录下创建
scripts文件夹,放入net_webserver.lua。 - 设置
SCR_ENABLE = 1,重启 SITL。 - 设置
SCR_VM_I_COUNT = 1000000(网络服务器计算量较大,需提高脚本指令上限),重启 SITL。 - 用浏览器打开 http://127.0.0.1:8080。
SITL 中智能控制器的网络接口模拟在宿主机本地,因此用 127.0.0.1 访问;且必须输入 http 而非 https,否则会访问失败。
第四步:通过网络连接真实智能控制器
- 将智能控制器 ETH 接口接入局域网(直连电脑或通过以太网交换机)。
- 按上文配置网络参数:
NET_ENABLE = 1并重启;设置NET_IPADDR0~3(如192.168.144.14)、NET_NETMASK = 24及网关,确保电脑与智能控制器处于同一网段。 - 在电脑浏览器中打开 http://<控制器IP>:8080,例如
http://192.168.144.14:8080。
日志下载操作
- 浏览器访问
http://<控制器IP>:8080后,即可看到 microSD 卡根目录的目录列表。 - 进入
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 脚本实现动态响应。
- Web 服务器仅支持 http,不支持 https。
- 修改
WEB_PORT后需重启脚本/智能控制器方可生效。 - Web 服务器会占用网络带宽与智能控制器资源,请合理使用;SD 卡中日志文件过多时,日志列表生成会变慢。