分享

WiFi数传图传实验

 博大精深通古今 2016-08-21
论坛上也有其他模友作一些相似的研究(最近才发现),我把链接放在最底下了,感兴趣的可以去看一下。我估计在多旋翼上应用这个方案应该说是比较成熟了,固定翼上最大的问题就是wifi通信距离。废话不多说,先看图。





好久没写程序了,努力捡了点Qt编程回来,写了个udp控制端,取代直接打命令。本是想集成开源的mavlink协议,然后就可以用开源的地面站直接控制就行了,搞了半天发现没啥意义,因为等这个方案验证了最终是要用apm之类的飞控来代替arduino开发板的,现在只需要验证一下wifi作为图传数传的可行性就行,换句话说就是能控制和传回数据就行。
总体思路是703n与arduino之间用串口通信,在703n上用socat将串口与一个UDP端口映射,然后在电脑上用这个程序去连接703n上的udp端口,这样就可以操作到arduino了。

把USB摇杆也整进来了,用USB摇杆可以多个通道同时控制。我到底在做什么?呵呵。。。貌似我要做的只是验证图传数传的可行性,而不是做wifi遥控器。。。今天把2.4g控和usb摇杆一起测试了,2.4g控制下发现动usb摇杆发现有很大的干扰,出身冷汗,以为真的是wifi和2.4g有干扰,后来证实是arduino上程序的问题,归根结底还是通信协议没设计好,看来集成mavlink协议还是有必要的。



设备清单:
  • 舵机  x 3
  • 电机 x 1
  • 电调 x 1
  • 电池 x 1
  • 2.4g接收 x 1
  • 2.4g遥控 x 1  (未显示在图中)
  • usb摄像头 x 1
  • tp-link wr703n mini无线路由器 x 1 (刷openwrt,升级了rom和ram,加了外置天线)
  • usb hub (4口) x 1
  • usb连接线 x 2
  • Arduino UNO + 传感器扩展板 x 1 (图中已经连在一块了)


硬件连接:
  • 将2.4g信号线连接到Arduino指定数字引脚上,我的接收机是6通的,所以占用6个数字引脚。
  • 电机,电调,电池正常连接(最后一步再上电),电调信号线和舵机信号线连接到Arduino指定数字引脚上,我这用了3个舵机和1个电调,所以占用4个数字引脚。
  • 将Arduino与USB Hub用USB数据线连起来,作用是一方面给USB Hub供电,另一方面作为Arduino与路由器串口通信。
  • 将无线路由器的电源口用USB线与USB Hub连接起来,作用是从USB Hub那里取电。
  • 将USB Hub的USB接头插入无线路由器的USB口(非电源口,703n带一个USB接口的),作用是扩展路由器的USB口,因为我们要给路由器连接USB摄像头和Arduino开发板。
  • 将USB摄像头插入USB Hub中。
  • 通通连接好之后给电调插入锂电池上电,至此,所有硬件均已通电。

实验目的:
  • 验证是否可以通过无线路由器+USB摄像头方案代替数传与图传模块。实验暂用Arduino作为飞控板,自己编写实验程序。实用方案可以采用Ardupilot-mega (APM 2.5)代替Arduino.

实验程序:
将控制分为两种模式:2.4g遥控器控制模式 + 串口终端控制模式。在任何模式下,另外一种模式均可取得控制权,但不能二者同时控制。
  • 如果当前是串口终端控制模式,遥控器要想取得控制权只需拨动指定的空闲通道,我这里用的是襟翼通道,是个三向开关,只要随意拨动一档,遥控器马上取得控制权。此时,串口终端失去控制权。
  • 如果当前是遥控器控制模式,串口终端要想取得控制权需要发送控制请求命令给无线路由器,路由器在成功应答后,串口终端马上取得控制权。此时,遥控器将失去控制权。

实验结果:
  • 图像传回稳定,不受2.4g信号干扰。
  • 遥控器模式控制精准,没有wifi信号干扰。
  • 串口终端模式控制精准,不受2.4g信号干扰,遥测数据正常。

实验结论:
  • tp-link wr703n mini无线路由器 + USB摄像头方案从理论上讲,可以代替普通数传与图传模块。

遗留问题:
  • 相较于普通数传与图传模块,这里代替它们的设备是USB Hub, wr703n, usb摄像头以及若干USB数据线。如何减重?这里先想到的有去掉所有设备外壳,包括摄像头和wifi天线外壳,选用较轻较短的USB数据线,必要时重新焊接定制的USB线等。
  • mini无线路由器信号发射距离和信号接收灵敏度如何?因为我们这里是需要遥控和测量+图像双向通信,即所谓的遥测再加一个图像,所以这两方面都需要考虑。增加了外置天线后效果如何?需要场测数据。另外,可以考虑连接大功率USB无线网卡(如8187l和rt3070)取代内置的无线模块。

To do list:
  • 拉距测试,预期1KM覆盖半径。两端均使用rt3070大功率USB无线网卡(标称发射功率400mv,峰值功率1000mw,烧得脑袋疼啊,呵呵)。飞机端使用高增益全向天线或蘑菇天线(一般2.4G图传用多少dbi的?),地面站使用14dbi高增益大面积平板天线。(BJ限号不让买车,真是不太方便出去场测啊,郁闷)
  • 在无线路由器上将Arduino串口映射成一个UDP端口,在网上找到的资料,看来是不用写代码了,Linux能复用的东西就是多啊。(已完成)
  1. socat udp-l:14551,reuseaddr file:/dev/ttyACM0,nonblock,raw,echo=0,waitlock=/var/run/tty,b115200
复制代码
  • 研究mjpg-stream开源网络摄像头视频传输软件。一方面提高画面传输速率,目前画面传输的延迟大概在半秒左右(一般要求多少?FPV和UAV分开来说),在网上查到的资料是有一些udp,rtsp等协议的模块,但不稳定。另一方面,研究一下源码看看能不能直接在路由器上合成OSD(对于FPV有意义,对于UAV实际上没什么意义了,把遥测数据传回地面站在PC上合成肯定快得多,而且大部份地面站也支持这功能)。

相似研究:
最新想法:

    mjpg-streamer传视频延迟大,500ms左右,而且运动画面效果也不佳。有可能是USB摄像头本身采集数据就很慢,我用的是中星微301芯片的摄像头,很低端的摄像头了,高端一点的摄像头可能会好点。因为mjpg-streamer本身并不作任何编码,只是把摄像头的每一贞画面拿出来再通过http转发,所以按理说不存在性能瓶颈。实测也是CPU占用很低,703n的CPU还很空闲。估计可能的的原因出在http上,http针对这种实时性要求很高的应用,显然是不适合的。现在能够想到的一是换高端摄像头,至少在电脑上用采集速度很快的,二是要想办法用其它实时性更高的协议,如rtp,udp等。
    另外,拿iPhone做了实验,iPhone自带的摄像头照像速度很快路人皆知了,也是它的优势功能之一。iPhone有无线摄像头这样的应用,电脑上装上对应的驱动程序后会创建一个无线网络摄像头,就像使用正常的usb摄像头一样,QQ等聊天软件都能正常使用,而且速度很快。真的很快,比USB摄像头还要快,而且是无线的!!!不过如果这个方案要上iPhone,好像就没什么意义了。安卓也有类似的应用,不过安卓手机本身的取景速度和照像性能不敢恭维。


    所以目前的想法如下,用手机代替USB摄像头,利用高性能拍照手机的摄像能力来达到准FPV和UAV的图传要求。其它模块功能保持不变。


没错,最大的问题就是遥控距离太近,因为这个路由器的发射功率太小,室外空旷地实测120米左右。这个解决方案实际上已经用在wifi mini 四轴飞行器上了。
对于固定翼,现在最大的问题就是发射功率。但openwrt支持外挂大功率usb无线网卡(不太明白的就是现在这个路由器相当于这个路由器是个mini电脑,有一个usb口,这个usb口先接usb hub(要带电源的),通过hub再接飞控,usb免驱摄像头,usb大功率无线网卡,这回总懂了吧?)

重量的话因为数传图传模块加起来才一个路由器(路由器本身轻得可怜,用过的人应该清楚),一个usb hub(可选,但要轻!)再加一个免驱摄像头(要小,要轻!),还有可能外挂大功率usb无线网卡(要轻!!),这些设备加起来应该不会比传统的数传加图传模块重(话说传统的图传+数传两套发射系统两根天线两套接收着实讨厌啊)。



我自己已经测试过了,摄像头接在这个路由器上通过网页就能查看视频,实际上好多wifi监控摄像头也是基于这种解决方案。

至于跟飞控板连接负责数传这块,这个路由器可以通过usb口与飞控连接,也可以通过ttl串口与飞控连接(需要自己在路由器板子上焊ttl引脚),通信肯定没有问题。至于协议部份,大部份飞控都是基于开源的mavlink协议。
话说这张图片里也没有任何商业模块,uvc摄像头满大街都是,20到200的都有,飞控开源不开源的也一堆,几百到几千的都有(请注意,这个只是代替数传图传模块,绝不是代替飞控),tp-link 703n mini路由器就更不用说了,70元左右一个新的。

唯一有点嫌疑的就是703n路由器的改造,为什么要改造?因为703n自带的只有4m flash 和32m ram(即相当于电脑的4m硬盘和32m内存),但cpu还是很可观的(400mhz)。flash ram有点小,升级到8m flash/64m ram性能就很好了,另外可以焊接ttl引脚(与飞控通过串口通信,比直接用usb转串口可能要好一些,因为怕路由器usb接上飞控后驱不动,因为这里是需要驱动程序的,当然openwrt已经内置了对常见usb转ttl芯片的支持,另外就是当路由器刷坏了变砖后,可以通过串口烧写,如果只有usb口就没办法了),接sma可拆增益天线等。全改造好了的淘宝上卖150左右一个(声明本人不是做这个生意的),想要自己改的网上也有教程(需要焊工好啊!)。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多