一种智能无线传感系统的数据传输处理方法转让专利

申请号 : CN201210033788.7

文献号 : CN103259807B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 曾凡伟侯东良程苗苗余伟方加亮

申请人 : 上海第二工业大学

摘要 :

本发明涉及一种智能无线传感系统及其数据传输处理方法,可以通过集成各种传感器的多个节点,分别采集所在环境的温湿度和光照强度等,并通过一套能智能组网,自动最短寻址的,可靠性高的网络通信协议,使得各个节点的监测数据直接或接力无线传输给主节点。主节点和上位机通过串口通讯,并通过串口将所有节点的监测数据发送给上位机;由上位机以折线图等方式实时显示各个节点的监测数据,同时存储数据到数据库中,并提供个性化的数据查询处理。

权利要求 :

1.一种智能无线传感系统的数据传输处理方法,其特征在于,所述方法包含:在智能无线传感系统中设置能够各自通过传感器采集环境监测数据的n个节点,以整数0 到n-1对所有n个节点依次编号;设定其中的一个节点为主节点,其他的若干个节点为从节点;任意一个节点在相应的操作过程中,通过设置无线收发模块来使用无线通讯方式发送或接收的数据包,具有下列的其中一种数据类型:记录有其中任意一个节点所采集的环境监测数据的有效数据,用于在各个节点之建立路由表的探测信息,用于在各个节点之间更新路由表的路由信息,以及由数据接收节点发送至数据发送节点,用以通知相应数据已经成功接收的反馈信息;

其中,任意一个节点发送的所述有效数据,是该节点在间隔一个设定时间后,采集所处环境的监测数据后形成的;

当所述节点为从节点,并且所述主节点在其无线发射距离之内时,所述节点将其有效数据直接发送给所述主节点;

当所述节点为从节点,并且所述主节点不在其无线发射距离之内时,所述节点将其有效数据发送给该节点的下位节点,继而通过其他的若干个从节点转发后,最终将有效数据间接发送给所述主节点;

当所述节点为主节点时,该主节点将其自身形成的有效数据和来自其他所有从节点的有效数据,通过串口通讯方式一起发送给与该主节点连接的上位机,通过所述上位机实时显示各个节点采集的环境监测数据,存储所有数据到数据库中,并对存储数据进行查询处理。

2.如权利要求1所述数据传输处理方法,其特征在于,

任意一个第一节点在上电工作时,首先建立该节点所在系统的路由表的操作,包含以下步骤:步骤d1、第一节点向系统中的其他节点,通过遍历方式发送探测信息;

步骤d2、系统中收到所述探测信息的任意一个第二节点,将第一、第二节点之间相互连通的信息,记录到本节点的路由表中并形成反馈信息;第二节点还发送所述反馈消息给第一节点;

步骤d3、第一节点收到所述反馈信息后,将第一、第二节点之间相互连通的信息,记录到本节点的路由表中;

步骤d4、当一次遍历结束后,第一节点根据本节点的路由表形成路由信息,并向邻接节点广播该路由信息;

步骤d5、收到所述路由信息的其他任意节点,利用该路由信息更新本节点的路由表后,向除第一节点以外的其它邻接节点广播该路由信息;

当系统中的所有节点各自按照步骤1.1~1.5的遍历方式,发送探测信息并广播本节点的路由信息之后,最终在每个节点中建立了一张相同的路由表。

3.如权利要求2所述数据传输处理方法,其特征在于,

所述数据传输处理方法中,进一步包含系统中任意一个节点对其建立的路由表,通过路由压缩算法进行的如下操作:该系统中任意一个节点所建立的路由表是一个具有n+1行和n+1列的表格,其中第一行和第一列中分别为依次填入的节点号0 ~ n-1;在其他行列中记录相应行所示节点和相应列所示节点的连通情况:若任意两个节点相互连通,则在路由表对应的行列中记录为状态1;

若任意两个节点相互不连通,则在路由表对应的行列中记录为状态0;

路由表的主对角线表示的是同一个节点,因此主对角线上数值为状态0;并且,该路由表包含以主对角线对称的两个三角形部分;

系统中任意一个节点在发送所述路由表时,将其中一个三角形部分中表示节点连通情况的状态0或状态1,根据位存储方式压缩为若干个字节;所述节点形成并广播发送的路由信息中包含所述的若干个字节;

所述数据传输处理方法中,还包含系统中其他任意节点对收到的路由信息,根据所述路由压缩算法的逆算法进行解压缩,以还原出相应路由表的操作。

4.如权利要求3所述数据传输处理方法,其特征在于,

所述数据传输处理方法中,进一步包含系统中任意一个节点更新路由表所进行的以下操作:任何时候,当所述第一节点根据本节点原先的路由表,连续一定次数发送相应数据给第二节点都失败时,第一节点将其与第二节点之间不再连通的信息更新到本节点的路由表中,形成更新后的路由信息并向邻接节点广播;

系统中的其他节点在收到第一节点更新后的路由信息后,对本节点的路由表进行更新,并向除第一节点以外的其它邻接节点广播该路由信息;直到在系统中的所有节点都获得一张相同的更新后的路由表;

系统中任意一个节点在更新路由表时,是将该节点收到的路由表与原有的路由表进行相或运算,得到更新后的路由表。

5.如权利要求1或4所述数据传输处理方法,其特征在于,

所述数据传输处理方法中,进一步包含找到系统中任意一个不是孤立节点的从节点,到作为主节点的节点0的最短路径的如下操作:令最短路径为s,则有:1≤s≤n-1;

在所述从节点采用循环遍历的方式,从假设s=1开始查询,若此时本节点的下位节点为节点0,则假设成立,找到了最短路径并退出;

若此时,本节点的下位节点不是节点0,则假设不成立,令s=s+1并重新查询最短路径;

重复以上操作直至s=n-1,如果当s=n-1时还未能找到一条最短路径,则认为本节点为孤立节点,此次最短路径查询失败;所述孤立节点指不能直接或者间接与主节点通信的节点;

找到最短路径的从节点,将该节点中形成的数据包或转发其他节点的数据包,发送给下位节点。

6.如权利要求5所述数据传输处理方法,其特征在于,

所述数据传输处理方法,进一步包含任意两个节点之间进行数据收发的以下操作:对于发送节点,包含以下步骤:

步骤e1.1、进入接收模式进行载波检测,如果发现有载波,则持续等待,直到未发现载波时进入发送模式;

步骤e1.2、在发送模式下尝试给接收节点发送数据包,发送完毕后延时等待时间t;其中,时间t由以下公式确定:t = t1 + t2 ;其中t1为接收节点读取SPI时间,t2为接收节点发送一次数据包时间;

步骤e1.3、如果在时间t内收到接收节点的反馈信息,发送节点便认为此次数据包成功发送并退出,否者,尝试另一次发送;

步骤e1.4、每发送一次数据,在发送节点的计数器初始值上减1,当计数器为0时,发送节点不再尝试发送并退出;

对于接收节点,如果处于接收模式并收到发送节点的数据包时,首先存储该数据包,之后进入发送反馈信息阶段,即,包含以下步骤:步骤e2.1、进入接收模式进行载波检测,如果发现有载波,则持续等待,直到未发现载波时进入发送模式;

步骤e2.2、在发送模式下尝试给发送节点发送反馈信息,发送完毕后延时等待时间t;

步骤e2.3、如果在时间t内未再次收到发送节点发出的数据包信息,接收节点便认为此次反馈信息成功发送并退出,否者,尝试另一次发送;

步骤e2.4、每发送一次反馈信息,在接收节点的计数器初始值上减1,当计数器为0时,接收节点不再尝试发送并退出。

7.如权利要求6所述数据传输处理方法,其特征在于,

在所述数据传输处理方法中,为系统中的所有节点设定了相对应的机器号编码;在任意一个数据包内,包含:表示该数据包数据类型的编码,以及表示该数据包当前发送节点的第二机器号编码;

若所述数据包是所述有效数据、反馈信息或探测信息时,所述数据包内还包含表示该数据包的原始发送节点的第一机器号编码;当所述数据包经过转发后,其中的所述第一机器号编码与所述第二机器号编码不相同;

若所述数据包是所述路由信息时,所述数据包中还包含生命值,计所述生命值为L = n–1,其中n为系统中所有节点的数量;当所述路由信息每被转发一次,生命值便减1;所述路由信息只在生命值大于0的前提下,才被转发。

说明书 :

一种智能无线传感系统的数据传输处理方法

技术领域

[0001] 本发明涉及一种智能无线传感系统及其数据传输处理方法。

背景技术

[0002] 人类社会的学习、工作、生产、生活等各种活动总是在一定的环境中进行的,而当前环境的各种因子,如温度、湿度、光强度,甚至经纬度、海拔高度的细微差异都可能对人类社会的某些活动产生较大的影响。这种影响的普遍存在性及重要性,使得根据实际情况对当前环境的某些因子采取一定的措施进行实时监测,并将监测信息灵活地传输给上位机进行集中再处理就非常有必要。
[0003] 随着社会的发展,人们对由多个节点组成的无线传感器网络来监测某区域范围内的某些环境因子的需求越来越强烈。

发明内容

[0004] 本发明的目的是提供一种智能无线传感系统及其数据传输处理方法,能采集多处监测点的温湿度及光照强度,并通过无线通讯及串口通讯将检测数据传输给上位机进行集中处理调度。
[0005] 为了达到上述目的,本发明的第一个技术方案是提供一种智能无线传感系统,其包含:
[0006] 多个节点;每个节点中进一步设置有:
[0007] 若干个传感器,其对该节点所处环境进行监测,并分别采集相应的数据;
[0008] 无线收发模块,其将该节点的所有传感器采集的数据,通过无线通讯发送至其他的若干个节点;
[0009] 设置多个所述节点中的一个为主节点,其他的若干个节点为从节点;每个所述从节点采集的数据,直接发送至所述主节点,或者通过其他的若干个从节点依次转发后,间接发送至所述主节点;
[0010] 所述智能无线传感系统中还包含:
[0011] 与所述主节点通过串口通讯的上位机;所述主节点将该节点和其他所有从节点分别采集的数据,一起发送给所述上位机;通过所述上位机实时显示各个节点获取的数据,存储所有数据到数据库中,并对存储数据进行查询处理。
[0012] 优选的,所述智能无线传感系统中设置有一个主节点和七个从节点。
[0013] 优选的,每个所述节点中设置有分别监测环境温度、湿度或光强值的若干个传感器。
[0014] 一种实施例中,每个所述节点中监测环境温度和湿度的传感器,是一个已校准数字信号输出的温湿度复合传感器。
[0015] 一种实施例中,每个所述节点中所述的光强值传感器,进一步包含:
[0016] 一个自身电阻值与受到的光强相匹配的光敏电阻,以及,将所述光敏电阻的电阻值转换成相应电压值,并通过电压值换算得到实际光强值的配套处理芯片。
[0017] 本发明的另一个技术方案是提供所述智能无线传感系统的一种数据传输处理方法,所述方法包含:
[0018] 在智能无线传感系统中设置能够各自采集环境监测数据的n个节点,以整数0到n-1对所有n个节点依次编号;设定其中的一个节点为主节点,其他的若干个节点为从节点;任意一个节点在相应的操作过程中,通过无线通讯方式发送或接收的数据包,具有下列的其中一种数据类型:
[0019] 记录有其中任意一个节点所采集的环境监测数据的有效数据,用于在各个节点之建立路由表的探测信息,用于在各个节点之间更新路由表的路由信息,以及由数据接收节点发送至数据发送节点,用以通知相应数据已经成功接收的反馈信息;
[0020] 其中,任意一个节点发送的所述有效数据,是该节点在间隔一个设定时间后,采集所处环境的监测数据后形成的;
[0021] 当所述节点为从节点,并且所述主节点在其无线发射距离之内时,所述节点将其有效数据直接发送给所述主节点;
[0022] 当所述节点为从节点,并且所述主节点不在其无线发射距离之内时,所述节点将其有效数据发送给该节点的下位节点,继而通过其他的若干个从节点转发后,最终将有效数据间接发送给所述主节点;
[0023] 当所述节点为主节点时,该主节点将其自身形成的有效数据和来自其他所有从节点的有效数据,通过串口通讯方式一起发送给与该主节点连接的上位机,通过所述上位机实时显示各个节点采集的环境监测数据,存储所有数据到数据库中,并对存储数据进行查询处理。
[0024] 任意一个第一节点在上电工作时,首先建立该节点所在系统的路由表的操作,包含以下步骤:
[0025] 步骤d1、第一节点向系统中的其他节点,通过遍历方式发送探测信息;
[0026] 步骤d2、系统中收到所述探测信息的任意一个第二节点,将第一、第二节点之间相互连通的信息,记录到本节点的路由表中并形成反馈信息;第二节点还发送所述反馈消息给第一节点;
[0027] 步骤d3、第一节点收到所述反馈信息后,将第一、第二节点之间相互连通的信息,记录到本节点的路由表中;
[0028] 步骤d4、当一次遍历结束后,第一节点根据本节点的路由表形成路由信息,并向邻接节点广播该路由信息;
[0029] 步骤d5、收到所述路由信息的其他任意节点,利用该路由信息更新本节点的路由表后,向除第一节点以外的其它邻接节点广播该路由信息;
[0030] 当系统中的所有节点各自按照步骤1.1~1.5的遍历方式,发送探测信息并广播本节点的路由信息之后,最终在每个节点中建立了一张相同的路由表。
[0031] 所述数据传输处理方法中,进一步包含系统中任意一个节点对其建立的路由表,通过路由压缩算法进行的如下操作:
[0032] 该系统中任意一个节点所建立的路由表是一个具有n+1行和n+1列的表格,其中第一行和第一列中分别为依次填入的节点号0~n-1;在其他行列中记录相应行所示节点和相应列所示节点的连通情况:
[0033] 若任意两个节点相互连通,则在路由表对应的行列中记录为状态1;
[0034] 若任意两个节点相互不连通,则在路由表对应的行列中记录为状态0;
[0035] 路由表的主对角线表示的是同一个节点,因此主对角线上数值为状态0;并且,该路由表包含以主对角线对称的两个三角形部分;
[0036] 系统中任意一个节点在发送所述路由表时,将其中一个三角形部分中表示节点连通情况的状态0或状态1,根据位存储方式压缩为若干个字节;所述节点形成并广播发送的路由信息中包含所述的若干个字节;
[0037] 所述数据传输处理方法中,还包含系统中其他任意节点对收到的路由信息,根据所述路由压缩算法的逆算法进行解压缩,以还原出相应路由表的操作。
[0038] 所述数据传输处理方法中,进一步包含系统中任意一个节点更新路由表所进行的以下操作:
[0039] 任何时候,当所述第一节点根据本节点原先的路由表,连续一定次数发送相应数据给第二节点都失败时,第一节点将其与第二节点之间不再连通的信息更新到本节点的路由表中,形成更新后的路由信息并向邻接节点广播;
[0040] 系统中的其他节点在收到第一节点更新后的路由信息后,对本节点的路由表进行更新,并向除第一节点以外的其它邻接节点广播该路由信息;直到在系统中的所有节点都获得一张相同的更新后的路由表;
[0041] 系统中任意一个节点在更新路由表时,是将该节点收到的路由表与原有的路由表进行相或运算,得到更新后的路由表。
[0042] 所述数据传输处理方法中,进一步包含找到系统中任意一个不是孤立节点的从节点,到作为主节点的节点0的最短路径的如下操作:
[0043] 令最短路径为s,则有:1≤s≤n-1;
[0044] 在所述从节点采用循环遍历的方式,从假设s=1开始查询,若此时本节点的下位节点为节点0,则假设成立,找到了最短路径并退出;
[0045] 若此时,本节点的下位节点不是节点0,则假设不成立,令s=s+1并重新查询最短路径;
[0046] 重复以上操作直至s=n-1,如果当s=n-1时还未能找到一条最短路径,则认为本节点为孤立节点,此次最短路径查询失败;所述孤立节点指不能直接或者间接与主节点通信的节点;
[0047] 找到最短路径的从节点,将该节点中形成的数据包或转发其他节点的数据包,发送给下位节点。
[0048] 所述数据传输处理方法,进一步包含任意两个节点之间进行数据收发的以下操作:
[0049] 对于发送节点,包含以下步骤:
[0050] 步骤e1.1、进入接收模式进行载波检测,如果发现有载波,则持续等待,直到未发现载波时进入发送模式;
[0051] 步骤e1.2、在发送模式下尝试给接收节点发送数据包,发送完毕后延时等待时间t;其中,时间t由以下公式确定:t=t1+t2;其中t1为接收节点读取SPI时间,t2为接收节点发送一次数据包时间;
[0052] 步骤e1.3、如果在时间t内收到接收节点的反馈信息,发送节点便认为此次数据包成功发送并退出,否者,尝试另一次发送;
[0053] 步骤e1.4、每发送一次数据,在发送节点的计数器初始值上减1,当计数器为0时,发送节点不再尝试发送并退出;
[0054] 对于接收节点,如果处于接收模式并收到发送节点的数据包时,首先存储该数据包,之后进入发送反馈信息阶段,即,包含以下步骤:
[0055] 步骤e2.1、进入接收模式进行载波检测,如果发现有载波,则持续等待,直到未发现载波时进入发送模式;
[0056] 步骤e2.2、在发送模式下尝试给发送节点发送反馈信息,发送完毕后延时等待时间t;
[0057] 步骤e2.3、如果在时间t内未再次收到发送节点发出的数据包信息,接收节点便认为此次反馈信息成功发送并退出,否者,尝试另一次发送;
[0058] 步骤e2.4、每发送一次反馈信息,在接收节点的计数器初始值上减1,当计数器为0时,接收节点不再尝试发送并退出。
[0059] 在所述数据传输处理方法中,为系统中的所有节点设定了相对应的机器号编码;在任意一个数据包内,包含:表示该数据包数据类型的编码,以及表示该数据包当前发送节点的第二机器号编码;
[0060] 若所述数据包是所述有效数据、反馈信息或探测信息时,所述数据包内还包含表示该数据包的原始发送节点的第一机器号编码;当所述数据包经过转发后,其中的所述第一机器号编码与所述第二机器号编码不相同;
[0061] 若所述数据包是所述路由信息时,所述数据包中还包含生命值,计所述生命值为L=n–1,其中n为系统中所有节点的数量;当所述路由信息每被转发一次,生命值便减1;所述路由信息只在生命值大于0的前提下,才被转发。
[0062] 与现有技术相比,本发明所述智能无线传感系统及其数据传输处理方法,其优点在于:本发明可以通过集成各种传感器的多个节点,分别采集所在环境的温湿度和光照强度等,并通过一套能智能组网,自动最短寻址的,可靠性高的网络通信协议,使得各个节点的监测数据直接或接力无线传输给主节点。主节点和上位机通过串口通讯,并通过串口将所有节点的监测数据发送给上位机;由上位机以折线图等方式实时显示各个节点的监测数据,同时存储数据到数据库中,并提供个性化的数据查询处理。

附图说明

[0063] 图1是本发明所述智能无线传感系统的一种示例结构示意图;
[0064] 图2是本发明所述智能无线传感系统中任意一个节点的一种示例结构示意图;
[0065] 图3是本发明所述智能无线传感系统中各个节点相对位置的另一种示例图,该图中具有与图1所示并不相同的节点布置结构;
[0066] 图4是本发明所述智能无线传感系统的数据传输处理方法中,面向任意节点的工作流程示意图;
[0067] 图5是本发明上述方法中关于发送者的数据收发协议的工作流程示意图;
[0068] 图6是本发明上述方法中关于接收者的数据收发协议的工作流程示意图;
[0069] 图7是本发明上述方法中动态路由建立及更新的工作流程示意图;
[0070] 图8是本发明上述方法中最短路径算法的工作流程示意图;
[0071] 图9是本发明所述智能无线传感器中上位机对多个节点实时监测界面的一种示例图;
[0072] 图10是本发明所述智能无线传感器中上位机对节点数据进行结果查询的一种示例图。

具体实施方式

[0073] 以下结合附图说明本发明所述智能无线传感系统及其数据传输处理方法的具体实施方式。
[0074] 配合参见图1、图2所示,本发明所述智能无线传感系统中,包含对所处环境的相关数据进行采集的多个监测节点10,设置其中一个监测节点10为主节点,其他的若干个监测节点10为从节点。传感系统中还包含与所述主节点连接的上位机20,主节点通过串口通讯将所有监测节点10获取的数据发送给上位机20;在上位机20位置可以实时显示各个监测节点10的数据,还可以存储该些数据到数据库,并支持数据的个性化查询。
[0075] 每个监测节点10进一步包含作为控制器的单片机(图中未示出),无线收发模块15,以及若干个进行环境数据采集的传感器;还可以设置液晶显示屏等(例如是1602A型,图中未示出)来显示本节点采集到的数据。在如图2所示的一种示例结构中,每个监测节点10中集成设置有用于采集所处环境温度和湿度的传感器11、12,例如可以使用DHT11型的数字温湿度传感器,这是一款含有已校准数字信号输出的温湿度复合传感器。每个监测节点10还集成设置有用于采集所处环境光强值的传感器,例如是使用光敏电阻13(例如是5516型)及其数据处理的配套芯片14(例如是ADC0809):测量环境温度为25℃的情况下,当光强为
10Lux时,5516型的电阻值为5~10KΩ;暗电阻为0.2MΩ,其他工作参数可以参见具体的器件手册。使用时,5516型光敏电阻和1KΩ电阻串联再接5V电源,使用ADC0809芯片采集5516型光敏电阻两端的电压值,之后可以通过以下公式计算得到实际光强值:
[0076] L=(-99/28)×(advalue/(255-advalue))+107;其中L为实际光强值,单位为Lux;advalue为ADC0809芯片采集到的数字电压值。
[0077] 每个监测节点10中集成设置的无线收发模块,配合各个监测节点10之间可方便扩展、高可靠性的无线通信协议,不仅可以支持监测节点10作为主节点时与上位机20的串口数据通讯;还可以在该监测节点10作为从节点时支持其与主节点的无线数据通讯,即,对于任意一个从节点(例如图1中节点1~7)来说,当主节点(图1中相应为节点0)处在这个从节点的发射距离之内时,这个从节点采集的环境监测数据可以直接发送给主节点(图1中节点1、3如此);而当主节点不在其发射距离之内时,则可以使监测数据经由其他的若干个从节点接力转发后,最终交付给主节点(例如图1中节点7数据,可以经过节点4、3转发给节点0,或者经过节点4、2、1转发给节点0,等等)。例如可以使用Nordic VLSI公司推出的nRF905型单片视频收发器来实现所述无线收发模块的功能,其在开阔地的无线传输距离一般可达
600m以上;而在地形复杂时距离有所缩短,具体会与使用环境、干扰、系统调谐等因素有关。
[0078] 下文中以设置一个主节点0和七个从节点1~7的智能无线传感系统为例,对其数据传输处理方法进行说明。为了保证数据在各个监测节点之间的有效交付,首先设计了一套能智能组网、自动最短寻址的、可靠性高的网络通信协议,该协议包含数据包格式协议,面向任意节点的工作协议,面向两个节点的数据收发协议、面向任意节点的动态路由建立及更新协议、路由表的压缩解压缩算法、路由表的更新算法和最短路径算法。
[0079] a、所设计的数据包格式协议,便于智能无线传感模块中的各个监测节点相互发送数据;设其中任意一个或若干个节点为发送者,其他任意的一个或若干个节点为接收者。
[0080] 数据类型共有四种,分别为有效数据、反馈信息、探测信息和路由信息。每一种类型的数据包格式均为5个字节长,详细格式如表1:
[0081]
[0082] 表1数据包格式
[0083] 对表1中的数据类型介绍如下:
[0084] 有效数据:用于传送节点采集到的信息,根据上述系统示例(图2)的描述,有效数据就包含有光强、温度和湿度值;
[0085] 反馈信息:接收者收到一个数据包后发送的反馈信息,通知发送者数据包已经收到;
[0086] 探测信息:用于在各个节点之间建立路由表;
[0087] 路由信息:用于节点之间路由表的更新。
[0088] 见表1,任何数据包的第三字节高四位为发送者编码,接收者根据该编码可判断出数据包的发送者,并据此发送反馈信息;第三字节低四位为归属者编码,主节点根据该编码可判断出数据包的原始发送者,即归属者。这样设计是因为数据存在转发的情况,数据发送者和归属主不一定相同。发送者编码和归属者编码均为机器号编码,编码与机器号映射关系如表2所示。
[0089]编码 机器号
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
[0090] 表2编码与机器号的映射关系表
[0091]编码 类型
0000 有效数据
0001 反馈信息
0010 探测信息
0011 路由信息
[0092] 表3数据类型编码
[0093] 另外,任何数据包的第四字节高四位为数据类型编码,用于区分上述四种不同的数据类型,映射关系如表3所示。第四字节低四位为路由信息压缩包4(压缩包4只有4bit),且只在路由信息中有效。
[0094] b、面向任意节点的工作协议;
[0095] 如图4所示,对于任意一个节点A上电工作,首先尝试建立路由表:给其它节点遍历发送探测信息,遍历结束后更新并广播本机路由表;然后每隔一个设定时间(例如是6秒)采集一次本机所在环境的光强值、温度值和湿度值,再通过路由表最短算法找出可以转发有效数据的下位节点编号,最后将本机数据包发送给该节点。发送完本机数据包后,节点A一直处于接收模式,为其他节点提供数据转发服务。
[0096] c、面向两个节点的数据收发协议;
[0097] 对于任意两个节点A和节点B,假设节点A为发送者,节点B为接收者。
[0098] 如图5所示,对于发送者A,首先进入接收模式进行载波检测,如果发现有载波,则持续等待,直到未发现载波时进入发送模式;在发送模式下尝试给节点B发送数据包,发送完毕后延时等待时间t;时间t由以下公式确定:t=t1+t2;其中t1为接收者读取SPI(串行外围设备接口)的时间,t2为接收者发送一次数据包时间。如果在时间t内收到节点B的反馈信息,节点A便认为此次数据成功发送并退出,否者,尝试另一次发送。
[0099] 为了防止数据无止尽被发送,每发送一次数据,初始值为10的计数器便自减1,当计数器为0时,不再尝试发送并退出。测试证明,由于载波碰撞及节点间工作时序相错超过临界值的原因,虽然A尝试发送了10次数据,但事实上节点B很可能在10次数据包被发送完之前就已经收到了该信息。
[0100] 如图6所示,对于接收者B,当其处于接收模式时,如果收到节点A的信息,首先存储该数据包,之后进入发送反馈信息阶段:进入接收模式进行载波检测,如果发现有载波,则持续等待,直到未发现载波时进入发送模式;在发送模式下尝试给节点A发送反馈信息,发送完毕后延时等待时间t;如果在时间t内未再次收到节点A发出的数据包信息,节点B便认为此次数据成功发送并退出,否者,尝试另一次发送反馈信息。
[0101] 为了防止反馈信息无止尽被发送,每发送一次数据,初始值为10的计数器便自减1,当计数器为0时,不再尝试发送并退出。测试证明,由于载波碰撞及节点间工作时序相错超过临界值的原因,虽然B尝试发送了10次反馈信息,但事实上节点A很可能在10次反馈信息被发送完之前就已经收到了该反馈信息。
[0102] d、面向任意节点的动态路由建立及更新协议;
[0103] 如图7所示,对任意节点A上电开始工作,首先会给系统中的其他节点按照遍历的方式发送探测信息,系统中的其它任意节点B如果收到探测信息,便知道这条路是通的,节点B将该信息记录到本机路由表中之后,再发送反馈信息以通知节点A该路的可通性;节点A收到反馈信息后,也知道这条路是通的,便将该信息记录到本机路由表中。
[0104] 当一次遍历结束后,节点A依据本机路由表给邻接节点广播自身路由表,任意收到该路由信息的节点,在利用该路由信息更新本机路由表后,向除该路由信息拥有者以外的其它邻接节点广播该路由信息。
[0105] 为了防止因为环路的存在而使广播信息永无止境的在环中传递,我们在广播信息中加入了生命值标志位;广播信息每被转发一次,该生命值便减1;广播信息只在生命值大于0的前提下才被转发。广播信息的生命值由以下公式确定:L=N–1;其中L为生命值,N为当前系统总节点数。这样设定生命值,可以保证所有节点都可以收到广播的路由信息,包括所有节点在一条线上这种最坏情况。
[0106] 这样,当系统中的所有节点都按照遍历的方式发送了探测信息并广播本机路由信息后,各节点便建立起了一张相同的路由表。依照这张路由表,当确定了数据包的最终接收者,任何节点便可以通过最短路径算法求出下位节点。
[0107] 任何时候,当任意节点A连续多次发送数据给任意节点B都失败时,节点A便认为到节点B的路不通,不再适合转发数据。节点A将根据该信息修改本机路由,然后再次广播本机路由信息。
[0108] 因此,基于上述协议,在任何时候,只要系统中不存在孤立节点(孤立节点:不能直接或者间接和主节点通信的节点),节点总数不超过规定值,不论各节点初始工作的相对位置如何,也不论在工作的过程中某节点突然失去响应或者节点相对位置发生动态变化,正常工作的节点都能及时建立一张相同且有效的动态路由表,保证工作节点的数据包能安全传输给主节点。
[0109] e、路由表的压缩解压缩算法;
[0110] 假设系统中现有8个相对位置如图3所示的节点,则可以建立出如表4所示的路由表:其中,第一行与第一列分别表示节点号;其他行列中,若任意两个节点之间可以连通,则在路由表中记为“1”,相互之间不连通的,记为“0”。例如,见表4的第三行第二列及第三行第七列所示的“1”,说明节点1仅与节点0和节点5连通,这与图3中的系统结构相匹配;其他节点的路由表示方法类似,不再一一说明。
[0111]  0 1 2 3 4 5 6 7
0 0 1 0 0 0 1 0 0
1 1 0 0 0 0 1 0 0
2 0 0 0 1 0 0 0 0
3 0 0 1 0 1 1 0 1
4 0 0 0 1 0 0 0 0
5 1 1 0 1 0 0 1 1
6 0 0 0 0 0 1 0 0
7 0 0 0 1 0 1 0 0
[0112] 表4由图3所示节点关系形成的路由表
[0113] 另外,如表4所示,路由表关于主对角线对称,并且主对角线上的值都是0,所以在传输路由表时,可以只传输上图中阴影方框(即,左下方三角型区域)中的值;又因为方框中的值只有0和1两种状态,这和1bit有0和1两种状态类同,故可以以位存储的方式将这28个数据压缩到4个字节的32位中(第四字节高四位未用)。
[0114] 因此,在发送路由表前,先按以上方法将路由表压缩到四个字节中,再发送出去。接收方收到数据包后,判断出数据包为路由信息,则按照逆算法还原路由表。
[0115] f、路由表的更新算法;
[0116] 令本机原有路由表为own[8][8],收到的路由表为receive[8][8],更新后的路由表存储到own[8][8],算法如下:
[0117] receive[i][j]=receive[i][j]|own[i][j];
[0118] 其中,i={i|0≤i≤8,i∈Z},j={j|0≤j≤8,j∈Z}。
[0119] 该算法严格遵循“0与任意数相或得任意数,1与任意数相或得1”的原则,使算法的时间复杂性及空间复杂性降低到最低。
[0120] g、最短路径算法;
[0121] 本发明所述方法中,一次数据传输所花费的时间主要取决于节点中单片机的速度,数据包在空中传递的时间非常短可以忽略不计,故任意两节点间的权值只为1或者0,1代表两节点是通的,0则代表两节点是不通的。
[0122] 常见的Dijkstra算法不适用于权值相等且都为1的情况,故我们设计了如下算法:
[0123] 如图10所示,令系统中节点总数为N,不管各节点如何随机分布,只要不存在孤立节点,除节点0(主节点)以外的其它任意节点总是能找到一条到节点0的最短路径,令最短路径为s,则有:
[0124] 1≤s≤N-1;
[0125] 采用循环遍历的方式,首先假设s=1,若下位节点为节点0,则假设成立,找到了最短路径并退出;如果假设不成立,则再次假设s=2;重复以上操作直至s=7;如果当s=7时还未能找到一条最短路径,则认为本节点为孤立节点,此次最短路径查询失败。
[0126] 综上所述,根据面向任意节点的工作协议(b),本发明所述系统中任意一个节点A在上电工作时,首先需要根据协议d描述的方法来建立路由表:即,节点A给其它节点遍历发送探测信息(定义见a中表1,其他类似);其他节点收到探测信息后,向节点A发送反馈信息(见表1);此时,节点A接收到其他的任意节点B的反馈信息,则节点A与节点B连通的情况,记录在路由表中;反之,则在路由表记录这两个节点A、B不连通。由此,就可以在遍历结束后建立形成路由表。
[0127] 之后,任意节点A根据算法f先更新了自身原来的路由表,同时还根据算法e对路由表进行压缩来形成路由信息(见表1),并将路由信息广播给邻近的其他若干个节点;这些节点也进行类似的路由表更新及广播的操作,最终使得整个系统中所有节点建立起一个相同的路由表。
[0128] 任意节点A会在间隔一个设定时间后,采集该节点所处环境的光强值、温度值和湿度值,并形成符合表1中格式的有效数据。节点A使用统一的路由表根据最短路径算法g计算,获知可用于信息转发的下位节点,并将有效数据发送给这个下位节点。发送完本机数据包后,节点A一直处于接收模式,为其他节点提供数据转发服务。
[0129] 而在上述的各个不同阶段中,任意两个节点A、B之间发送和/或接收,例如探测信息、反馈信息、路由信息或有效数据的方法,具体可参见上述的收发协议c。在传送相应数据信息时,还通过分别设置计数器,从而在发送失败后能够重发,且重发一定次数后停止发送的退出机制。当任意节点A连续多次发送数据信息给任意节点B都失败时,节点A将更新本机的路由表,剔除这两个节点A、B之间连通的信息,并再次广播新的路由信息。
[0130] 之后,当各个节点经由上述方法,将其各自采集的数据直接或间接发送到节点0(主节点)后,节点0就通过串口通讯将收到的所有信息(包括其自身采集的数据)都发送给上位机。
[0131] 上位机在收到所有数据后,在前台用折线图的方式实时显示所有节点最近1分钟内的包括光强(Lux)、温度(℃)和湿度(%)的所有信息,如图9中即示出了其中5个节点的监测数据。
[0132] 上位机在能够自定义光强、温度和湿度的正常范围,对于任意属性值,当其数值不在设定范围内时,便发出警报。例如在图9中警报信息以实心方块表示,数值在设定范围时以空心方块显示,在实际使用时也可以用不同颜色或其他方式来表示警报信息。
[0133] 上位机每隔1分钟,将所有节点一分钟内光强、温度和湿度的平均值存入后台的数据库,方便日后查询。例如可以通过输入查询任意节点对应的机器号及日期,上位机能够将该节点的监测数据,以折线图的方式绘出如图10中所示,光强(Lux)、温度(℃)和湿度(%)的走势图。
[0134] 尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。