微风小杨 发表于 2018-3-16 15:41:32

使用esp8266单片机控制tello无人机

本帖最后由 微风小杨 于 2018-3-16 15:48 编辑

文章写了一份在大疆论坛,这里也发一份

esp8266是国产mcu的一个里程碑,使用单颗芯片,高集成度,完成了wifi协议的封装,主频最高160mhz。这玩意在老外那边很火,不过在国内的极客圈目前还没见过非常有创意的制作。

下图是两种esp8266常见的开发用板,某宝价格15以内:




左边这块叫esp-01,是比较常见的串口wifi模块,这块板子个人认为对于初学者较难使用,优点是体积小,推荐使用右边这种,叫做nodemcu,插上usb线就能编程和使用了


Tello是大疆全资子公司睿炽科技使用大疆的飞控开发的一个掌上无人机,比较便宜,大概700左右,得益于大疆的飞控算法,具有稳定的悬停,500万像素的实时数字图传,操作简单,同时具备sdk二次开发能力。这就是接下来我们要介绍的:

Tello的命令控制接口大概是这样的(以tello sdk版本1.0.0为准):
Tello启动后,会开启一个wifi接入点,一般叫TELLO-XXXXX。当我们连上这个接入点后,Tello的ip一般为192.168.10.1,上面会监听udp端口8889,同时,所有的反馈信息,会发往客户连接机器的udp端口1518。我们要做的,就是先开启向192.168.10.1:8889端输出数据的socket,再开启一个监听本地端口1518的socket将所有数据打印出来。

听起来是不是很简单?如果你不需要看反馈,那么直接向192.168.10.1:8889发送udp指令也是可以的。

Tello支持的udp指令大概有这些, 全部是字符串(包括后面的“数字”):

command                进入命令控制模式(即我们要用的模式)
takeoff                     起飞
land                        降落
up xx/down xx         上/下/左/右 xx个厘米
left xx/right xx
forward xx/back xx前进/后退 xx个厘米
cw xx/ccw xx            顺时针/逆时针 xx度
flip x                         翻滚,x可以是l,r,f,b以及任意两两组合,代表翻滚方向
speed xx                   速度设为xx厘米/秒
Speed?                     查询速度(会发往本地端口1518)
Battery?                  查询电池剩余
Time?                     查询当前飞行时间

由于是udp发送指令,这是esp8266的强项。esp8266支持使用arduino api对其进行编程,我下面给出的程序也即arduino ide中写的代码

控制tello示例代码(起飞-翻滚-降落):
https://pan.baidu.com/s/1lD0GdcZKpUYdmne6l5XLHg

官方的Arduino不自带esp8266支持,需要在首选项-附加开发板网址中添加一项
http://arduino.esp8266.com/stable/package_esp8266com_index.json
然后在工具-开发板-开发板管理里面,向下就能找到esp8266的下载支持了

上传前,如果使用的板子是nodemcu,请在工具-开发板中选择nodemcu 1.0,其他照着图示设置即可。然后,连上板子,将工具-端口设为板子的端口,点上传即可



https://www.skypixel.com/videos/26e3cff1-648d-4e4e-ad69-c59668be298e?utm_source=copied&utm_medium=PCWeb&utm_campaign=share&sp=0

该演示代码只做了这么几个动作:起飞,抬高,后空翻,降落

由于esp8266短小精悍,无需手机即可支持wifi,同时,它也能绑在tello上面提供上层的逻辑指令,最重要的是,esp8266是个完整的mcu,可以外接各种传感器,甚至是射频模块,所以,也许这两者相结合,会有意想不到的新玩法~

wetnt 发表于 2018-3-16 22:01:49

太棒了,正想找这个破解方案呢!

弘毅 发表于 2018-3-16 23:00:12

四轴都还没玩过的老古董飘过~~~~

qjyjack612510 发表于 2018-3-16 23:03:21

太棒了。一直想做个WIFI远程控制视频小车PWM驱动的。由于不太会玩,用01的感觉好费劲啊.真希望楼主到时候指点下。

xuqin3 发表于 2018-3-16 23:37:30

用nodemcu接个键盘和小屏,想想都激动。:lol

小猪会轮滑 发表于 2018-3-19 09:01:32

:lol:lol顶帖

darkorigin 发表于 2018-3-19 23:22:10

不错哦~~~但是好像还是有些指令没有包括进去吧
比如拍照?

epigone 发表于 2018-3-29 14:05:29

顶帖顶帖顶帖

alphonse 发表于 2018-4-2 06:50:56

大神,有两个问题哈,1)你可知道如何将,forward(),和left(),让这两个指令同时发生?2)NodeMCU,可以把数据回传到电脑上吗,如果只是给NodeMCU外接电源的话。
页: [1]
查看完整版本: 使用esp8266单片机控制tello无人机