改进的退避算法在智能家居控制系统中的应用
2020-04-29吴房胜徐金秀施冬冬陈业慧
吴房胜,徐金秀,施冬冬,陈业慧
随着经济技术的快速发展,人们对居家生活舒适便捷的要求越来越高.在当今物联网时代,智能家居能够满足人类的要求,通过科技创新,使人类生活得更加节能环保、安全方便.随着人们需求的增加,智能家居必将会成为中国的主流行业之一,市场发展前景非常广阔[1].
1 系统概述及退避算法原理
本系统通过模拟真实的家居环境,搭建一个智能平台.平台上使用了火焰传感器、温湿度传感器、热释电红外传感器、红外对射传感器、光照传感器及烟雾传感器等,通过各种传感器对室内环境实时采集,利用CC2530主控芯片,实现数据处理、无线传输及智能控制等.此外,还安装了摄像头、风扇、电灯和报警灯等设备进行现象模拟,当感测到火焰、烟雾气体、外来人员入侵等突发情况时,ZigBee 芯片通过继电器模块,控制报警器、风扇、摄像头等器件,摄像头进行视频拍摄,并将视频上传到云平台存储;家庭PC 端可通过电信网关,通知房屋主人家里有人入侵或者发生火灾,并通知房主拨打火警电话,使得家庭在安全防卫方面更加智能便捷.同时移动端的安卓APP 和家庭PC 终端均可获取家庭的各种信息,并进行家庭突发情况的监控和相应的管理,其中安卓APP 软件还可通过摄像头对门口人员外貌进行识别并可远程开门,避免了户主不在家时,家中来客人却只能在门口等待的尴尬.该系统的结构框图如图1所示[2-3].
图1 系统结构框图
本系统用到多个数据采集的传感器,如温湿度传感器、光照传感器、烟雾传感器等,采集到的大量数据进行无线传输时,难免会出现多个节点同时传送数据而发生数据碰撞的现象,这需要限制各节点对信道的访问频率,故需要采用退避机制,来降低碰撞的发生.本系统采用二进制指数退避(BEB)算法中的时隙CSMA/CA(信标使能网络)算法,并对算法进行改进,该算法主要实现无线信道的访问,是一种免冲突载波检测的多路接入算法.算法中有NB、CW和BE三个变量需要进行相应的维护.NB为节点刚接入信道时,即数据帧开始进行传输之前,执行时隙CSMA/CA算法所需退避的次数.CW为竞争窗口的大小,是数据帧传输之前,连续检测到的空闲信道的次数.BE是节点的退避指数,其值和CW关联[4].
该算法是先初始化在MAC 层的NB和CW的值,并判断电池电量是否用尽,再初始化不同的BE值.然后等待下一个退避边缘到来,再进行随机退避,随机延迟一个随机数时隙的退避周期,该随机数在[0,2BE-1]之间产生.如果超帧CAP阶段剩余的时隙小于退避的时隙值,则停止当前退避计时,下一个超帧CAP开始时再重新执行之前的退避计时.随机退避结束后,进行CCA信道检测.如果CCA 信道不为空,CW、NB和BE三者重新赋值,CW=2,NB=NB+1,BE=min(BE+1,amaxBE).然后检测NB值是否大于最大退避次数值,如果大于,则数据发送不成功,访问失败,否则就再次随机延迟,重新进行退避检测.如果CCA信道为空,执行CW=CW-1,再判断CW是否等于0,若是,表明数据访问信道成功,可以发送数据;若否,则返回到CCA 信道检测任务,重新检测.
该退避算法解决数据碰撞问题是通过设置退避指数,改变竞争窗口值实现,当退避指数达到极限值,再增加退避次数重新传输.该算法有两个方面的不足,首先是BE值的设定问题,BE在初始化时的值为macminBE,未进入信道时该值随机退避在0~2minBE间的一个周期,如果网络节点少,则第一次随机延时的BE值会选择过大;如果网络节点多,BE值需要多次进行加1,会导致网络功耗增大.其次,本系统是基于智能家居系统的场景,该系统中的烟雾、火焰等报警信息比较重要,在信道中需要优先传送.但上述算法对数据的传送都是平等的,温湿度、光照等非重要的信息可能会先竞争到信道中,进行传送,而更重要的信息可能无法优先传送[3].
针对上述问题,本文对CSMA/CA 退避算法从三个方面进行改进.第一,改变NB的大小.由于很多节点同时访问信道时,发生碰撞概率增大,故降低NB的极限值能够降低重传的概率.如果网络中节点数量较多,NB极限值设小一点,反之,NB极限值设大一点.第二,改变BE的大小.BE值的大小由各数据包的优先级来决定.一旦发生数据碰撞,开始随机延迟,随机数不从0~2BE中间选取,而在2BE+1~2amaxBE中间选取该值一个周期的随机时隙.第三,改变CW的大小.采集数据后,对每个数据包进行优先级的设定.不同优先级的数据包,对应不同大小的CW,如将优先级别高的CW值设为1,优先级别低的CW值设为2,则优先级别高的数据包对信道检测的时间会变小,降低了网络的功耗[5].
2 硬件设计
该系统对信号的采集及控制采用CC2530F256芯片,该芯片将射频收发功能与51 内核集成到同一芯片中,是一个独立的片上系统.系统中烟雾传感器采用MQ-2烟雾传感器,可检测家庭天然气、酒精、一氧化碳等气体;热释电红外传感器采用HC-SR501,该传感器功耗低,感应范围可达7 米距离;温湿度传感器采用SHT10 集成芯片,该芯片采集精度高,稳定性高,功耗低;火焰传感器采用R2868 火焰传感器.各类传感器将采集到数据传送给CC2530F256 主控芯片,芯片将采集到的信号经模数转换并自组网,控制电灯、风扇、报警器电动门锁等器件,并将数据传送到PC 终端,PC 终端存储传感器采集的数据及视频信息,并控制电信网关,实现自动拨打电话功能.安卓移动端可以从云平台中获取当前采集的动态数据、视频数据等,可随时查看当前数据,并可通过摄像头对门口人员外貌进行识别,实现远程开门[6].
本系统对智能家居搭建了一个模拟平台,如图2 所示.所有传感器和控制器件均安装在平台上,平台上方从左到右分别是四个ZigBee 模块,其中三个附带继电器模块,第二个附带温湿度模块,最右边是摄像头;中间一行是风扇、灯泡等器件及烟雾传感器;最下面一行从左到右分别是红外对射模块、两个ZigBee 模块(各自集成光照传感器、热释电红外传感器等)、数字量I/O模块.
图2 平台搭建实物图
3 软件设计
针对前面所述改进的退避算法,其软件流程图如图3 所示.初始化后,为减少重传次数,先要判断网络负载情况,若较大,初始化较小的NB极限值,若较小则初始化较大的值,然后根据优先级高低设置NB与CW的值,高优先级CW=1,低优先级CW=2,再判断电池电量是否用尽来设置不同的BE值,等待下一个退避边缘后进行随机退避.退避结束后进行CCA 信道检测.若信道忙,CW根据优先级高低重新设为1 或者2,NB重新自加1.只要NB的值未超过上限值,则在[2BE-l,2min(BE+l,amaxBE)-1]间随机延迟一个周期,从而减少不必要的碰撞,降低网络功耗,若超过,数据发送失败.若信道空闲,CW自减1,再判断CW是否为0,若是,数据发送成功,若否,则重新进行新一轮退避检测.
图3 改进的CSMA/CA退避算法流程图
该系统的软件分为三个部分,第一部分是下位机CC2530F256 单片机程序的编写,程序编写采用模块化编程,方便移植,主要完成对各类传感器数据的采集处理,并将数据传输给上位机.第二部分是安卓软件APP开发,通过安卓软件设计显示监控界面及采集的数据.第三部分是物联网云平台的搭建,实现视频及采集数据的存储与管理[7],该系统整体控制流程图如图4所示.
图4 系统控制流程图
4 测试与分析
该系统模拟平台搭建完成后,对所有传感器及ZigBee模块进行通电检测,确保所有模块正常工作.传感器模块采集多路数据,经过CSMA/CA退避算法处理,将信号上传给终端,终端显示及控制界面如图5所示,从图5中可以看到温湿度、红外、火焰、可燃气体等数据,该数据能稳定并可实时显示,还可实时控制开关门、开关灯、开关排气扇和窗帘等.
图5 PC终端测试界面
在CC2530控制模式下,当发生火情时,家中的排风扇会自动打开,减少室内烟雾的浓度,可以让户主更加安全地逃离,同时PC 终端通过电信网关报警,如果户主在外,安卓APP 端也会通知家中发生火情,避免家中有人但没有觉察到火情而产生危险;气体传感器会实时检测可燃气体含量,当气体浓度达到设定值时,排风扇会自动打开;当有障碍物挡住平台上红外对射时,红外对射数据显示为1,并且提示有人入侵,入侵界面如图6所示.
图6 入侵界面
手机端的AAP通过安卓软件开发,如图7所示,注册账户并登陆成功后,进入监控界面,该界面上有各个传感器采集到的各项数据,可实时显示室内温度湿度,以及家中是否有火灾发生,厨房是否有燃气泄漏等.当摄像头检测到门口有物体移动时,摄像头可进行自动拍摄,并将图像数据发送至手机移动端,如果户主认识图像中的人,可以直接通过手机进行远程开门.
图7 手机安卓端监控界面
5 总结
本系统是基于ZigBee设计的智能家居,利用各种传感器采集数据,理论上采用改进的退避算法降低信道竞争时间,减少数据重传,提高数据吞吐量及传输效率,降低了网络功耗.具有采集精度高,处理速度快并可无线组网传输等功能,完成了视频监控、数据远程监测、远程开关门等功能,实现电脑和手机双重监控,保障人们的生活质量,产业前景十分广阔.