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

  • 1. 目的
  • 2. 验证环境
  • 3. BLE SPP验证
  • 4. BT SPP验证
  • 5. 参考资料
  • 6. 补充资料-windows10配置全过程截图
    • 6.1 【添加设备】搜索蓝牙串口设备
    • 6.2 【连接】选中SnapAirUnit设备
    • 6.3 【更多蓝牙选项】确认COM端口
    • 6.4 【传出COM口】iNav地面站配置
    • 6.5 【Connect】连接iNav飞控

穿越机配置工具

  • 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

参考视频:

ESP32 BLE SPP server 範例,並連接到手機上,傳送訊息。

存在问题:

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

搜索资料

两个TI方面的资料表明BLE SPP是自定义的,并非标准接口。

  • 【1】Serial Port Profile is Bluetooth Classic/EDR profile

  • 【2】CC2541: firmware for Bluetooth SPP connection and AT commands


逻辑分析

换句话说,自定义协议必须C/S端同时完成,就像编解码一样,需要成对完成。

方式一:自定义协议在BLE SPP Device里面嵌入

手机APP或PC应用 – UART – BLE SPP Device (Client) – BLE wireless – BLE SPP Device(Server, UART port)

方式二: 自定义下一在BLE SPP Device和手机APP或PC应用上嵌入

手机APP或PC应用 – BLE wireless – BLE SPP Device(Server, UART port)

4. BT SPP验证

软件:BetaFlight v10.8.0
固件:BtSppUart
参考视频:

實現 ESP32 Bluetooth SPP -Serial Port Profile- 的連線

实测结果

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

验证步骤:

  • Step1: Windows系统–>蓝牙和其他设备,选择【添加蓝牙和其他设备】

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

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

  • Step4:将我们自主模块上电,在添加对话框找到BtSppUart设备
    注:这里可能名字有点差异,主要是代码和截图使用不一致导致,请根据实际情况判断。整体过程是正确的。

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

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

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

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

5. 参考资料

【1】BetaFlight模块设计之三十二:MSP协议模块分析
【2】iNavFlight之MSP DJI协议分析
【3】iNavFlight之MSP DJI协议天空端请求报文
【4】iNavFlight之MSP DJI协议飞控端请求应答
【5】實現 ESP32 Bluetooth SPP -Serial Port Profile- 的連線
【6】ESP32 BLE SPP server 範例,並連接到手機上,傳送訊息

6. 补充资料-windows10配置全过程截图

有不少朋友咨询怎么配置,感觉windows上很困难,我将整个过程的图都截取出来,供大家参考。

固件版本:SnapAirUnit_Factory_v0.1.ce83307-clean

6.1 【添加设备】搜索蓝牙串口设备

6.2 【连接】选中SnapAirUnit设备

6.3 【更多蓝牙选项】确认COM端口

6.4 【传出COM口】iNav地面站配置

6.5 【Connect】连接iNav飞控

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

  1. 两个HC-05蓝牙模块互相绑定构成无线串口模块 1

    文章目录 关于HC-05蓝牙模块 工作模式 获取蓝牙模块地址 两个蓝牙模块互相绑定 对A模块的设置: 对B模块的设置: HC蓝牙模块参考资料 SPP蓝牙模块参考资料 关于HC-05蓝牙模块 蓝牙模块B ...

  2. 科陆电表通过卓岚无线串口模块上传智能云平台

    科陆电表通过卓岚无线串口模块上传智能云平台 1.概述 随着目前无线通讯领域的快速发展,远程实时监控电表数据已经成为发展的趋势,无线远程监控在应用领域运用这一块,更是尤为重要.卓岚无线串口模块ZLAN7 ...

  3. 关于学习如何组装基于F4V3S飞控的竞速穿越机

    广西●河池学院 广西高校重点实验室培训基地 系统控制与信息处理重点实验室 本篇博客来自河池学院:智控无人机小组 创作时间2020/8/22 组装一架穿越机,你需要的一些最基本的,能让它飞起来的配件有: ...

  4. QT从零开始作单片机上位机-串口调试助手+波形显示-实现串口模块的配置

    目录 实现串口模块的配置(1) 一.先列举需要思考的问题: 二.所有的问题要由简单到复杂逐一解决 实现串口模块的配置(1) 完成了基本的界面设计后,我们就要着手实现功能.下来的几章我们看串口数据收发的 ...

  5. QT从零开始作单片机上位机-串口调试助手+波形显示-实现串口模块的配置(2)

    QT实现串口模块的配置(2) 一.先列举需要思考的问题: 怎么实现点击刷新按钮后,串口工具可以自动发现可用的COM口,并将com口显示在Combobox1? 如何添加所有可用的波特率?同样给其他Com ...

  6. HC-02蓝牙串口模块的配置和使用

    HC-02蓝牙串口模块是基于蓝牙2.0并兼容BLE的双模蓝牙数传模块,带底板的蓝牙模块如下图: 模块可以作为从机与HC-05或HC-06的主机设备通信,也可以和手机通信. 模块在上电未连接蓝牙的时候L ...

  7. 多路双向串口转网口上位机C++源代码带主动连接支持UDP和TCP客户端Socket通信C语言

    多路双向串口转网口上位机C++源代码带主动连接支持UDP和TCP客户端Socket通信C语言 使用说明介绍 1.功能介绍: 完成了多路网口和串口数据转换的功能. 可实现串口接收到的数据,通过网口发送出 ...

  8. HC-05蓝牙模块--------手机与STM32通信(代码编写)(上位机配置)保姆级教程

    ⏩ 大家好哇!我是小光,嵌入式爱好者,一个想要成为系统架构师的大三学生. ⏩因为之前无论是电赛还是做项目,都用到了蓝牙模块,如:手机和stm32的通信,电赛中的双车通信,还是遥感小车的stm32与st ...

  9. HC06蓝牙2.0模块连接不稳定 和 STM32串口不传输数据(串口接收中断)的一些问题

    HC06蓝牙2.0模块连接不稳定和STM32串口不传输数据(串口接收中断)的一些问题(推荐) 1.蓝牙 最近,在一个项目中使用到蓝牙,但是调试过程出现了很多问题. 刚开始使用的是HC06蓝牙,刚开始使 ...

  10. JY901模块连接ATK-1218-BD,GPS/北斗通过JY901上位机显示数据

    JY901模块连接ATK-1218-BD,GPS/北斗通过JY901上位机显示数据 二级标题 GPS更改波特率为9600 由于JY901默认波特率是9600,与GPS连接显示坐标,需更改GPS模块波特 ...

最新文章

  1. java中使用队列:java.util.Queue
  2. python BeautifulSoup的简单使用
  3. java反射机制详解_Java反射机制详解
  4. centos配置oracle自启,centos 下配置oracle11gR2开机自启
  5. springmvc 中controller与jsp传值
  6. Leet Code OJ 8. String to Integer (atoi) [Difficulty: Easy]
  7. python学习ajax_Python开发【第二十三篇】:AJAX全套
  8. 为什么同现矩阵*评分矩阵=推荐结果?
  9. Go语言的goroutine
  10. SVN missing 解决
  11. windows下 PHP 安装
  12. Giesecke Devrient推出全球首张Nano SIM卡,比Micro SIM卡小1/3
  13. html+js实现注册页面及信息验证
  14. 基于自适应显着性的图像分割(源码开放)
  15. 疫情之下,征信有逾期如何处理?
  16. iOS测试工程师如何用xcode进行性能测试
  17. 2022《中国企业敏捷实践白皮书》调研全面启动
  18. 有关直方图的常用操作
  19. C++学习路线及推荐书籍
  20. 41个搜索引擎免费登陆入口大全

热门文章

  1. 用Python实现微信撤回消息还原
  2. padavan mysql密码_newifi mini 刷 不死Breed 及 Padavan 教程
  3. 内涵社区APP,一款集内涵段子,百思不得其姐,煎蛋于一身的搞笑社区
  4. 配置 manjaro
  5. unity手机端发布
  6. 盘点15个搞笑的程序员段子
  7. 基于CNN的人脸 性别、年龄识别
  8. 重磅公开!集14位名师教案的《最全高中数学解题思想方法汇编》
  9. 惠普笔记本苹果w10双系统_苹果macbook pro安装win10双系统的方法
  10. ROS笔记——创建简单的主题发布节点和主题订阅节点