钱光明++李枫
摘要:网传图片来实现远程监视有着不错的应用需求。如何快速、便宜、方便、可靠及低功耗地实现这一需求是问题的关键。该文给出了一个基于WIFI的实现方案。设计一个JSW联网装置(主控单片机不用操作系统),并通过一个简便巧妙的方法,限制网传JPEG图片的数据量,同时保证“关键物体”的传输。这些对于住宅远程监视尤具意义。
关键词:低功耗;JSW联网装置;“关键物体”;“去尾”
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2015)23-0159-03
1 概述
打开淘宝网搜索“网络摄像头”,您会发现有着不错的销量。就具体用途而言,有的公司可能安装在办公场合或库房;有的商家用于店铺的无人监视;有的客户可能用于住宅的远程监控……这些产品有的利用有线入互联网,另一些则是无线入网,有的入网方式则是无线有线均可。
本文的研究则是基于“WIFI无线、电池供电、低功耗、长时间”等方面的室内自动拍摄,提出一个“几K图片选择”方案。考虑能够电池供电,强调低功耗。
现有的WIFI无线网络摄像头绝大部分是基于市电(220v)设计的,有的虽然也可以用电池供电,但由于方案所限电池电量只能用1~2天。人们外出度假、旅游时,许多住户的传统习惯一般都是拔掉冰箱电源,切断市电(220v)。而现在,如果希望能通过手机或电脑远程看一看自己的住宅室内情况,使用无线网络摄像头,要求继续使用市电显然是一种遗憾。
低功耗更是许多嵌入式应用的一个极其重要的目标。在电池电量一定的情况下,网络摄像头的功耗越低,需要再次充电或更换电池的周期就越长,越有利于进行长时间监控。另外,一般来讲,低功耗小电流产品发热低,由于温度过高而带来的安全隐患也会小一些,尤其是在长期无人的场合。
2 “几K图片选择”基本实现思路
首先,基于不错的压缩性能以及应用普及性,我们选择JPEG作为网传图片格式。有的摄像头集成有相应固件直接产生JPEG压缩数据,有的则靠DSP加相应软件完成。图1是“几K图片选择”的入网示意。基于前面的分析,选择WIFI入网。如果采用定时方式,主控单片机中设计一个(或控制一个外置的)低功耗计时器,该计时器使主控单片机每隔一定时间自动唤醒,唤醒后的主控单片机使摄像头模块和WIFI模块从低功耗状态(待机或睡眠或断电等)进入工作状态,控制摄像头模块拍下一张现场图像,处理成JPEG压缩数据,随即将其通过WIFI发出,发送完成后再使摄像头模块和WIFI模块重新进入低功耗状态,然后主控单片机自己进入睡眠状态,等待下一次被计时器唤醒;如果采用事件触发方式,则主控单片机的唤醒由外接传感器(如红外探头)触发。
为描述方便,将图1的入网装置称为JSW入网装置,简称JSW。意为JPEG摄像头模块 + Single chip computer(单片机) + WIFI。另外,主控单片机未被唤醒时,其他两个模块也处于低功耗状态,我们称此时是JSW入网装置的低功耗状态。主控单片机被唤醒后,则称是JSW入网装置的工作状态。
与市售的许许多多WIFI摄像头不同,这里的主控单片机不运行操作系统,这样可以最大限度地节省硬件,减少代码量,进一步降低功耗,增加可靠性。
再来看一看JSW入网装置的电池续航时间。这个时间指标主要取决于JSW的工作状态所需时长,需要考虑WIFI模块的启动和入网时间、网络通信需要的时间、主控单片机的启动时间以及JPEG模块的启动和拍照时间,以前两个时间为主。先看第一个。为了快速入网,可以使WIFI模块一直保持为联网状态,但需要mA级的电流[1]。即使是1mA的电流,约26.7天就会耗掉640mAh的电量(26.7*24≈640)。如果考虑WIFI模块平常处于极低功耗的待机或断电状态(电流近似为零),只有在JSW的工作状态才启动和联网,耗电又会怎样?一般情况下,WIFI模块从通电到联网需要十几秒(甚至更短)就够了,算20秒好了。以WIFI模块GS1011M为例,在较大发射功率(+18dbm)时的典型电流约250mA[2],WIFI模块从通电到联网一次所需电量约1.39mAh ((20/3600)*250≈1.39),如果JSW每半天进入一次工作状态(应该满足一般需求),这1.39mAh在26.7天需要的电量为37.113mAh(远小于640mAh)。因此,在JSW的低功耗状态中,使WIFI模块处于极低功耗的待机或断电状态是一个好的选择。有利于延长电池续航时间。
再看第二个。网络通信需要的时间取决于网络状况和所发送的信息量,我们在无法左右前者的情况下,可以尽量缩减后者,以尽量减少JSW的工作状态时长,增加续航时间。这正是“几K图片选择”的出发点之一。
3 简单的“去尾”办法
对于一般的住宅室内监视,我们取分辨率320*240,可以基本满足要求,如看看门开没开。但是,我们知道,在不同的光照条件下对同一物体拍出的JPEG图片大小一般不同,在同样的光照条件下对不同物体拍出的JPEG图片大小可能有别。实验以OV2640拍照[3]。图2是较强光(中午窗外有阳光)下拍摄的一个书架JPEG图片,图3是弱光(阴雨天3米外开约30w日光灯)下拍摄的一张房门JPEG图片,这两张图片大小相差约7.6k。如果不开日光灯的话,图3对应的图片尺寸会更小些(约2.7k时仍然可模糊地辨认门是否打开),对这样的图片设计网传方案时,一般会从最大图片的尺寸出发来考虑,如按13K来发送和存储。而我们的“几K图片选择”,顾名思义是只网传“几K”图片内容,对十几K或几十K(如果用640*480分辨率的话一张图片随便就是几十K)之类的大图片,显然不打算网传一张图片的全部,只是传输“一张图片的一部分”,以下简称PoI(Part of Image ),这样自然引出两个疑问:一是只网传PoI有什么好处?二是只网传PoI还有意义吗?疑问一很容易想明白,因为只传“几k”比传“几十k”肯定省流量(很可能省钱)、省存储容量、缩短JSW的工作状态、延长电池续航时间等。并且,如果这“几k”有一个固定上限值(如不大于6.5k)的话,对网络传输和网络存储也有益处,比如,用户可以预先估计租用的服务器图片存储空间可以用多久。