当前位置: 首页 > article >正文

无人机图传模块 wfb-ng openipc-fpv,4G

        openipc 的定位是为各种模块提供底层的驱动和linux最小系统,openipc 是采用buildroot系统编译而成,因此二次开发能力有点麻烦。为啥openipc 会用于无人机图传呢?因为openipc可以将现有的网络摄像头ip-camera模块直接利用起来,从而降低硬件成本,但是记住,openipc 的核心是处理各种厂家的摄像头的最小系统,用于无人机图像传输的应一个重要应用是wfb,wifi-broadcast,此时采用的是wfb-ng,新一代的wifi广播技术。

         如果你想用网络摄像头,淘宝搜索 网络摄像头,选择支持wifi 模块的,但是购买不要选择焊接WiFi模块, 主芯片和sensor 的支持请参考文章wiki,注意留意是否暴漏串口刷机的引脚(RX,TX,GND),上闲鱼搜索创维A6 wifi 网卡,焊接wfi-USB 接口,openipc 官网上刷机FPV固件即可支持。

        对于无人机图传看来说,本文将采用wfb-ng技术,将数据传输出去。openipc 提供了图像的数据,虽然openipc 也有4G的方案,但是受制于主芯片频率和二次开发的方便性,采用了瑞芯微的主芯片,哔哩哔哩上也有采用rv1103-rv1106的方案,但是考虑后期AI加入,因此采用radxa zero 3E 方案。,切记3e 安装官方的debian 11 的系统,其它系统暂不考虑,整体架构如下:

1. wfb-ng 以及8812eu 驱动安装

 1.1 安装 8812EU 驱动

 需要安装dkms, 这是一个驱动包安装软件

sudo apt-get install -y dkms bc rpm libelf-dev

下载8812EU 包 github

sed -i 's/CONFIG_PLATFORM_I386_PC = y/CONFIG_PLATFORM_I386_PC = n/g' Makefile
sed -i 's/CONFIG_PLATFORM_ARM64_RPI = n/CONFIG_PLATFORM_ARM64_RPI = y/g' Makefile
sudo  ./dkms-install.sh

1.2 安装wfb-ng

下载wfb-ng,安装必要的编译包

sudo apt install -y libpcap-dev libsodium-dev libevent-dev debhelper dh-python python3-all python3-pip python3-pyroute2 python3-future python3-twisted python3-msgpack python3-stdeb python3-all-dev python3-setuptools python3-jinja2 python3-serial virtualenv

编译,最重要的是编译过程需要下载大量的额github的内容因此需要翻墙

git设置ssh 代理(非常重要,如果没有代理不建议编译,建议直接下载 我编译的包 deb)

git config --global http.proxy 'http://123.45.67.89:8080'
git config --global https.proxy 'https://123.45.67.89:8080'
编译 make deb

编译后会产生drone.key  gs.key, 没有产生可以运行script/wfb_keygen 生成,将drone.key 和gs.key复制到  /etc/

安装 deb

sudo dpkg -i deb_dist/wfb-ng_24.11.29.69559-1_arm64.deb

wfb-ng是通过python的安装包启动

设置  /etc/wifibroadcast.cfg
sudo tee /etc/wifibroadcast.cfg > /dev/null <<EOF
[common]
wifi_channel = 149     # 149 -- radio channel @5745 MHz, range: 5735–5755 MHz, width 20MHz
wifi_region = 'BO'     # Your country for CRDA (use BO or GY if you want max tx power)
#wifi_power = 3000

[drone_mavlink]
# use autopilot connected to /dev/ttyUSB0 at 115200 baud:
# peer = 'serial:ttyUSB0:115200'

# Connect to autopilot via malink-router or mavlink-proxy:
peer = 'listen://0.0.0.0:14550'   # incoming connection
# peer = 'connect://127.0.0.1:14550'  # outgoing connection

[drone_video]
peer = 'listen://0.0.0.0:5602'  # listen for video stream (gstreamer on drone)

EOF
设置网卡的一些参数,用于后期提升功率
sudo cat > /etc/modprobe.d/wfb.conf <<EOF
# blacklist stock module
blacklist 88XXau
blacklist 8812au
blacklist rtl8812au
blacklist rtl88x2bs
# maximize output power, see note below
options 88XXau_wfb rtw_tx_pwr_idx_override=30
options 8812eu rtw_tx_pwr_by_rate=0 rtw_tx_pwr_lmt_enable=0
EOF
wfb-ng 设置自启动

设置开机自动启动

sudo systemctl enable wifibroadcast.service

sudo systemctl enable wifibroadcast@drone.service

手动启动

sudo systemctl start wifibroadcast@drone.service

wfb-ng 启动流程如下

1. 启动后会去读取环境变量获取wifi设备名称 /etc/default/wifibroadcast

该脚本会调用  wifi-nics 遍历设备8812au/ 8812eu名称并赋值给环境变量WFB_NICS。(wifi-nics安装在/usr/bin/)

2.执行exec  python 调用包 wfb-server, 此时会读取/etc/wifibroadcast.cfg 文件,

该文件会 设置wifi 通道 wifi_channel  wifi_region wifi_power 

sudo iw reg set <wifi_region>
sudo iw <wlan> set monitor otherbss
sudo iw <wlan> set channel <same_channel> <10MHz>
sudo iw dev wlan0 set txpower fixed <mBm>

3,紧接着会根据 /etc/wifibroadcast.cfg 

drone_mavlink drone_video 启动天空端服务

1. video  用于将本地的udp 视频流广播出去

2. mavlink 可以使用串口或者mavlink-router 进行转发

3.还有一个tun 数据通道的用于发送信息

同样的 gs_mavlink 和gs_video 启动地面端服务,数据流方向与天空端相反

本地启动视频流

1.gst 转发rtsp视频流

gst 将openipc 启动的视频流rtsp 转发到本地的udp 5602 端口上

gst-launch-1.0 rtspsrc location=rtsp://root:12345@192.168.1.10/stream=0 ! udpsink port=5602


 


http://www.kler.cn/a/527588.html

相关文章:

  • Java内存模型 volatile 线程安全
  • UE5 GAS RPG Character Classes
  • UE5 特效
  • css-background-color(transparent)
  • 书生大模型实战营5
  • 雅思写作(支持句)
  • 【易理解】04_什么是try-catch-throw语句?
  • socket编程短平快
  • 计算机网络一点事(24)
  • 漏洞扫描工具之xray
  • 【视频+图文讲解】HTML基础2-html骨架与基本语法
  • OpenCV:Harris、Shi-Tomasi角点检测
  • 【小白学AI系列】NLP 核心知识点(六)Softmax函数介绍
  • 如何优化轮式移动机器人的运动稳定性?
  • 仿真设计|基于51单片机的低频信号控制系统仿真
  • PostgreSQL图插件AGE
  • DeepSeek-R1 论文解读 —— 强化学习大语言模型新时代来临?
  • Java 泛型<? extends Object>
  • 小程序-基础加强
  • 最新Java开发进阶!Java进阶面试资料无偿分享_java面试最新资料
  • SpringBoot入门:快速构建第一个Web应用
  • 需求分析应该从哪些方面来着手做?
  • 高低频混合组网系统中基于地理位置信息的信道测量算法matlab仿真
  • 手摸手系列之 DeepSeek-R1 开源大模型私有化部署解决方案
  • Linux_线程同步生产者消费者模型
  • 适合超多氛围灯节点应用的新选择