Linux设备通过USB线与手机通信(Android、IOS)
背景介绍通过手机USB连接遥控器,无人机的视频经遥控器实时传到手机预览,手机也可以通过USB发送指令给无人机,或者从无人机下载视频照片到手机。方案选择IOS手机使用usbmuxd方式,这样就不需要MFI认证,Android手机使用AOA协议,框图如下:原理解析手机通过USB发送rtsp/http/ftp等消息,经过遥控器,遥控器起到了一个数据转发的作用,将接收到手机的消...
背景介绍
通过手机USB连接遥控器,无人机的视频经遥控器实时传到手机预览,手机也可以通过USB发送指令给无人机,或者从无人机下载视频照片到手机。
方案选择
IOS手机使用usbmuxd方式,这样就不需要MFI认证,Android手机使用AOA协议,框图如下:
原理解析
手机通过USB发送rtsp/http/ftp等消息,经过遥控器,遥控器起到了一个数据转发的作用,将接收到手机的消息转发给无人机,同样遥控器也需要接收无人机发送的消息,并转发给手机。遥控器除了转发收到的数据外,针对不同消息有可能还需要解析,并且遥控器还需要维护跟无人机的连接。
Android手机
Android手机通过AOA协议跟遥控器连接,遥控器端需要移植libusb库,使用异步方式获取手机发送的消息,解析消息是rtsp、http还是ftp,并将消息发送给对应的无人机socket句柄上。反之从相应的socket句柄上接收无人机的消息,转发给手机。
IOS手机
IOS手机使用usbmuxd方式是为了避免MFI认证,IOS系统端已经集成了usbmuxd服务,遥控器端使用的是Linux系统,Linux中没有usbmuxd服务,需要自己移植。可以去github上下载源码交叉编译,地址:https://github.com/libimobiledevice。
usbmuxd屏蔽了底层的USB操作,将USB的数据转化为TCP(基于Unix Domain Socket)数据,这样iPhone的App和外设上的应用就可以使用Socket进行TCP进行通信了。参考网站:https://www.theiphonewiki.com/wiki/Usbmux,此网站介绍了usbmuxd的数据格式,创建socket并通信的步骤,根据此文档可以编写遥控器端Linux应用程序。
总结:使用AOA和usbmuxd协议实现了Android手机和IOS手机通过USB连接遥控器,手机既可以预览无人机画面,又可以控制无人机飞行。
更多推荐
所有评论(0)