祝云凯,李成林,单加响,邱杰凡
(1.浙江杭佳科技发展有限公司,浙江 杭州 310015;(2.浙江工业大学 计算机科学与技术学院,浙江 杭州 310014)
无线传感器网络中的传感器节点通过无线的方式进行通信,对节点的更新修复通常依赖于已构建的无线网络。然而,无线网络往往存在很大的安全隐患。由于无线网络通过电磁波在空中传输数据,只要在该网络覆盖区域内都有可能被截取窃听数据,因此,要将数据只发送给指定接收者显然是不可能的。在传输调试信息时,存在泄露节点内部敏感信息的可能。一旦传感器节点内部敏感信息发生泄漏,可能会影响到整个网络系统的性能与安全。同时,由于节点通常被部署到难以接触的地方,无法采用有线连接的方式接收节点的调试信息。
以在故宫博物馆部署的无线传感器网络监测系统为例,玻璃展柜中的节点需要封闭至少三个月才能回收维护[1]。一旦在封闭期间节点需要更新修复,为了保证节点内部敏感信息不泄露,需要寻求一种可代替的非接触式调试信息传输方案。近年来,可见光通信技术(Visible Light Communication,VLC)不断发展,可见光通信以光波作为信息的载体,可进行定向传输且覆盖范围有限可控,具有不易被截取窃听的特性,为传感器节点调试信息的安全传输提供了可靠的通信环境。如果采用可见光通信进行调试信息传输,不仅在无线网络出现故障时可成为替代的调试交互手段,还能减轻网络整体的带宽压力[2]。
随着硬件资源丰富的移动终端(如智能手机、平板电脑等)的普及,越来越多的移动终端配备了丰富的传感器元件,使得移动设备具备了潜在进行可见光通信的能力。传统意义的可见光通信是利用在接收端的光电检测器(PD)接收信号,这对光电检测器的精度和灵敏度要求较高。然而,量产型移动设备上配备的光电检测器精度较低,无法有效感知到传感器节点上LED发送的频闪信息。作为可见光通信技术的一种,光学相机通信(Optical Camera Communication,OCC)同样具有定向通信的隐蔽性。移动设备搭载的CMOS传感器也具有将光信号接收并转换成电信号的功能。因此,可采用光学相机采集光信号,实现信息的传输。同时,许多研究者也开始研究光学相机在可见光通信中的应用。例如文献[3]将数据信息编码后由个人电脑键盘上的LED指示灯发送,并采用光学相机进行拍照捕获频闪信息进行解码。张民[4]根据CMOS传感器卷帘快门的特性,验证了基于手机摄像头进行光学相机通信的可行性。
我们通过挖掘移动终端和传感器节点现有可见光模块的潜能,设计了一种调试信息传输方案。如图1所示,在对封闭在博物馆玻璃展柜中的传感器节点,采用节点端的LED作为信号发送器,移动设备端的光学相机作为信号接收器来接收传感器节点的调试信息。实际的硬件交互图如图2所示。
图1 场景示意图
图2 系统硬件交互图
在调试信息的传输过程中,基于光学相机的卷帘快门工作机制可以有效提高数据传输效率,然而由于可见光具有较高的指向性,轻微的晃动也可能对数据传输造成影响。此外,由于光学相机以图像帧为单位完成拍摄,而节点LED发送一帧数据所用时长需要与光学相机的曝光时间保持一致才能成功传输调试信息。为此,进一步提出一种面向卷帘快门的反馈式帧同步方案。该同步方案由移动设备与节点通信协同完成信号的同步传输与接收。对采集到的图像做实时检测,当数据发生丢失时,移动设备端发送反馈信息,重传丢失数据并再次同步,以此来保证数据传输质量。
目前市场上大多数移动设备配备的光学相机采用的是卷帘快门工作机制,卷帘快门工作机制能有效捕获来自LED的频闪信息。如图3所示,卷帘快门不同于全局快门,它在成像的过程中是以逐行曝光的方式采集光信息。由于不同像素行的开始曝光时间点不同,因此可以利用不同像素行的曝光时间差来记录频闪序列。
因此,在卷帘快门逐行曝光的过程中,如果传感器节点上的LED快速闪烁切换状态,则最终成像的结果如图4所示为明暗相间的条纹图片。
图3 卷帘快门工作机制
图4 卷帘快门采集光信息序列示意图
采集到的条纹图片通过图片处理进行解码,由于在节点端采用的是OOK调制方式,根据明暗条纹的宽度即可解码出数据信息。但是图片中的一些过渡带会影响到解码的判别。由图4可知,过渡带越窄对解码判别的影响就越小。通过减少相机的曝光时间,可以有效降低过渡带的宽度。在当前Android9.0版本中,智能手机相机最新API接口为Camera 2。该接口可手动更改或重新配置相机曝光时间。实验结果如图5所示。
图5 不同曝光时间条件下的成像比较
在光学相机通信中,同步一直是最重要的问题之一。首先,光学相机的采样是随机进行的。它可能在发送信号的任何符号期间发生,因此任何时候都有可能丢失任何符号。其次,帧采样的间隔是变化的,它取决于图像传感器和光学通道的特性[5]。当光学相机采集节点LED频闪信息时,由于发送端和接收端没有统一的开启时间以及光学相机帧率不稳定,会导致数据符号的丢失。
为此,提出了一种面向卷帘快门的反馈式帧同步方案。在通信过程中,取绿灯作为检测同步状态的指示灯,黄灯和红灯在图像的帧持续时间内各自连续发送一帧数据帧,保证一张图像中的黄灯和红灯都能成功接收一帧的数据。该方案包括两个部分:
(1)传输开始阶段的起始同步;
(2)传输中断后的再次同步。
同时,为了区分不同的数据帧,在每帧数据前面加入一段高频脉冲作为帧头。数据帧结构如表1所示。
表1 数据帧结构
起始同步的整个过程如图6所示。在起始阶段,有很多准备工作要做,当节点处于就绪状态时,三个LED常亮,移动设备进行拍照采集并根据图像处理的结果确定同步参数的值,同步参数如图7所示。移动设备根据LED灯在图像中的位置计算出有效区域宽度,记作X。之后移动设备会将该参数编码发送到节点端,其中编码序列中的高脉冲对应bit“1”,低脉冲表示bit“0”。将有效区域宽度编码发送到节点端后,节点端根据该参数,可计算出适合于有效区域宽度的LED发射频率。
图6 起始同步示意图
图7 传输参数示意图
由于移动设备上的光学相机帧率通常在30 fps左右,移动设备捕获一帧图像的时间tp≈33 ms,并且节点端单个LED需要在图像有效区域范围内完成一帧的数据帧传输,需要保证该指示灯在有效区域至少能捕获两组数据帧,因此根据帧长和有效区域曝光时间可以确定LED的发射频率。
在起始同步之后,节点LED在每帧图像帧持续时间内一直重复发送对应的数据帧。但是由于帧率的不稳定,会导致数据条纹在图像帧中发生偏移,当偏移量超过一帧图像帧的持续时间时,同一帧图像帧中的单个LED可能包含相邻的两帧数据帧。因此采用绿灯作为同步状态的检测,每当发送完一帧数据帧时,绿灯会发送一段低脉冲分隔两帧相邻的数据帧,当图像帧中的绿灯检测到了暗条纹,则说明该图像帧中的有效区域采集到的数据包含两帧相邻的数据帧,同步已经失效,需要重新同步。
移动设备端将发生同步失效的图像序号通过闪光灯反馈到节点端,当节点端接收解码后,从该序号表示的数据帧重新同步发送。
本研究将可见光通信应用于现有的移动设备和传感器节点,设计并实现了一个基于光学相机通信的传感器节点调试信息安全传输方案。针对通用CMOS光学相机具有帧率不稳定的特点,还设计了帧同步方案以确保快速可靠地传输调试信息。最后,在智能手机和通用节点上,验证了本文设计的通信方案在实际环境中的可行性。