本发明属于计算机技术领域,更进一步涉及一种计算机无线网络中应用蓝牙4.0组网技术实现人流量数据搜集的最大化方法。本发明应用大型户外集会等具体应用场景,根据智能手机携带的各式传感器可以来收集个体位置信息、速度和移动方向等基本信息,通过对收集到的一系列个体数据进行分析,从而对有可能发生事故的区域发出预警并实时指定出合理的人流调度方法。
背景技术:
蓝牙4.0,是一种连接多个蓝牙设备的协议,在这种协议下,一个设备同一时刻只能以一种角色工作(主设备和从设备)。尽管像蓝牙4.1这样的新版本蓝牙协议能够有效支持设备同时扮演两种角色,但是目前仍然有大量的仅支持蓝牙4.0的智能手机在使用。为了确保本文提出的方法能够在大多数设备上面使用,所以本文提出的蓝牙组网仍然兼容蓝牙4.0版本。
多个蓝牙设备可以组建成一个微型网络,在这个微型网络中,选出一个设备作为主设备,其余的设备为从设备。从设备可以发送信息给主设备。通过调度,一个设备可以完成角色转换。两个以上的微型网络就可以构建一个分布式网络。为了连接高级网络和底层网络,需要一个设备作为中继节点通过主从角色转换来负责从底层网络到上层网络数据的传输。
惠州TCL移动通信有限公司拥有的专利技术“一种基于低功耗蓝牙的组网互连方法及系统”(专利申请号:CN201410819048.5,授权公告号:CN104540090A)中公开了一种一种基于低功耗蓝牙的组网互连方法及系统。该方法的具体步骤包括:A、多个外围蓝牙设备以低功耗模式向周围广播各自对应的包含多个无线连接是否支持的业务类型信息;B、中心蓝牙设备获取各外围蓝牙设备对应的业务类型信息和蓝牙地址;C、中心蓝牙设备向各外围蓝牙设备发送连接请求,建立中心蓝牙设备和多个外围蓝牙设备的连接;D、各外围蓝牙设备将其业务类型信息中多个无线连接对应的业务地址信息发送至中心蓝牙设备;E、中心蓝牙设备根据各外围蓝牙设备对应的蓝牙地址、业务类型信息和业务地址信息,生成对应的外围蓝牙设备业务列表,以完成中心蓝牙设备和多个外围蓝牙设备的组网;F、中心蓝牙设备根据所述外围蓝牙设备业务列表,使任意两个蓝牙设备无线连接。该方法存在的不足之处是,该专利中提出的方法是基于静止蓝牙设备组网互连,现实生活的手机等蓝牙设备都是随着人而位置发生移动,本发明无法有效确定在一个区域内蓝牙设备数量。该专利中提出的方法蓝牙设备身份固定,数据发送的方式单一,只能由外围蓝牙设备向中心蓝牙设备发送数据,而外围蓝牙设备无法自组网传输数据。
广东中兴新支点技术有限公司拥有的专利技术“一种人流量检测方法及其装置”(专利申请号:CN201510510894.3,授权公告号:CN105187240A)中公开一种人流量数据检测和收集的方法。该方法的具体步骤包括:获取覆盖网络中的移动终端的MAC地址;根据所述MAC地址的信号强度对所述MAC地址进行过滤,获得过滤结果;对所述过滤结果进行MAC地址统计,获取人流量结果。在本发明实施例中,在需要检测统计的场所内的合适位置放置相应数量的无线路由器,能够统计在Wi-Fi信号覆盖范围内的移动终端的人流量变化趋势,适用于超市、商场、公共场所、公园等人流比较集中的场所,为经营者或管理者提供人流量趋势统计、人流量控制、消费者行为等分析判断;同时这种方施工简单,只需简单放置在检测点,并可以设置合理的探测范围,减少检测设备,降低成本。但是,该方法仍然存在的不足之处是,该专利中提出的方法是基于Wi-Fi环境下的移动终端,许多大型活动都是在露天环境下进行,这些活动Wi-Fi不可达,无法在这些活动中应用该技术检测和收集人流信息。
技术实现要素:
本发明的目的在于克服现有技术的不足,该方法提出了基于蓝牙4.0协议的数据搜集系统—多跳蓝牙组网来实现非代理节点蓝牙设备数量最大化。多跳蓝牙自组网包含了一个新颖的方式来生成路由表,能够获取尽可能多的数据包。
本发明实现的思路是采用了一个点对点多跳蓝牙组网来搜集高密度人流中非代理节点设备的数据来支持人流管理。多跳蓝牙组网包含四大功能模块,分别是:生成路由表模块、构建路由树模块、发送数据包模块和接收数据包模块。该网络得益于非代理节点蓝牙设备的蓝牙信道,通过设计一个路由表来构建一个点对点多跳蓝牙组网。通过划分区域、不断更新非代理节点蓝牙设备身份的设计为非代理节点设备数量最大化,快速的传输数据包的实现提供了必要条件。
本发明的具体步骤如下:
(1)划分区域:
(1a)选择任意一个人口密集的区域,将所选取的区域,按照每隔20m的距离分成n个子区域,将每个子区域中位置固定的智能设备设置为该区域的代理节点设备;
(1b)在所选取的区域中,设定n个代理节点设备;
(1c)将所有子区域中除代理节点设备之外的智能设备,设置为非代理节点设备;
(2)确定非代理节点设备的最大数量:
(2a)按照下式,计算每个子区域中非代理节点设备的最大数:
其中,表示在第i个子区域中非代理节点设备的最大数,VZH表示代理节点设备发送数据的速度,ti表示第i个子区域中代理节点设备发送数据的时间,Vs表示非代理节点设备的发送数据速度,T表示非代理节点设备发送数据的时间,*表示乘法操作;
(2b)从每个子区域的代理节点设备中,选择满足匹配条件的代理节点设备;
(3)生成路由表:
(3a)选择符合具有蓝牙4.0协议的非代理节点设备作为非代理节点蓝牙设备;
(3b)任意选取一个子区域,启动所选子区域中所有非代理节点蓝牙设备的蓝牙;
(3c)搜索所选子区域中其他启动蓝牙的非代理节点蓝牙设备的路由信息;
(3d)将搜索到的其他启动蓝牙的非代理节点蓝牙设备的路由信息,在非代理节点蓝牙设备中生成路由表;
(3e)判断所有子区域中的非代理节点蓝牙设备是否都生成路由表,若是,则执行步骤(4),否则,执行步骤(3b);
(4)更新路由表:
(4a)重新搜索任意一个子区域内其他非代理节点蓝牙设备的路由信息;
(4b)将重新搜索后的路由信息替换非代理节点蓝牙设备中原有路由表的路由信息;
(4c)判断是否更新完所有子区域中的非代理节点蓝牙设备的路由表,若是,则执行步骤(5),否则,执行步骤(4a);
(5)确定非代理节点蓝牙设备身份:
(5a)当子区域内不存在相同区域号的非代理节点蓝牙设备时,选择符合非代理节点蓝牙设备的主设备的条件的非代理节点蓝牙设备作为其他非代理节点蓝牙设备的主设备;
(5b)当子区域内存在相同区域号的非代理节点蓝牙设备时,从任意一个子区域的区域号相同的非代理节点蓝牙设备中,从该非代理节点蓝牙设备到代理节点设备所经过非代理节点蓝牙设备的数量中选择最小的非代理节点蓝牙设备,作为其他非代理节点蓝牙设备的主设备身份;
(5c)连接主设备的其他非代理节点蓝牙设备,将已连接主设备的其他非代理节点蓝牙设备作为该主设备的从设备身份;
(6)判断所有子区域中的非代理节点蓝牙设备是否都确认了设备身份,若是,则执行步骤(7),否则,执行步骤(5);
(7)构建路由树:
(7a)将随机选取的一个子区域中任意一个主设备与该主设备的从设备对应连接;
(7b)将随机选取的一个子区域的代理节点设备与该区域的主设备对应连接;
(7c)将所选子区域中已连接主设备的区域代理节点设置为路由树的树根节点,已连接从设备和区域代理的主设备设置为路由树的树枝节点,其他非代理节点蓝牙设备设置为路由树的树叶节点;
(7d)判断所有子区域是否完成了构建路由树,若是,则执行步骤(8),否则,执行步骤(7a);
(8)搜集数据:
(8a)启动任意一个子区域内所有非代理节点蓝牙设备的全球定位系统GPS;
(8b)将非代理节点蓝牙设备的全球定位系统GPS搜集到的地理位置、运动速度信息、运动方向的信息包装成数据包;
(8c)判断所有子区域是否完成了数据的搜集,若是,则执行步骤(9),否则,执行步骤(8a);
(9)判断非代理节点蓝牙设备是否是主设备,若是,则执行步骤(12),否则,执行步骤(10);
(10)发送数据包:
(10a)所有子区域的从设备不间断向其主设备发送连接请求;
(10b)开启所有从设备的发送线程;
(10c)所有从设备将存储的数据包发送与其对应的主设备;
(10d)判断主设备是否接收了从设备的数据包,若是,则执行步骤(11),否则,执行步骤(10a);
(11)判断从设备是否完成发送数据包,若是,则执行步骤(12),否则,执行步骤(10);
(12)接收数据包:
(12a)检测子区域内从设备的连接请求;
(12b)开启所有主设备的接受线程;
(12c)判断是否有从设备发送数据包,若是,则执行步骤(12d),否则,执行步骤(12a);
(12d)所有主设备接收与其对应的从设备的数据包;
(13)判断主设备是否接收了从设备的数据包,若是,则执行步骤(14),否则,执行步骤(12);
(14)连接所选子区域中符合蓝牙4.0协议连接距离的代理节点;
(15)向代理节点发送所有接收的数据包;
(16)判断代理节点设备是否接收所选区域内所有非代理节点蓝牙设备的数据包,若是,则执行步骤(19),否则,执行步骤(17);
(17)清除所选区域内非代理节点蓝牙设备的主设备身份;
(18)判断所选区域内是否存在没有身份的非代理节点蓝牙设备,若是,则执行步骤(4),否则,执行步骤(19);
(19)关闭主设备的接收线程或从设备的发送线程。
本发明与现有的技术相比具有以下优点:
第1.本发明提出了确定非代理节点设备最大数量的要求,克服了基于静止蓝牙设备组网互连,现实生活的手机等蓝牙设备都是随着人而位置发生移动,本发明无法有效确定在一个区域内蓝牙设备数量,是本发明通过将一个人口密集的区域划分成一系列子区域,子区域中的所有非代理节点蓝牙设备将收集到数据发送至子区域代理节点设备中;根据非代理节点蓝牙设备节点移动方向和区域代理节点的连线方向夹角最小原则为所有非代理节点设备选择对应子区域代理节点设备,从而实现了非代理节点设备最大数量。
第2.本发明通过选择符合具有蓝牙4.0协议的非代理节点设备作为非代理节点蓝牙设备,克服了基于Wi-Fi环境下的移动终端,许多大型活动都是在露天环境下进行,这些活动Wi-Fi不可达,无法在这些活动中应用该技术检测和收集人流信息,使本发明可以在露天没有Wi-Fi的环境中进行网络自组,从而实现非代理节点蓝牙设备发送数据包和接收数据包。
第3.本发明通过确定非代理节点蓝牙设备身份,清除所选区域内非代理节点蓝牙设备的主设备身份,再重新确定非代理节点蓝牙设备身份,克服了蓝牙设备身份固定,数据发送的方式单一,只能由外围蓝牙设备向中心蓝牙设备发送数据,而外围蓝牙设备无法自组网传输数据,使本发明可以不断更新非代理节点蓝牙设备身份,将外围非代理节点蓝牙设备自组网发送数据包和接收数据包。
附图说明
图1为本发明的流程图;
图2为本发明非代理节点蓝牙设备与代理节点设备连接图;
图3为本发明的非代理节点蓝牙设备在不同位置发送数据包所需时间的三维柱状图。
具体实施方式
下面结合附图对本发明做进一步的描述。
参照图1,本发明的具体实施步骤如下。
步骤1,划分区域。
选择任意一个人口密集的区域,将所选取的区域,按照每隔20m的距离分成n个子区域,将每个子区域中位置固定的智能设备设置为该区域的代理节点设备。
在所选取的区域中,设定n个代理节点设备。
将所有子区域中除代理节点设备之外的智能设备,设置为非代理节点设备。
步骤2,确定非代理节点最大数量。
每个子区域中非代理节点设备最大数量
其中,表示每一个子区域中第i个区域非代理节点设备最大数量,VZH表示每一个子区域中代理节点设备的发送速度,ti表示每一个子区域中第i个区域代理节点设备发送所有数据所需要的时间,Vs表示每一个子区域中非代理节点设备的发送速度,T表示每一个子区域中非代理节点设备发送所有数据所需要的时间,*表示乘法操作。
从每个子区域的代理节点设备中,选择满足匹配条件的代理节点设备:
k={k|min(θjk)}
其中,θjk表示在每个子区域中第j个非代理节点设备和第k个代理节点设备的连线与该非代理节点设备移动方向所在直线之间的夹角,k=1,...,n,n表示代理节点设备的总数,arccos表示反余弦操作,Oj表示第j个非代理节点设备的移动方向向量,·表示点乘操作,Ok表示非代理节点设备与任意一个区域代理节点设备的连线的方向向量,×表示叉乘操作,k表示符合匹配条件的第k个代理节点设备,|表示取集合操作,min表示求最小值操作。
步骤3,生成路由表。
第一步,选择符合具有蓝牙4.0协议的非代理节点设备作为非代理节点蓝牙设备。
第二步,任意选取一个子区域,启动所选子区域中所有非代理节点蓝牙设备的蓝牙。
第三步,将搜索所选子区域中其他启动蓝牙的非代理节点蓝牙设备的路由信息包括物理地址MacAdr,上级Master、最少经过的非代理节点设备数MinHops和区域号ZoneID,在非代理节点设备中生成电子表格。
第四步,将搜索到的其他启动蓝牙的非代理节点蓝牙设备的路由信息,在非代理节点蓝牙设备中生成路由表。
判断所有子区域中的非代理节点蓝牙设备是否都生成路由表,若是,则执行步骤4,否则,执行第二步。
步骤4,更新路由表。
第一步,重新搜索任意一个子区域内其他非代理节点蓝牙设备的路由信息。
第二步,将重新搜索后的路由信息替换非代理节点蓝牙设备中原有路由表的路由信息。
第三步,判断是否更新完所有子区域中的非代理节点蓝牙设备的路由表,若是,则执行步骤5,否则,执行第一步。
步骤5,确定非代理节点蓝牙设备身份。
当子区域内不存在相同区域号的非代理节点蓝牙设备时,选择符合非代理节点蓝牙设备的主设备的条件的非代理节点蓝牙设备作为其他非代理节点蓝牙设备的主设备:
其中,表示任意一个子区域中第A个非代理节点蓝牙设备和第p个代理节点设备的连线与该子区域中第A个非代理节点蓝牙设备和第q个非代理节点蓝牙设备的连线的夹角,表示每一个子区域中第A个非代理节点蓝牙设备和第p个代理节点设备的连线与该非代理节点蓝牙设备移动方向所在直线之间的夹角,ε表示数值为10°的阈值。
当子区域内存在相同区域号的非代理节点蓝牙设备时,从任意一个子区域的区域号相同的非代理节点蓝牙设备中,从该非代理节点蓝牙设备到代理节点设备所经过非代理节点蓝牙设备的数量中选择最小的非代理节点蓝牙设备,作为其他非代理节点蓝牙设备的主设备身份。
连接主设备的其他非代理节点蓝牙设备,将已连接主设备的其他非代理节点蓝牙设备作为该主设备的从设备身份。
步骤6,判断所有子区域中的非代理节点蓝牙设备是否都确认了设备身份,若是,则执行步骤7,否则,执行步骤5。
步骤7,构建路由树。
第一步,将随机选取的一个子区域中任意一个主设备与该主设备的从设备对应连接。
第二步,将随机选取的一个子区域的代理节点设备与该区域的主设备对应连接。
第三步,将所选子区域中已连接主设备的区域代理节点设置为路由树的树根节点,已连接从设备和区域代理的主设备设置为路由树的树枝节点,其他非代理节点蓝牙设备设置为路由树的树叶节点。
第四步,判断所有子区域是否完成了构建路由树,若是,则执行步骤8,否则,执行第一步。
步骤8,搜集数据。
第一步,启动任意一个子区域内所有非代理节点蓝牙设备的全球定位系统GPS。
第二步,将非代理节点蓝牙设备的全球定位系统GPS搜集到的地理位置、运动速度信息、运动方向的信息包装成数据包。
第三步,判断所有子区域是否完成了数据的搜集,若是,则执行步骤9,否则,执行第一步。
步骤9,判断非代理节点蓝牙设备是否是主设备,若是,则执行步骤12,否则,执行步骤10。
步骤10,发送数据包。
第一步,所有子区域的从设备不间断向其主设备发送连接请求。
第二步,开启所有从设备的发送线程。
第三步,所有从设备将存储的数据包发送与其对应的主设备。
第四步,判断主设备是否接收了从设备的数据包,若是,则执行步骤11,否则,执行步骤第一步。
步骤11,判断从设备是否完成发送数据包,若是,则执行步骤12,否则,执行步骤10。
步骤12,接收数据包。
第一步,检测子区域内从设备的连接请求。
第二步,开启所有主设备的接受线程。
第三步,判断是否有从设备发送数据包,若是,则执行第四步,否则,执行第一步。
第四步,所有主设备接收与其对应的从设备的数据包。
步骤13,判断主设备是否接收了从设备的数据包,若是,则执行步骤12,否则,执行步骤14。
步骤14,连接所选子区域中符合蓝牙4.0协议连接距离的代理节点。
步骤15,向代理节点发送所有接收的数据包。
步骤16,判断代理节点设备是否接收所选区域内所有非代理节点蓝牙设备的数据包,若是,则执行步骤19,否则,执行步骤17。
步骤17,清除所选区域内非代理节点蓝牙设备的主设备身份。
步骤18,判断所选区域内是否存在没有身份的非代理节点蓝牙设备,若是,则执行步骤4,否则,执行步骤19。
步骤19,关闭主设备的接收线程或从设备的发送线程。
本发明的多跳蓝牙组网效果可以通过下述仿真实验得到验证。
1.仿真条件:
本发明的仿真实验的环境是:Windows 7,MATLAB 2013b。采用MATLAB 2013b中生成的随机点作为人口密集区域中的非代理节点蓝牙设备。
2.仿真内容:
本发明的仿真实验的效果图,如图2所示,横坐标代表人口密集区域的长,纵坐标代表人口密集区域的宽,坐标中有1000个小三角形代表1000个非代理节点蓝牙设备,坐标中4个中心点代表4个代理节点设备。
蓝牙自组网的仿真实验通过运行matlab文件来进行。在实验中,通过非代理节点蓝牙设备之间不断确定和连接主设备的方式形成蓝牙自组网的树型结构,获取仿真数据。
将本发明的方法应用于25人在33m*24m的真实的矩形空地中,得到数据传输时间与地理位置关系的效果图,如图3所示,横坐标代表矩形空地的长,纵坐标代表空地的宽,竖坐标代表平均数据传输时间。
3.仿真结果分析
从图2中可以看出,本发明的方法中蓝牙自组网中总的连接智能设备的数量占人口密集区域设备总数的90%以上,本发明的方法比普通的人流数据搜集方法更优,这是因为采用非代理节点蓝牙设备具有的主设备和从设备身份,从而形成树状的蓝牙自组网,降低了代理节点设备的负载,提高了蓝牙自组网可容纳的非代理节点蓝牙设备的数量。从图3中可以看出,本发明的方法中在任意一个子区域中,非代理节点蓝牙设备距离代理节点设备越远,给代理节点设备发送数据的时间越长。系统最大时延不超过20s。