PX4使用WIFI模块

2023-05-16

PX4支持WIFI模块作为数传工具,官网上也提供了教程,但是不注意细节也很容易失败。以下是我的经验以及教训。

配置环境

飞控:pixhawk v2,烧录PX4 v1.8.2的固件

地面站:QGC 3.5.2

wifi模块:市面上最常见的8针ESP8266模块

操作系统:Win 10

参考资料

[1] https://docs.px4.io/master/en/telemetry/esp8266_wifi_module.html

[2] http://ardupilot.org/copter/docs/common-esp8266-telemetry.html

[3] 工具下载

wifi模块固件烧录

如官网所示,可以使用python烧录固件也可以使用第三方工具烧录固件,PX4的v 1.8.2使用的是mavlink2,因此烧录firmware-1.2.2固件。烧录之前需要把GPIO0接地。我是这样烧录的,使用网上最常见的转串口的座,下面把杜邦线公母头分别焊接在GND和GPIO0的排针上,上电前需要短接,正常工作不短接。稍后我会把全部资料和工具上传。

烧录界面如下图所示,选择正确的串口,正确的固件,配置合适的波特率,之后点击flash。

官方固件和安可信固件的区别:

1、官方的固件在烧录之后会自动配置串口为透传模式,如果需要修改wifi的工作方式或者是波特率,首先电脑连接PixRacer热点,密码为pixracer,浏览器中输入192.168.4.1,点击setup即可配置,如下图所示

2、对于安可信的固件则是需要用户通过AT指令配置wifi模块的工作方式,再设置串口成为透传模式

 

硬件连接

要想成功首先保证硬件连接,在PX4固件中,wifi模块接入在telem2端口,telem2端口的闲分别为vcc, tx(接wifi模块的rx), rx(接wifi模块的tx), -, -, gnd。如下图所示,注意截图的文档来源于APM,烧录的是APM固件,它接入的是telem1。烧录PX4固件的需要接入telem2,同时配置SYS_COMPANION为ESP模式,最后重启飞控

结果测试

连接好之后,飞控的usb不要连接到电脑上,不然地面站会默认链接usb串口。电脑连接PixRacer的wifi,打开地面站即可,QGC会自动使用UDP连接飞控,界面上会出现wifi桥接的界面,如下图所示。

经验教训

之前一直不成功的主要问题还是在于硬件,我使用了这个模块,它有多个串口,USB接了一个串口,排针也引出来了几个串口。现在还没有搞清楚USB的那个串口是对应的串口几,烧录官方的固件之后是需要把数传2的串口接到USB的那个串口上的。

问题排除方法:上电后收到对应的wifi热点,可以访问192.168.4.1,;飞控板的确连接了telem2,参数也配置正确;硬件连接也是对的,那么大概率的问题就出在wifi模式了,于是换了最常见的8针wifi模块就解决了。而这个大模块不行的原因我猜是usb串口的另外一边接了232转换芯片,直接接TX和RX管脚,电平可能会被232芯片拉底??

 

其他尝试

把ESP8266配置成AP模式的缺点是地面站只可以连接一架飞机,如果地面站需要连接多架飞机,需要把ESP设置成STA模式,并开启电脑的热点,电脑热点的开启网上有很多资料,下面是热点开启后,ESP8266的设置,注意把SSID,passwd以及局域网的网段改成自己的(192.168后面的称为网段),重启之后ESP会自动切换成STA模式。如果1分钟之内无法连接到热点,它会自动掉会AP模式。

下面是多个飞机连接的示意图,它可以同时显示多架飞机的状态信息

同样的原理,ESP8266还可以接入路由器的热点,同时地面站所在的电脑也连接到同一个热点,也可以实现多个飞行器的接入。通过抓包发现,ESP8266连接到热点信号之后,它发送的所有数据包都是广播包,如下图所示。即目的节点是192.168.1.255的数据包(我电脑的网段是10.42.0网段,所以是10.42.0.255的目的地址),这种发送方式在一定程度上会占用网络的贷款,增加网络的拥塞程度,因为路由器接收到这个包之后会在全网广播,其他飞行器会受到没用的数据包,占用网络带宽.后面可以考虑下把目的节点的IP地址修改成地面站所在电脑的IP的地址,当然最好通过路由器给电脑设置一个静态的IP,以防IP节点不断变化

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PX4使用WIFI模块 的相关文章

随机推荐

  • Linux驱动开发基础__工作队列

    目录 1 引入 2 内核函数 2 1 定义work 2 2 使用 work xff1a schedule work 2 3 其他函数 3 代码 3 1 gpio key drv c 3 2 button test c 4 内部机制 4 1
  • Linux驱动开发基础__中断的线程化处理

    目录 1 引入 2 内核机制 2 1 调用 request threaded irq 后内核的数据结构 2 2 request threaded irq 2 3 中断的执行过程 1 引入 复杂 耗时的事情 xff0c 尽量使用内核线程来处理
  • Linux驱动开发基础__mmap

    目录 1 引入 2 内存映射现象与数据结构 3 ARM 架构内存映射简介 3 1 一级页表映射过程 3 2 二级页表映射过程 4 怎么给 APP 新建一块内存映射 4 1 mmap 调用过程 编辑4 2 cache 和 buffer 4 3
  • 利用python批量下载百度图片

    某项目中需要训练高速火灾算法 但是手头没有数据集 因此需要利用python从网上下载图片 代码如下 coding utf8 import requests import json from urllib import parse impor
  • python将标注平台的数据格式转换成yolov5的txt格式

    标注平台得到的数据格式如下 annotation object bndbox xmax 1917 xmin 9 ymax 1037 ymin 474 groupid name 轻度雾气 size height 1080 width 1920
  • linux vnc常见命令

    linux vnc virtual network computing 1 新建一个vncserver xff1a 直接输入vncserver即可 xff0c 系统将从1开始计算桌面数 xff0c 当然也可以指定桌面的编号 xff0c 如
  • uboot,内核,根文件系统的启动过程

    复习了下uboot xff0c 内核 xff0c 根文件系统 xff0c 简单概括下三者的主要内容 1 uboot uboot的目的 xff1a 启动内核 uboot的功能可以分为两个阶段任务 1 2 1 uboot第一阶段 uboot第一
  • S3C2440开发环境搭建以及过程中遇到的问题

    拿出了之前的S3C2440开发板 xff0c 然后把移植uboot 移植内核 制作根文件系统 设备树编写驱动等几项再做一遍 xff0c 这篇文章先记录下环境搭建过程 xff0c 以及先把现成的uboot 内核 根文件系统下载进去 xff0c
  • S3C2440移植Linux4.19.275内核以及过程中遇到的问题

    目录 1 问题一 xff1a 内核移植时MTD分区问题 2 问题二 xff1a uboot的MTDPARTS DEFAULT定义的MTD分区 xff0c bootargs中的文件系统分区 xff0c 内核的mtd partition smd
  • 深度学习算法训练和部署流程介绍--让初学者一篇文章理解算法训练和部署流程

    目录 1 什么是深度学习算法 2 算法训练 2 1 训练的原理 2 2 名词解释 3 算法C 43 43 部署 3 1 嵌入式终端板子部署 3 3 1 tpu npu推理 3 3 2 cpu推理 3 2 服务器部署 3 2 1 智能推理 3
  • 使用busybox构建根文件系统

    目录 1 下载busybox 2 修改Makefile 3 配置busybox 4 编译安装 4 1 usr include unistd h 203 error conflicting types for 39 gid t 39 4 2
  • CURL发送HTTP请求获得Json数据串保存在本地(linux 下 C++ 编程)

    某AI比赛中需要用到curl发送http请求 xff0c 然后返回一个json字符串 xff0c 看一下别人怎么写的 include lt iostream gt include lt string gt include lt curl c
  • 各种交叉编译工具链的区别

    目录 1 命名规则 2 实例 2 1 arm none eabi gcc 2 2 arm none linux gnueabi gcc 2 3 arm eabi gcc 2 4 armcc 2 5 arm none uclinuxeabi
  • 如何在Windows上搭建NFS服务器实现开发板与Windows之间的文件共享

    目录 1 安装nfs exe 2 mounting 172 31 8 183 f nfs on mnt nfs failed No such file or directory 3 mounting 172 31 8 183 d nfs o
  • STM32的"异常“、“中断”和“事件”区别和理解

    1 异常与中断 xff08 Cortex M3 xff09 1 1 异常与中断 原话 xff1a Cortex M3 在内核水平 上搭载了一个异常响应系统 xff0c 支持为数众多的系统异常和外部中断 其中 xff0c 编号为 1 xff0
  • 8、解决Linux无法上网的各种问题

    最近发现Linux重新开机后无法上网 xff0c 不仅不能ping通windows主机也不能上外网 ifconfig后eth0也没有分配IP地址 xff0c 总之各种问题都被我碰到了 现在来一一解决 xff01 1 没有分配到IP地址 开机
  • Linux的硬盘和硬盘分区方式表示方法

    通过一个例子来看Linux上的硬盘表示方式 xff1a dev sda dev表示我们所用的物理硬盘设备文件是放在 34 34 目录的 34 dev 34 目录下 再说sda之前我们应该知道这些知识 xff1a SCSI SATA USB
  • Pixhawk系统架构介绍

    前段时间导师叫我做扑翼无人机 xff0c 工程上需要实现的 xff0c 能够通过程控飞起来 xff0c 感觉难度挺大 先从研究PX4开始 xff0c 打算一步步理解透整个PX4的框架 xff0c 机型的适配 旋翼 固定翼的姿态控制 xff0
  • PX4启动脚本分析

    启动脚本是一个神奇的东西 xff0c 它能够识别出你对应的飞机类型 xff0c 加载对应的混控器 xff0c 选择对应的姿态 位置估计程序以及控制程序 xff0c 初始化你需要的驱动程序 下面来分析下 图片总结 启动代码的分析必定少不了这张
  • PX4使用WIFI模块

    PX4支持WIFI模块作为数传工具 xff0c 官网上也提供了教程 xff0c 但是不注意细节也很容易失败 以下是我的经验以及教训 配置环境 飞控 xff1a pixhawk v2 xff0c 烧录PX4 v1 8 2的固件 地面站 xff