蓝牙无线自制串口模块连接穿越机配置工具

news2024/9/21 0:28:54

蓝牙无线自制串口模块连接穿越机配置工具

  • 1. 目的
  • 2. 验证环境
  • 3. BLE SPP验证
  • 4. BT SPP验证
  • 5. 参考资料

穿越机配置工具

  • SpeedyBee
  • BetaFlightConfigurator

目前,市面上连接BetaFlight给飞控固件调参比较顺手的工具大体上是官网的BetaFlight Configurator(国内都叫BF地面站,其实个人感觉不应该叫地面站,配置工具更好。因为地面站更多具有导航,航线规划和控制功能)。

除此之外,比较能够让大家耳目一新的大概是手机端的SpeedyBee这应用软件,非常适合场外进行参数调整。

所以开源的东西就是香,大体的意思就是免费,还专业。

1. 目的

本文的主要目的是期望在开源项目基础上,尤其通过其协议接口进行配置工具对接,摆脱有线连接的困扰。为后续MSP协议的相关控制奠定基础。

2. 验证环境

本次验证主要基于蓝牙,通过BLE SPP 或者BT SPP 对飞控串口RxTx进行无线扩展连接。

  • 硬件开发环境:采用时下比较实惠成熟的乐鑫ESP32物联网方案,该方案可以扩展到ESP-S3等更新MCU,以应对后续扩展应用。
  • 软件开发环境:采用ESP-IDF,具有健壮SDK和示例代码。

3. BLE SPP验证

软件:SpeedyBee APP v1.8.0
固件:BleSppUart

存在问题:

a) BLE 默认MTU大小23字节。当报文超过该长度(含报文头,占4字节),将会采取分包。
b) BLE分包格式:分包头 + payload

鉴于Windows/手机上没有BLE SPP标准虚拟串口驱动模型,因此在实现组包和分包头解析可能存在应用上的设计差异。

实测结果

a) SpeedyBee认识短包(无需分包+组包过程)
b) SpeedyBee无法识别长包(需要分包组包过程)

SpeedyBee无法通过BleSppUart连接BF飞控。所以App上所说的Bluetooth-UART Adapter(通用的模块是硬件,固件必须使用SpeedyBee厂家,有报文解析方面自定义内容)。

注:若有同学知道这个协议格式,或者哪里可以搜到,也请告知!我没有找到,也许是他们闭源的原因。

日志分析

前面三个命令UUI, API version and FC version成功,整体没有超过23字节(MTU),获取BUILD_INFO指令反馈32字节,需要两个20字节分组报文。App似乎一直没有拿到这些数据,所以尝试了7次以后就主动断掉BLE SPP。
99: I (35523) BleSppUart: BLE read 6 Bytes //UUID
124: I (37553) BleSppUart: BLE read 6 Bytes //UUID
141: I (37703) BleSppUart: BLE read 6 Bytes //API version
157: I (37793) BleSppUart: BLE read 6 Bytes // FC_VERSION
173: I (37943) BleSppUart: BLE read 6 Bytes // BUILD_INFO
202: I (39943) BleSppUart: BLE read 6 Bytes // BUILD_INFO
231: I (42043) BleSppUart: BLE read 6 Bytes // BUILD_INFO
260: I (44083) BleSppUart: BLE read 6 Bytes // BUILD_INFO
289: I (46133) BleSppUart: BLE read 6 Bytes // BUILD_INFO
318: I (48083) BleSppUart: BLE read 6 Bytes // BUILD_INFO
347: I (50133) BleSppUart: BLE read 6 Bytes // BUILD_INFO

4. BT SPP验证

软件:BetaFlight v10.8.0
固件:BtSppUart

实测结果

非常成功!!!关键是BT SPP串口的Windows配置方法。

验证步骤:

  • Step1:Windows系统设置–>设备,选择【更多蓝牙选项】
    更多蓝牙选项

  • Step2:点击【添加】,增加一个蓝牙串口
    添加蓝牙串口

  • Step3:将我们自主模块上电,在添加对话框找到BtSppUart设备
    找到BtSppUart设备

  • Step4:点击确定,添加蓝牙虚拟串口(请留意串口端口号)
    添加蓝牙虚拟串口

  • Step5:在计算机管理工具里面,确认蓝牙虚拟串口设备添加情况(一次添加过以后,第二次无需添加会自动连接。)
    在这里插入图片描述

  • Step6: 在BetaFlight Configurator里面选择蓝牙虚拟串口
    BF选择蓝牙串口

  • Step7:效果如下,如果感觉速度慢,可以将打印去掉

在这里插入图片描述

5. 参考资料

【1】BetaFlight模块设计之三十二:MSP协议模块分析
【2】iNavFlight之MSP DJI协议分析
【3】iNavFlight之MSP DJI协议天空端请求报文
【4】iNavFlight之MSP DJI协议飞控端请求应答

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/13227.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OFD转PDF ~java实现

OFD转PDF ~java实现 当你在查这个问题时,说明大家都已经接触到OFD这个新的版式文档了。OFD格式对标的PDF,目前关于PDF的转换都比较成熟,但是当OFD出现后,切发现能实现转换却似乎有所困难。尝试网上搜了一下这方面的资料&#xff…

别再当大冤种了,揭开3D建模报班6个常见套路

1⃣承诺有就业保障 任何机构给你承诺✊所谓的包就业都是耍流氓😡,请不要信❗️ 承诺就业保障的机构无非3种情况: 🔹赚取学员的信任感,吸引学员报名和交钱; 🔸提高机构的“专业度”和所谓的“…

JWT详解(文章内嵌jwt工具类)

JWT 基础概念详解,工具类和使用方法放在最后 什么是 JWT? JWT (JSON Web Token) 是目前最流行的跨域认证解决方案,是一种基于 Token 的认证授权机制。 从 JWT 的全称可以看出,JWT 本身也是 Token,一种规…

【现代密码学原理】——消息认证码(学习笔记)

📖 前言:消息认证码 MAC(Message Authentication Code)是经过特定算法后产生的一小段信息,检查某段消息的完整性,以及作身份验证。它可以用来检查在消息传递过程中,其内容是否被更改过&#xff…

Appium 移动端自动化测试(Mac)

目录 adb调试工具(Android Debug Bridge) adb常用命令 Appium使用 快速体验步骤 Appium常用方法 UIAutomatorViewer 获取元素 元素等待(在指定时间内一直等待 元素操作 Swipe 滑动和拖拽事件(Scroll、drag_and_drop&#…

pytorch深度学习实战19

第十九课 卷积层的填充和步幅 目录 理论部分 实践部分 理论部分 首先看一下卷积层的填充。 上图所示的情况会有个问题,如果卷积核不变的话(一直是5*5的卷积核),那么我的网络最多也就只能弄到第七层了,如果我想搭建更…

恒太照明在北交所上市:募资规模缩水三成,第三季度收入下滑

11月17日,江苏恒太照明股份有限公司(下称“恒太照明”,NQ:873339)在北京证券交易所(即“北交所”)上市。本次上市,恒太照明的发行价格为6.28元/股,发行数量为2220万股,募…

Linux|centos7下部署安装alertmanager并实现邮箱和微信告警

前言: 一个成熟的符合一般人预想的资源监控平台应该是能够多维度的展示各种各样的数据,比如,服务器的内存使用率,磁盘io状态,磁盘使用率,CPU的负载状态,某个服务的状态(比如&#x…

Pandas数据分析33——数据多条件筛选(点估计和区间估计评价指标)

本次是写论文代码区间估计评价指标有感..... 数据框有两列的时候,我们想筛选A列大于B列的样本出来时,只需要用布尔值索引就行: df[df[A]>df[B]] 可是多条件的筛选的时候怎么办,比如我需要A大于B列,还有A小于C列。…

软件测试“摆烂”已经成为常态化,我们应该怎样冲出重围?

网络日新月异发展的今天,每隔一段时间就会出现一些新的网络热词,最近“摆烂”成功突出重围,成为大家热议的中心。什么是“摆烂”?“摆烂”就是事情无法向好发展的时候直接选择妥协,不采取任何措施加以改变,…

兼容 信创鲲鹏/M1 arm64架构的kafka镜像

当前热度比较高的kafka镜像是wurstmeister/kafka,在dockerhub上有很多的使用次数。我起初很开心最新版支持arm64架构,然后拉到本地用Mac M1跑也很完美 但是!我放到信创鲲鹏的生产环境,导入镜像没问题,但一用docker-com…

IPWorks Zip Delphi 流式压缩组件

IPWorks Zip Delphi 流式压缩组件 IPWorks Zip允许开发人员使用Zip、Tar、Gzip、7-Zip、Bzip2、ZCompress或Jar压缩标准轻松地将压缩和解压缩集成到应用程序中。IPWorks Zip组件是从头开始构建的,将卓越的速度与出色的数据压缩比相结合。 IPWorks Zip功能 文件压…

Allegro如何给铜皮导弧操作详解

Allegro如何给铜皮导弧操作详解 当需要给如下铜皮导弧的,是一件比较麻烦的事情,但是可以用以下两个方法来实现 方法一 具体操作如下 shape-decompose shape Find选择shapes Options选择层面,比如top层,选择delete shape after decompose 框选铜皮 得到下图效果,然后…

SNMP 协议解析(一)

♥️作者:小刘在C站 ♥️每天分享课堂笔记,一起努力,共赴美好人生! ♥️夕阳下,是最美的,绽放。 一.SNMP是什么 是基于TCP/IP协议族的网络管理标准,它的前身是简单网关监控协议(SGMP)&#xf…

HOST前后端分离小操作

“本地测试项目配置域名小操作” ​ 相关文章【欢迎关注该公众号“一路向东”】(CORS处理跨域问题): CORS跨域问题配置白名单CORS_ORIGIN_WHITELIST HOSTS 本地测试域名必然少不了修改:C:/Windows/System32/driver/etc/host文件&…

MVVM的构建(javakotlin)

概念性的描述就不写了,直接上代码 MVVM框架,主要是构建基类,实现ViewModel绑定,ViewBinding的绑定,在构建好基类后,后续开发中新建activity或fragment的viewModel和viewBinding就会在基类的方法中实现绑定…

Python virtualenv工具设置虚拟环境和VS code调试Python

Python virtualenv工具设置虚拟环境和VS code调试Python1. Window环境下采用VS code调试Python和虚拟环境1.1 安装Python1.2 安装虚拟环境工具virtualenv1.3 Windows上使用虚拟环境的基本操作1.4 Windows上VS code使用虚拟环境2. Linux环境下采用VS code调试Python和虚拟环境2.…

SAP 一次性读取工单的所有状态(工单抬头、工序、子工序、检验特性等等)

1. 前言 支持读取状态列表 2. 实现 代码 DATA: ls_objects TYPE tca11,ls_t490_imp TYPE t490. DATA: lt_ord_pre_imp TYPE TABLE OF ord_pre. FIELD-SYMBOLS: <fs_jest> TYPE any.DATA: lt_jest TYPE TABLE OF jest."fill var ls_objects VALUE #( flg_alt X…

[搞点好玩的] JETSONNANO 受苦记 -- 001 (布置环境,未完待续)

最开始是打算从0开始自己调试适配yahboom的IO板子&#xff0c;但是后来各种版本失配翻墙困难&#xff0c;前期先是用人家的包烧录进去。(所以叫未完待续) 直接粘贴我的debug记录了哈&#xff0c;凑合看吧&#xff1a; 记录 本项目是开源的实现基于jetbot的图像处理流程项目&a…

分享购商城模式详情特点和优势解析

随着互联网的不断发展&#xff0c;市面上出现了很多新怡的商业模式&#xff0c;就以分享购这个模式举例说来&#xff0c;直接解决了消费者自买省、好省、分享赚的逻辑玩法&#xff0c;之前有一个平台一个月直接引入70万的会员&#xff0c;引爆了网络上又一波话题&#xff0c;热…