前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FlySky+A8S(SBUS接收机)+ESP8266控制大疆Tello无人机.准备

FlySky+A8S(SBUS接收机)+ESP8266控制大疆Tello无人机.准备

作者头像
云深无际
发布2021-11-19 12:54:32
2.9K0
发布2021-11-19 12:54:32
举报
文章被收录于专栏:云深之无迹

别问为什么标题又丑又长,就是怕你搜不到我。。。

Tello飞机应该是现在比S1,EP车稍微便宜点的玩具了,但是价格也还是很贵,尤其是EDU的版本,原来卖2500。我悟了,但是一直没有一个合适的遥控器,倒是有个蓝牙遥控器,但是100多的价格感觉好多人也不去买。。。我以前也写过遥控器的文章,也不知道多少人看。

当我有了一个航模遥控器以后,我就觉得有必要和我的Tello联姻~

I6X

那我们的主角就是这样滴!

得益于大疆对TT的开放,我们可以使用固定的协议来完成对TT的控制。

在SDK里面说过了连接方式了

而且还可以接收Tello的状态,所以这个信息也可以回传

因为Tello的图传也是WIFI的,然后控制它也是WIFI连接,所以图传现在就先放一下,后期可以会桥接吧。

然后现在就是实现,解锁开关,遥控器控制,这个是目前要实现的功能。因为我的接收机没有回传功能,所以这里就先不写回传的程序了。

代码语言:javascript
复制
https://github.com/Cleric-K/FlySkyRxFirmwareRssiMod

但是有一个项目可以让接收机有回传信号强度的能力,源码也给了。我研究一下自己写个固件。

这些是我们要写的命令

因为遥控器是FS的,它家的协议是IBUS,可惜大部分的无人机要的是FrsKy的SBUS。。。然后我就找了半天,买了A8S,可以输出SBUS也可以输IBUS。

就是这个了

注意它的输出模式的切换

因为遥控器的制作过程会有几个转换的过程,所以需要一个主控。

乐鑫家的芯片便宜,我有一堆。。。

Arduino也有一个,就是不知道放哪里了,而且它就一个硬件串口。用软件串口倒是也行,不过我找不到了。。。

就一个硬件串口

连接的示意图

但是可以使用普通的引脚模拟串口。

代码语言:javascript
复制
#include <SoftwareSerial.h>
代码语言:javascript
复制
SoftwareSerial xxSerial(2,3);
代码语言:javascript
复制
xxSerial.begin(9600);  //以9600波特率打开软串口

到现在为止,你有两个串口了,如果你愿意可以再搞几个串口,可是你使用的时候,你会发现好像用不了了。其实不是,用到哪个软串口,就在用之前加一个语句 XXX.listen()(XXXX是你自定义的软串口名字),也就是用到谁监听谁,不然不被监听的会失效。(从AVR角度讲,是没有定义模拟串口)

这是控制的框图

说下控制流程:

  1. 遥控器和接收机建立联系
  2. 接收机通过串口和主控连接
  3. 主控解算IBUS信号里面的通道信息
  4. 将通道信息通过主控串口给ESP8266
  5. ESP8266通过WIFI和TT建立连接
  6. 使用UDP发送RC控制信息

我们需要两个串口:一个是连接接收机的IBUS信号端,一个是连接ESP8266.

好了,我们在编码之前需要做一个准备,要准备一个解码IBUS信号的库~

代码语言:javascript
复制
https://github.com/bmellink/IBusBM

开源的位置

Arduino内直接下载安装

该库支持基于 AVR 的 Arduino 板(Arduino MEGA、UNO、Nano、Micro 等)、基于 ESP32 的板(ESP32、NodeMCU 等)、STM32 板(STM32F103 等)、MBED(例如 Arduino NANO 33 BLE) 和 MegaAVR。

iBUS 库需要 Arduino 板上的专用硬件串行 (UART) 端口。如果主板只有一个 UART 端口,你仍然可以使用该端口与您的 PC 进行串行调试通信,只要打算仅使用伺服输出模式(波特率将固定为 115200 波特,应该只连接 UART TX针到 USB 串行转换器)。

具体内部的实现一角

可以看源码库

使用的时候需要引入IBUS的解码库

ESP32做主控

ESP8266做WIFI连接飞机

首先是ESP32的程序

程序用于与 RC 接收器通信并将数据从通道数据发送到 ESP8266。它不断地从接收器读取RC 通道;然后使用格式将其序列化为字符串>channelNumber:value;最后通过与 ESP8266 的串行接口发送。它还从串行读取消息。它们可以是调试或数据消息。两种类型的数据消息是电池电量和温度水平。它们都作为遥测传感器发送回 RC 接收器。

要将代码上传到 Arduino Mega + ESP8266,您需要将开关设置为 (1: on, 2: on, 3: on, 4: on, 5: off, 6: off, 7: off, 8: off) .

下载ESP32Servo和IBusBM

编译一次,正常

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档