Skip to content

网口配置

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_MACADDR0MAC 地址第 1 字节基于 CPU ID 自动生成
NET_MACADDR1MAC 地址第 2 字节基于 CPU ID 自动生成
NET_MACADDR2MAC 地址第 3 字节基于 CPU ID 自动生成
NET_MACADDR3MAC 地址第 4 字节基于 CPU ID 自动生成
NET_MACADDR4MAC 地址第 5 字节基于 CPU ID 自动生成
NET_MACADDR5MAC 地址第 6 字节基于 CPU ID 自动生成

📡 智能控制器 IP 地址

NOTE

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

🏷️ 参数名称📝 描述⚙️ 默认值💡 示例
NET_IPADDR0IP 地址第 1 字节192192
NET_IPADDR1IP 地址第 2 字节168168
NET_IPADDR2IP 地址第 3 字节144144
NET_IPADDR3IP 地址第 4 字节1414

🛤️ 子网掩码与网关配置

NOTE

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

🏷️ 参数名称📝 描述⚙️ 默认值 / 示例
NET_NETMASK子网掩码中连续置为 1 的位数(如 24 代表 255.255.255.024
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_ENABLE11
禁用 DHCPNET_DHCP00
网络角色NET_P1_TYPE12
网关配置NET_GWADDR0192192
网关配置NET_GWADDR1168168
网关配置NET_GWADDR2144144
网关配置NET_GWADDR311
控制器 IPNET_IPADDR0192192
控制器 IPNET_IPADDR1168168
控制器 IPNET_IPADDR2144144
控制器 IPNET_IPADDR31414
目标 IPNET_P1_IP01920
目标 IPNET_P1_IP11680
目标 IPNET_P1_IP21440
目标 IPNET_P1_IP3150
通信端口NET_P1_PORT1455014550
通信协议NET_P1_PROTOCOL22

电脑IP配置

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

eth-apm-pc

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

eth-udpcli

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

eth-apm-pc

eth-apm-pc

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

以下设备为例:

  • CUAV Pixhawk V6X

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

  • H16遥测系统

  • BotBlox ArduPilot 以太网交换机

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

📷 控制器参数设置

🏷️ 参数名称⚙️ 设定值📝 配置说明
NET_ENABLE1启用以太网功能
NET_DHCP0如无DHCP则关闭
NET_IPADDR0192控制器 IP 地址第 1 字节
NET_IPADDR1168控制器 IP 地址第 2 字节
NET_IPADDR2144控制器 IP 地址第 3 字节
NET_IPADDR326网络中唯一的值,遥控器占用10/11
NET_NETMASK24子网掩码(对应 255.255.255.0)
NET_GWADDR0192网关 IP 地址第 1 字节
NET_GWADDR1168网关 IP 地址第 2 字节
NET_GWADDR2144网关 IP 地址第 3 字节
NET_GWADDR31网关 IP 地址第 4 字节

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

🏷️ 参数名称⚙️ 设定值📝 配置说明
CAM1_TYPE4允许通过摄像头控制快门等功能
MNT1_TYPE8选择 SIYI 挂载类型
MNT1_YAW_MAX135云台偏航角最大极限
MNT1_YAW_MIN-135云台偏航角最小极限
NET_P1_TYPE1网络端口 1 类型:UDP 客户端
NET_P1_IP0192服务端(云台) IP 地址第 1 字节
NET_P1_IP1168服务端(云台) IP 地址第 2 字节
NET_P1_IP2144服务端(云台) IP 地址第 3 字节
NET_P1_IP325服务端(云台) IP 地址第 4 字节
NET_P1_PORT37260云台监听指令的端口号
NET_P1_PROTOCOL8云台串口协议

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

🏷️ 参数名称⚙️ 设定值📝 配置说明
NET_P2_TYPE1网络端口 2 类型:UDP 客户端
NET_P2_IP0192服务端(地面站) IP 地址第 1 字节
NET_P2_IP1168服务端(地面站) IP 地址第 2 字节
NET_P2_IP2144服务端(地面站) IP 地址第 3 字节
NET_P2_IP311服务端(地面站) IP 地址第 4 字节
NET_P2_PORT14550遥测通信端口号
NET_P2_PROTOCOL2MAVLink2 协议

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_ENABLE1启用 Web 服务器
WEB_PORT8080监听端口,可按需修改
WEB_DEBUG0详细调试信息开关
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 显示智能控制器状态:

html
<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 卡中日志文件过多时,日志列表生成会变慢。

文档反馈:hongle@cuav.net