先放个项目演示视频镇帖:
<iframex id="1XzhHSRr-1602145566866" src="//i2.wp.com/player.bilibili.com/player.html?aid=712290258" allowfullscreen="true" data-mediaembed="bilibili"></iframex>
可能是大疆TT无人机的第一款DIY遥控器!大疆TT无人机编程试飞初体验!
认识我的朋友,大概都知道,我是一个“运气爆棚”的人,经常能“捡”到一些好玩的东西。这不,前两天在家门口“捡”到一架大疆 RoboMaster Tello Talent TT 教育无人机(下文简称:TT 无人机或 TT),是基于大疆 Tello EDU 无人机升级而来的新产品,可以用第三方软件进行编程控制,那还不赶紧来试玩一下!
TT 无人机介绍
为了对这款 TT 无人机进行编程控制,我专门查(抄)阅(袭)了大疆官网对它的介绍和相关资料。
TT 无人机是大疆首款拥抱开源的教育无人机 ,为了使该款无人机能够更加符合开源精神和青少年科技创新教育核心,让国内中小学师生有更极致的教学体验,大疆与 DFRobot 合作,将 Mind+ 图形化编程软件与 TT 无人机深度结合,使得 TT 无人机更加如虎添翼。通过丰富的软硬件拓展性,可以实现例如环境感知、人脸识别、自动跟随、手势识别、手掌控制、多机协同、人工智能等各种应用。
那么 TT 无人机是如何做到拥抱开源的呢?
- 基于 ESP32 控制器的 TT 扩展模块:TT 无人机在大疆原有的产品 Tello EDU 无人机的基础之上,新增了一个开源控制器。它是一款基于 ESP32 芯片的主控板,基于 ESP32 强大的开源生态,可以让 TT 无人机同时支持 Arduino、microPython、图形化等编程环境。同时借助 ESP32 强大的 WiFi、蓝牙连接功能,具备强大的通信能力。
- 集成多种可编程传感器/模块:搭载 RGB 全彩 LED 灯、8×8 红/蓝双色 LED 点阵屏、ToF 红外测距传感器等,可以实现如灯光控制、图案动画显示、智能避障等多种编程效果。
- 转接拓展板,支持第三方传感器:为了让用户可以连接更多的开源硬件,实现更加丰富的创意,TT 无人机提供了一个 2×7 PIN 2.54mm 间距的直插封装接口,支持 I2C 、SPI 、UART 、GPIO 多种编程协议,并提供 5V/3.3V 电源接口。
- 开放的 RoboMaster SDK:借助全新的 RoboMaster SDK 以及视频流数据,可以轻松支持多种可编程传感器接口,机器视觉、深度学习等人工智能前沿科技也得以走进中小学课堂。
编程控制框架
如果需要实现对 TT 无人机进行控制,有两种思路:
1、直接控制:TT 无人机其实就类似大疆 Tello 无人机,它有自己的飞行控制器,它通过获取飞机自身的陀螺仪等传感器信息,来控制飞机的四个空心杯电机,从而实现控制飞机的物理运动。来自手机 App 或手柄的控制指令,可以直接发送到 TT 无人机的控制器,并且通过控制器进一步变成飞行指令;而无人机的一些信息,比如电量、当前高度等,也可以通过控制器直接发送出来。
2、间接控制:间接控制其实就是通过 TT 扩展模块实现的。TT 扩展模块对无人机的控制,其实也像手机 App、手柄一样,是通过向 TT 无人机的控制器发送控制指令来实现的。而这个具体的通信过程,则是由 TT 无人机的机载 Micro USB 接口通过串口通讯的方式来实现。那么就可以通过对 TT 扩展模块进行编程,获取第三方软件或者各种开源硬件与传感器的相关信息,然后间接去控制 TT 无人机。
所以,TT 扩展相当于附着在 TT 无人机之上的外部大脑。它不仅拓展 了 TT 无人机本身的感知能力,还丰富了 TT 无人机的功能性。我们可以通过向 TT 扩展模块烧写自己的程序,来使 TT 无人机组合体完成仅仅依靠 TT 无人机本身难以完成的复杂飞行任务。同时相比手动遥控控制,借助程序的控制,我们可以完成更加精确的控制指令。
试飞小任务
介绍了那么多,接下来我们就开始对 TT 无人机进行编程,来完成一个试飞小任务吧。
大疆官方的资料中,介绍了 TT 无人机可以通过 Tello App 和定制版 GameSir 小鸡手柄 T1D 进行遥控。既然是一款拥抱开源的教育无人机,我当然要对 TT 无人机为所欲为了,为何不自己设计一个 DIY 版的手机遥控器呢:想加什么功能就加什么功能,比如后续可以增加显示各种外接传感器的数据的功能;想怎么玩就怎么玩,比如可以通过编程,实现更加复杂的特技动作。
既然有了官方支持的遥控器,为什么还要自己再设计一个遥控器呢?原因如下:
- 如果使用 Tello App 进行遥控,就不能使用编程功能,更不用说集成第三方传感器了,那 TT 无人机跟普通的 Tello 无人机就没有区别了。
- 如果使用 GameSir 手柄进行遥控,虽然可以进行编程以及添加第三方传感器,但是目前大疆官方只提供了 Arduino 代码版的编程示例,并没有图形化版本的示例程序,不适合大部分中小学生进行学习。
那么,我将如何实现 DIY 遥控器呢?
- 为了更加方便大家上手,我将使用 Mind+ 图形化编程环境,通过简单的积木式拖拽,就可以完成丰富的功能;
- 试玩过程中,为了降低硬件成本,我将仅使用手机,通过 Blynk 物联网平台来实现 DIY 遥控器的设计与制作。Blynk 物联网平台是一个非常简单好用的物联网开发平台,几分钟之内就可以为你的物联网项目创建一个手机 App。
为了实现这个项目,我升级了之前设计的 Mind+ 版的 Blynk 用户库,以使它支持 TT 无人机的编程。学会了本项目的编程原理之后,除了可以自己设计手机 App 来控制大疆无人机之外,你也可以设计实体版的硬件遥控手柄。
关于 Mind+ 软件的使用教程,由于篇幅限制,请参考 Mind+ 官方教程。
关于 Blynk 的入门教程,请参考我的另一本书:《物联网,So Easy!——基于 Blynk 平台的 IoT 项目实践》。
Blynk 项目设置
作为可能是第一款 TT 无人机的 DIY 版手机遥控器,我要把这个遥控器设计成什么样子呢?为了方便操控,以及使用体验的统一,这里我参考了 Tello App 的外观,设计了一个简化版的操控界面。
先来看一下官方的 Tello App 版遥控器:除了起飞 / 降落功能之外,Tello App 最重要的组件就是无人机飞行控制了,它采用了 2 个摇杆,来实现无人机的各种运动状态,如下图所示:
另外,我们也可以在这个 App 顶部状态栏中看到无人机的一些状态信息,比如电量、蓝牙、速度、高度等,如下图所示:
我根据 Tello App 的主界面,设计了简化版的 Blynk 遥控器界面,如下图所示:
由于 Blynk App 的限制,不支持自动横屏显示,所以当我们横屏操控时,显示的文字就变成竖直状态了,但是这丝毫不影响使用。
Mind+程序设计
设计完遥控器界面之后,就开始编程了。打开 Mind+ 软件,切换到
注意,本项目中使用的 Mind+ 软件版本为
v1.6.5 RC2.0 ,随着软件升级,未来部分界面与功能可能进行改版,请根据实际情况调整修改。
然后在用户库中导入 Blynk 扩展库,如下图所示:
接下来就正式开始编程。首先是 TT 无人机相关的初始化设置与 Blynk 基础设置:开启无人机飞行控制,设置 Blynk 为蓝牙 BLE 连接模式(方便室外无 WiFi 场景也能使用),将蓝牙名称命名为 RMTT (TT 无人机英文缩写)。初始化完成后在点阵屏显示 TT 标志,然后在循环执行中运行 Blynk 相关的进程。
接着定时将 TT 无人机的一些传感器信息发送到 Blynk App 中进行显示,主要包括电量、速度、TOF 测距(前方距离)、高度等。
然后是飞行控制相关的程序。TT 无人机在 Mind+ 中的底层 SDK 提供了两种控制模式:阻塞式与非阻塞式。本项目中使用的最新的 Mind+ v1.6.5 RC2.0 版本中,图形化指令调用的是阻塞式模式的 SDK。由于 Blynk 需要与服务器“时刻”保持通信,所以阻塞式模式与 Blynk 一起使用时,会导致 Blynk 与服务器的通信中断。所以本项目中的飞行控制,我们通过直接发送 SDK 控制命令的方式来实现非阻塞式的控制方式。通过查阅 TT 无人机的官方 SDK 手册,我们可以很容易得到不同飞行状态对应的指令,如下图所示:
另外 TT 扩展模块与 TT 无人机主体之间的通信是通过串口1 进行的,所以编程时只要让 TT 扩展模块通过串口1 向 TT 无人机主体发送指令即可。举个例子,如果要控制 TT 无人机自动起飞,只要发送
了解了 TT 无人机 SDK 指令的发送方式之后,我们就可以正式对 TT 无人机进行飞行控制了。
首先是一键起飞与降落。Blynk App 中 V0 编号按钮,代表起飞控制;V1 编号按钮代表降落。起飞和降落的时候,显示相应的向上和乡下箭头,起到提示作用。程序如下图所示:
接着是左摇杆的编程。左摇杆主要用来控制 TT 无人机的向上(U:up)、向下(D:down)、顺时针旋转(大 C:ccw)、逆时针旋转(小 c:cw)。进行相应的飞行任务时,在点阵屏中显示相应的提示信息。程序如下图所示:
右摇杆的编程也是类似道理。右摇杆主要用来控制 TT 无人机的向前(F:forward)、向后(B:back)、向左(L:left)、向右(R:right)。同样也要在点阵屏中显示相应的提示信息。程序如下图所示:
最后我们再增加一个安全防护措施:当 TT 无人机与手机遥控失去连接时(TT 拓展失去连接或者 Blynk 失去连接),让它自动降落,同时点阵屏显示 E(Error)提醒用户,保证安全。程序如下图所示:
以上就是本项目的完整设计过程,由于篇幅限制,只设计了一个简单的程序。完整的程序如下图所示,你也可以对该程序进行修改,添加更加酷炫的功能或者飞行特技。
效果演示
上传程序到 TT 扩展模块,一起到户外去试飞一下吧。演示视频可回到文章开头查看。
总结
本次试飞体验教程到这里就结束了,总体来说,结合大疆完善的飞控技术,和 Mind+ 简单的编程体验,只需要通过简单的图形化指令拖拽,发送相关的飞行指令,就可以完成复杂的飞行运动控制,上手这款 TT 无人机还是非常容易的。当然本文只是探索了 TT 无人机很简单的一部分功能,后面有时间,我将为大家解锁 TT 无人机更多好玩的创意。