使用 Raspberry Pi 制作 MAVLink WiFi 桥接器¶
备注
本文件仍在编制中
概述¶
本页将向您展示如何将 Raspberry Pi (RPi) 设置为 3DR 遥测无线电的网关。这样,您就可以通过 WiFi 将电脑或平板电脑连接到 Raspberry Pi,然后 Raspberry Pi 再通过遥测链路将通信转发给无人机。
要完成本教程,您需要以下物品:
带 SD 卡的 Raspberry Pi
兼容的 Wifi 加密狗(并非所有加密狗都支持 AP 模式)
3DR 遥测无线电
可连接的载体
如果不想重复这里描述的所有配置步骤,也可以直接到页面底部下载 SD 卡镜像,然后按章节中的说明加载。 使用 Raspbian 启动并运行 Raspberry Pi.请使用底部提供的图片,而不是 Raspberri Pi 网站上的图片。
使用 Raspbian 启动并运行 Raspberry Pi¶
首先,我们需要让 Raspberry Pi 启动并运行 Debian。这可以通过从 Raspberry Pi 网站下载 SD 卡映像并将其装入 SD 卡来实现。
前往 Raspberry Pi 下载页面 并下载最新的 raspbian 映像(截至本文撰写之时: 2014-12-24-wheezy-raspbian.zip)
按照操作系统的特定指南准备 SD 卡和下载的映像:
准备好 SD 卡后,将其插入 RPi 并启动它
首次启动 RPi 时,它会加载 Raspberry Pi 配置实用程序,设置如下:
扩展文件系统(这样可以使用 SD 卡上的所有可用空间)
设置时区
确保启动选项设置为启动到控制台
在 "高级选项 "下启用 SSH
完成设置并重新启动
现在 Raspberry Pi 已准备就绪,可以设置 MavProxy 并将其设置为接入点,从而创建本地 WiFi 网络。为了避免继续使用键盘和显示器,使用 SSH 客户端连接 RPi 会比较方便。你可以按照页面上的步骤进行操作 使用 SSH/Telnet 客户端连接 RPi 为此。
将 Raspberry Pi 设置为接入点¶
现在,我们需要设置软件,让 RPi 充当接入点。在下面的步骤中,请确保 RPi 可以访问互联网,这是下载软件包所必需的。最简单的方法是将 RPi 连接到以太网。
安装 hostapd 和 dhcp 服务器¶
现在通过 SSH 连接到 RPi,然后键入以下命令:
苏都 适切-获取 更新
苏都 适切-获取 安装 hostapd isc-dhcp-服务器
这些命令安装将 RPi 设置为接入点所需的软件,并允许它为连接到它的计算机分配 IP 地址(DHCP 服务器)。运行这些命令后,你可能会在输出中看到以下几行:
[FAIL] Starting ISC DHCP server: dhcpd[....] check syslog for diagnostics.... 失败!失败!
别担心,这不会影响功能。
现在我们需要配置这两个软件包,首先要配置 DHCP 服务器
配置 DHCP 服务器¶
下面的步骤将指导你完成 DHCP 服务器的配置。接下来,我们需要编辑文件 /etc/dhcp/dhcpd.conf该文件允许通过 WiFi 连接的计算机自动获取 IP 地址、DNS 和其他信息,以便通过 RPi 进行连接。
苏都 纳米 /等等/dhcp/dhcpd.conf
找到以下几行,在行首加上 # 号,将其注释掉:
选择权 领域-名字 "example.org";;
选择权 领域-名字-服务器 ns1.范例.组织, ns2.范例.组织;
让它们看起来像这样
#option domain-name "example.org";
#option domain-name-servers ns1.example.org, ns2.example.org;
在同一文件中找到以下几行,删除开头的 # 号,取消对 "授权 "行的注释:
# 如果该 DHCP 服务器是本地的官方 DHCP 服务器
# 网络,应取消注释授权指令。
#authoritative;
使线条看起来像这样:
# 如果该 DHCP 服务器是本地的官方 DHCP 服务器
# 网络,应取消注释授权指令。
权威的;
在同一文件的底部,添加以下几行:
子网 192.168.42.0 净掩码 255.255.255.0 {
范围 192.168.42.10 192.168.42.50;
选择权 广播-地址 192.168.42.255;
选择权 路由器 192.168.42.1;
默认-租约-时间 600;
最大-租约-时间 7200;
选择权 领域-名字 "local";;
选择权 领域-名字-服务器 8.8.8.8, 8.8.4.4;
}
这些行配置 RPi 将分配给连接到它的客户端的网络地址 DNS 服务器和网关信息。如果要使用 RPi 通过以太网连接桥接到另一个网络,那么重要的是该地址范围不能与 RPi 通过以太网连接的网络相冲突。换句话说,如果你的本地网络使用的地址范围是 192.168.42.xx,你需要选择一个不同的地址范围。此外,路由器地址 192.168.42.1 也将成为 RPi 的 IP 地址(我们稍后将对此进行设置)。
输入 Control-X 则 Y 则 返回
现在,我们将编辑文件 /etc/default/isc-dhcp-server 以告诉服务器它将在哪个网络接口上活动。键入以下命令
苏都 纳米 /等等/默认/isc-dhcp-服务器
找到写着
INTERFACESv4="";
并将其更改为
INTERFACESv4="wlan0";
输入 Control-X 则 Y 则 返回
将 wlan0 接口设置为静态 IP 地址¶
现在,我们必须设置 RPi 上的无线接口,使其拥有自己的固定 IP 地址,并将其设置为接收传入连接,请键入以下命令:
苏都 如果关闭 wlan0
苏都 纳米 /等等/网络/界面
更改文件,使其与以下内容一致:
载具 褊狭的
如果有 褊狭的 局域网 环回
如果有 eth0 局域网 dhcp
许-热插拔 wlan0
如果有 wlan0 局域网 天电
地址 192.168.42.1
净掩码 255.255.255.0
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp
输入 Control-X 则 Y 则 返回
这将为无线 LAN 接口 (wlan0) 设置一个静态 IP 地址 (192.168.42.1)。不过,该配置在下次重启前不会生效,因此如果要立即分配该地址,需要键入以下内容:
苏都 ifconfig wlan0 192.168.42.1
配置接入点详细信息¶
接下来的步骤将使用名称和密码设置无线网络,并将硬件适配器配置为接入点(AP)模式。需要注意的是,并非所有 WiFi 加密狗都支持 AP 模式,请确保您使用的加密狗支持该模式。 仅使用 Adafruit 出售的 WiFi 加密狗进行过测试。请与 Craig 核实
我们需要更改的配置文件是 /etc/hostapd/hostapd.conf
键入以下命令
苏都 纳米 /等等/hostapd/hostapd.conf
这将创建一个新文件。如果已经有一个以该文件名命名的文件,请将内容改为下面几行,否则请将下面几行添加到文件中:
界面=wlan0
驱动程序=rtl871xdrv
ssid=MavStation
hw_mode=g
海峡=6
macaddr_acl=0
auth_algs=1
忽略广播ssid=0
wpa=2
wpa_passphrase=MavLink_1
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
输入 Control-X 则 Y 则 返回
这就告诉接入点软件使用 wlan0 接口,并建立一个名为 MavStation 用通行短语 MavLink1.该文件的另一个重要部分是这一行:
驱动程序=rtl871xdrv
如果您使用的加密狗与我们使用的不同,您可能需要更改这一行,以使用适合您的加密狗的驱动程序:
驱动程序=nl80211
如果您在 Raspberry Pi 3 上使用内置 WiFi 作为 wlan0,请注释掉驱动程序行:
#driver=rt1871xdrv
确保文件行首和行尾没有多余的空格或制表符,该文件对此非常敏感。
现在,我们必须告诉软件使用我们刚刚创建的配置文件。为此,我们需要修改文件 /etc/default/hostapd
键入以下命令
苏都 纳米 /等等/默认/hostapd
找到包含 #daemon_conf="" 并将其更改为
DAEMON_CONF="/etc/hostapd/hostapd.conf";
输入 Control-X 则 Y 则 返回
配置网络地址转换(NAT)¶
设置 NAT 可让 RPi 的 WiFi 客户端通过 RPi 上的以太网连接传输数据。为此,请键入以下命令:
苏都 纳米 /等等/sysctl.conf
找到线条
# 取消下一行,启用 IPv4 数据包转发功能
#net.ipv4.ip_forward=1
并像这样取消注释:
# 取消下一行,启用 IPv4 数据包转发功能
网.ipv4.ip_forward=1
这一更改在下次启动前不会应用,因此要立即应用,请运行以下命令:
苏都 吁 -c "echo 1 > /proc/sys/net/ipv4/ip_forward";
现在运行以下命令在无线局域网接口和以太网端口之间设置路由表:
苏都 iptables -t 肤色 -A 管道铺设 -o eth0 -j 广场
苏都 iptables -A 前进 -i eth0 -o wlan0 -m 国 --国 相关,成立 -j 接受
苏都 iptables -A 前进 -i wlan0 -o eth0 -j 接受
要检查对表格所做的更改,可以使用以下命令:
苏都 iptables -t 肤色 -S
苏都 iptables -S
为了在启动后还原这些更改,我们需要将配置保存到文件中,以便以后使用该文件还原配置。键入以下内容:
苏都 吁 -c "iptables-save>/etc/iptables.ipv4.nat";
现在我们需要再次更新接口文件,请键入以下命令:
苏都 纳米 /等等/网络/界面
并在文件末尾添加以下一行:
向上 iptables-修复 <; /等等/iptables.ipv4.肤色
现在完整的文件应该是这样的
载具 褊狭的
如果有 褊狭的 局域网 环回
如果有 eth0 局域网 dhcp
许-热插拔 wlan0
如果有 wlan0 局域网 天电
地址 192.168.42.1
净掩码 255.255.255.0
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp
向上 iptables-修复 <; /等等/iptables.ipv4.肤色
输入 Control-X 则 Y 则 返回
现在我们几乎可以运行接入点软件了。不过在此之前,我们需要将其更新到支持网络适配器的版本。
更新 hostapd¶
如果你没有在 Raspberry Pi 3 上使用内置 WiFi,那么通过 apt-get 安装的 hostapd 版本并不完全支持我们正在使用的 WiFi 加密狗,因此我们需要将其更新到更高版本。让我们输入以下命令获取新版本的 hostapd:(仅适用于不使用内置 Wifi 的情况)
wget http://adafruit-下载.s3.亚马逊.网/adafruit_hostapd_14128.压缩
现在,让我们解压文件,将它们与旧版本对调,并修复权限,这样我们就能运行软件了:
解压 adafruit_hostapd_14128.压缩
苏都 mv /我们/网盘/hostapd /我们/网盘/hostapd.原件
苏都 mv hostapd /我们/网盘
苏都 chmod 755 /我们/网盘/hostapd
设置守护进程¶
一切安装就绪后,我们现在需要将系统设置为一个程序,在系统启动时启动。这就是所谓的 守护进程.键入以下命令
苏都 服务 hostapd 启动
苏都 服务 isc-dhcp-服务器 启动
如果一切运行正常,现在应该可以看到以下输出:
pi@MavStation ~ $ sudo service hostapd start [ ok ] 启动高级 IEEE 802.11 管理:hostapd。 pi@MavStation ~ $ sudo service isc-dhcp-server start [ ok ] 启动 ISC DHCP 服务器:dhcpd。
现在,为了设置服务,使其在 RPi 每次启动时都能运行,请键入以下内容:
苏都 更新-rc.d hostapd 以便
苏都 更新-rc.d isc-dhcp-服务器 以便
最后一步是删除 WPASupplicant,使其不再干扰接入点,请键入以下命令:
苏都 mv /我们/份额/数据总线-1/系统-服务/fi.缩影.主机.WPASupplicant.服务 ~/
最后,输入以下信息重启 RPi:
苏都 重新启动
您的系统现已设置为接入点。您现在应该看到一个名为 MavStation 使用密码短语应该可以连接 MavLink_1 (如果您选择保留相同的名称和密码短语)
重要考虑因素!¶
您必须确保 RPi 接收到足够的电源,以便同时处理 WiFi 密码锁和以太网连接,以防您将其用作另一个网络的路由器。我曾使用 2A 电源为 RPi 供电。
如果电力不足,您可能可以连接到它,但当您尝试浏览网页时,它可能会中断连接并杀死网络接口。检查 /var/log/syslog 是否有此类条目:
12 月 27 12:37:17 MavStation 内核: [ 261.984400] 错误::dwc_otg_hcd_urb_enqueue:505: 没有 连接
12 月 27 12:37:18 MavStation dhclient: 接收数据包 失败 关于 eth0: 网络 是 下来
12 月 27 12:37:22 MavStation ntpd[2081]: 删除 界面 #2 eth0, 10.0.1.21#123, 接口统计:接收=11, 发送=16, 丢弃=0, 激活时间=237 秒
此外,如果你能看到无线网络但无法连接,这也可能意味着 WiFi 频道可能与其他网络发生冲突。尝试更改文件上的频道 /etc/hostapd/hostapd.conf.
海峡=x
最后确保你的 WiFi 加密狗支持接入点模式。
安装和配置 MavProxy¶
RPi 现在可以作为接入点工作,我们现在需要配置它以连接无人机。为此,我们将安装 MAVProxy这是一个简约但功能齐全的地面控制站。
提示
在 Linux 上安装 MAVProxy 的官方说明如下 这里.
首先安装其他一些必要的模块。键入以下命令
苏都 适切-获取 更新
苏都 适切-获取 安装 蟒蛇-opencv 蟒蛇-wxgtk 蟒蛇-核心 蟒蛇-设计
然后使用 核心 安装 MavProxy 及其所有依赖项
苏都 核心 安装 MAVProxy
为了允许串口连接 RPi,我们需要禁用串口上的控制台和登录提示。为此,我们必须编辑文件 /etc/inittab.键入以下内容:
苏都 纳米 /等等/inittab
现在转到文件底部,查找以下几行:
#在 Raspberry Pi 的串行线路上生成一个 getty
T0:23:重生:/网盘/田纳西 -L ttyAMA0 115200 vt100
并像这样注释掉这一行:
#在 Raspberry Pi 的串行线路上生成一个 getty
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
输入 Control-X 则 Y 则 返回
现在,我们应该可以测试与无人机的连接了。
将 3DR 遥测无线电连接到 Raspberry Pi¶
提示
此处的说明介绍了如何通过串行端口使用 3DR 无线电连接 RPi。通过 USB 端口连接无线电要简单得多。连接
配置
除了需要指定 /dev/ttyUSB0
(USB 连接),而不是 /dev/ttyAMA0
(UART)。
为了与载具通信,我们将使用 RPi 上的串行连接。串行端口 UART 连接到 P1 接头的引脚 8(TXD)和引脚 10(RXD)。我们还需要通过连接引脚 1(+5V)和引脚 6(GND)为 3DR 无线电供电。
3DR Radio V2 引脚 1(+5V)、2(RXD)、3(TXD)和 6(GND)是需要接线的相应引脚。请记住,Raspberry Pi 上的 TXD 需要连接到 3DR Radio 上的 RXD。
您可以找到有关 Raspberry Pi 引脚输出的更多信息 这里
测试 MavProxy 连接¶
现在我们准备测试通信。请按照 "测试连接" 中的 Raspberry Pi via MAVLink 页面。
配置 MavProxy 始终运行并监听传入连接¶
要使其正常工作,下一步就是设置 MavProxy,使其在 RPi 启动时自动运行。为此,MavProxy 有一个守护进程模式,其工作原理与上述 DHCP 服务器的配置类似。为了进行设置,我们将使用一个脚本并对其进行修改,使其与 RPi 配合使用。
下载 mavgateway 文件 (来自 Github),然后复制到 RPi 上。
现在,我们必须编辑该文件,更改其中的某些内容,使其兼容。让我们编辑文件:
纳米 mavgateway
要设置正确的参数以启动 MavProxy,请查找以下一行:
DAEMON_ARGS="--master=/dev/ttyMFD1,115200 --out=udpin:0.0.0.0:14550 --daemon"
如果您使用串行连接,请将其更改为这样:
DAEMON_ARGS="--master=/dev/ttyAMA0,57600 --out=udpin:0.0.0.0:14550 --daemon"
如果您使用的是 USB 连接,请将其更改为此:
DAEMON_ARGS="--master=/dev/ttyUSB0,57600 --out=udpin:0.0.0.0:14550 --daemon"
接下来,我们需要更改启动 MavProxy 的用户,找到这一行:
start-stop-daemon --start --background --make-pidfile --chuid edison --chdir /tmp --quiet --pidfile $PIDFILE --exec $DAEMON -- \
改为
start-stop-daemon --start --background --make-pidfile --chuid pi --chdir /tmp --quiet --pidfile $PIDFILE --exec $DAEMON -- \
输入 Control-X 则 Y 则 返回
现在,我们需要移动文件并设置正确的权限。键入以下命令:
苏都 mv mavgateway /等等/启动.d/mavgateway CD /等等/启动.d/ 苏都 编译 根基:根基 mavgateway 苏都 chmod 755 mavgateway
现在我们准备设置守护进程,以便 RPi 每次启动时都能运行,请键入此命令:
苏都 更新-rc.d mavgateway 默认
重新启动 RPi:
苏都 重新启动
连接到 MavGateway¶
MavProxy¶
使用 MavProxy(替换 xxx.xxx.xxx.xxx RPi 的 IP 地址):
mavproxy.py -master=udpout:xxx.xxx.xxx.xxx:14550
使用Mission Planner地面站¶
使用最新的测试版(1.3.17.1 build 1.1.5478.13250),现在可以启动 UDP 连接。为此,请选择 UDPCI 从连接类型菜单中选择
然后点击连接,你将看到一个输入 RPi IP 地址的屏幕:
然后在下一屏输入 UDP 端口:
使用 APM Planner - 待定¶
使用平板电脑 - 待定¶
SD 卡图像文件¶
如果您不想配置自己的 RPi,可以从以下链接下载该映像文件,并将其还原到 SD 卡中,以便在自己的 RPi 上使用。 链接.
恢复 此图 您需要一张至少有 16GB 空间的 SD 卡,只需按照 "将数据存储到 SD 卡 "一节中所述的相同步骤操作即可。 "使用 Raspbian 启动并运行 Raspberry_Pi但请使用此镜像而不是操作系统镜像。
参考资料¶
https://learn.adafruit.com/setting-up-a-raspberry-pi-as-a-wifi-access-point/install-software
http://sirlagz.net/2013/02/10/how-to-use-the-raspberry-pi-as-a-wireless-access-pointrouter-part-3b/