esp8266是国产mcu的一个里程碑,使用单颗芯片,高集成度,完成了wifi协议的封装,主频最高160mhz。这玩意在老外那边很火,不过在国内的极客圈目前还没见过非常有创意的制作。
下图是两种esp8266常见的开发用板,某宝价格15以内:
左边这块叫esp-01,是比较常见的串口wifi模块,这块板子个人认为对于初学者较难使用,优点是体积小,推荐使用右边这种,叫做nodemcu,插上usb线就能编程和使用了
前戏少说。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? 查询当前飞行时间
esp8266支持使用arduino api对其进行编程,我下面给出的程序也即arduino ide中写的代码
arduino ide下载地址:
https://www.arduino.cc/en/Main/Software
控制tello示例代码(起飞-翻滚-降落):
https://pan.baidu.com/s/1lD0GdcZKpUYdmne6l5XLHg
官方的Arduino不自带esp8266支持,需要在首选项-附加开发板网址中添加一项
http://arduino.esp8266.com/stable/package_esp8266com_index.json
然后在工具-开发板-开发板管理里面,向下就能找到esp8266的下载支持了
上传前,如果使用的板子是nodemcu,请在工具-开发板中选择nodemcu 1.0,其他照着图示设置即可。然后,连上板子,将工具-端口设为板子的端口,点上传即可
由于esp8266短小精悍,无需手机即可支持wifi,同时,它也能绑在tello上面提供上层的逻辑指令,最重要的是,esp8266是个完整的mcu,可以外接各种传感器,甚至是射频模块,所以,也许这两者相结合,会有意想不到的新玩法~
最后,希望官方能开放一下图传接口,这样才能有比较完整的飞行体验