网口配置
ArduPilot 4.5 及更高版本内置网络接口框架,智能控制器可以接入局域网或广域网,让原本只能走串口的设备改走网线。
两种接入方式
| 接入方式 | 适用控制器 | 说明 |
|---|---|---|
| 原生以太网(ETH) | 7-Nano V2 / 7-Nano、Pixhawk V6X v2 / Pixhawk V6X、X25 EVO、X25 MEGA | 控制器自带以太网 MAC 接口,网线直连即可使用 |
| PPP(点对点协议) | X7+、X7+ Pro、Nora+ | 借助 PPP 至以太网适配器 和自定义固件从串口接入,详见 PPP 配置 |
一句话理解
有 ETH 口的控制器等于自带一块「网卡」:串口设备、地面站、日志下载都能改从网络上走;没有 ETH 口的机型,则用 PPP 把串口「转」成网络。
ArduPilot 网络框架概述
ArduPilot 通过 NET 管理器统一管理网络:底层是 IP 协议引擎,上层是 UDP / TCP 传输。共有 4 个可配置的 IP 端口,每个端口都能独立设为 UDP 或 TCP、客户端或服务器。
串口管理器同样支持网络连接,原有串口协议不用改,可与 Ethernet、PPP 接口同时使用。每个端口在智能控制器眼里就是一条数据流,因此可以:
- 接串口设备:测距仪、云台、串口电子交换器等照常工作,只是链路换成了网线
- 跑 MAVLink:连接另一架飞行器或地面站
- 跑 LUA 服务:脚本可直接访问这些端口,例如用网页服务器快速下载日志、查看车辆状态
对于带网络接口的外设,ArduPilot 的 AP_Periph 固件还支持通过外设的串行或无人机 CAN 接口开发网络外设,把设备数据经网络传给智能控制器。

配置简介
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 服务器端配置二选一)

控制器参数配置
| 📂 参数分类 | 🏷️ 参数名称 | 💻 客户端设定值 (推荐) | 🖥️ 服务器端设定值 |
|---|---|---|---|
| 启用以太网 | 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 以太网交换机
控制器作为客户端、云台相机作为服务端;控制器主动往相机推送数据。

▲ 以太网整机系统连接示例:控制器 ETH 口经 NC-HUB 扩展,连接云台/相机与 H16 图数链路
📷 控制器参数设置
| 🏷️ 参数名称 | ⚙️ 设定值 | 📝 配置说明 |
|---|---|---|
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)。
第一步:获取并安装脚本
- 从 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 并重启智能控制器。
NOTE
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。
NOTE
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 脚本实现动态响应。
WARNING
- Web 服务器仅支持 http,不支持 https。
- 修改
WEB_PORT后需重启脚本/智能控制器方可生效。 - Web 服务器会占用网络带宽与智能控制器资源,请合理使用;SD 卡中日志文件过多时,日志列表生成会变慢。

