一种基于跨协议通信的物联网节点代码更新方法转让专利

申请号 : CN201911278193.6

文献号 : CN110995853B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 覃振权仲点崔国繁兰慧君王雷卢炳先朱明

申请人 : 大连理工大学

摘要 :

本发明提供了一种基于跨协议通信的物联网节点代码更新方法,该方法包括在上位机上编写更新脚本;上位机获取待更新节点发送信号的相位序列并实现时间同步;上位机更新程序对更新数据包按照跨协议通信协议进行编码并发送;待更新节点的接收模块接收更新脚本并依照协议进行解码;待更新节点的更新模块负责对接收的更新数据包校验以及更新;ZigBee节点根据跨协议通信协议向上位机发送更新完成信息;上位机扫描到接收到节点的更新完成的数据包,更新完成。本发明提出的代码更新方法是基于跨协议通信的方法实现的,它单跳实现的方式,极大地减少了传统代码更新过程中对更新节点能耗负载,降低了更新过程中的复杂程度。

权利要求 :

1.一种基于跨协议通信的物联网节点代码更新方法,其特征在于,步骤如下:步骤一,上位机编写更新程序,并由编译器编译成Hex的ZigBee节点可执行文件;

步骤二,上位机获取时间同步序列,与待更新节点实现时间同步;上位机控制网卡设置Wi‑Fi协议在1信道工作,即ZigBee的11信道,周期性广播名为SyncStart的Beacon;利用ZigBee节点感知信道RSSI值,监测到ZigBee的11信道被占用,则说明检测到该SyncStart信标;ZigBee节点开始时间同步,并在当前信道持续发送与ZigBee数据包不同功率强度的数据包SyncACK,由上位机使用Ath9k网卡光谱扫描发现该变化后,进入时间同步状态;

步骤三,上位机上的更新程序对更新数据包按照跨协议通信协议进行编码并发送;按照如下规则进行编码:(1)假定Wi‑Fi与ZigBee运行在同一信道上,当Wi‑Fi传输数据占用信道时,会导致信道中接收端信号的功率强度增大,ZigBee节点检测到的RSSI值会发生变化;

(2)当Wi‑Fi端发包占用信道时,ZigBee节点感受该信道的RSSI值明显增大,则判断接收名为Symbol‘1’的编码;(3)当Wi‑Fi端不发送数据包时,ZigBee节点则感受该信道的RSSI值明显减少,则判断接收名为Symbol‘0’的编码,完成编码;工作信道上位机以及更新节点分别设置在都较少使用的Wi‑Fi的1信道以及ZigBee的11信道进行工作;上位机完成对网卡发送的数据帧的时间序列的编码后,按照该时间序列发送数据包;

步骤四,待更新节点的采样接收上位机发送数据模块接收更新脚本,并依照跨协议通信协议进行解码;自开始时间同步时,待接收节点持续监听ZigBee的11信道的能量变化,并通过采样获取并记录信道的RSSI值,由特征分析及干扰剔除模块205通过特征提取对每一个RSSI值片段进行量化,通过干扰剔除排除掉干扰信道的RSSI值,并将其存储于存储模块

206接着通过解码模块207将信息还原;

步骤五,待更新节点的更新操作模块负责对接收的更新数据包校验以及进行更新操作;待更新节点使用基于整个代码的更新模式,即新代码完全接收完并校验无误后,将运行权交由程序引导装载区的程序,完成对Flash区域的代码擦除和新代码的写入的模式;更新操作包括以下步骤:(1)启动代码更新服务,接收到上位机发送的同步更新数据帧SyncStart,则启动同步更新服务;(2)接收上位机发送的更新代码的编码序列,并将其解码成新程序代码,将其储存在外部Flash中,并对其进行验证,确保安全完整;(3)代码更新,确定接收到完整安全的代码后,启动程序引导装载区中的代码更新服务;

步骤六,ZigBee节点根据跨协议通信协议向上位机发送更新完成信息,更新完成后,同样依照ZigBee和Wi‑Fi工作在相同频段的特性,更新完成后的节点,连续一段时间在ZigBee的20信道发送功率强度有明显变化的表示更新已完成的Fin数据包;

步骤七,上位机扫描到接收到节点的更新完成信息数据包,更新完成;上位机使用Ath9k网卡光谱扫描方法,获取由待更新节点发送的数据包的RSSI能量值,一旦扫描到ZigBee的20信道上功率强度持续一段时间内发生明显变化的数据包Fin,则表示更新成功,否则更新失败。

说明书 :

一种基于跨协议通信的物联网节点代码更新方法

技术领域

[0001] 本发明属于物联网技术领域,尤其涉及跨协议通信以及代码更新方法,具体为一种基于跨协议通信的物联网节点代码更新方法。

背景技术

[0002] 目前,随着无线通信技术的发展,物联网这一领域受到人们广泛的关注,在智能家居、车联网、环境监测甚至是工业生产等方面,物联网设备都发挥着它们巨大的功能。物联
网节点分布在它们发挥作用的各个领域,但随着技术的发展进步,很多节点的功能需要升
级改进。我们把这些维护工作称作是节点的代码更新。代码更新有传统的人工烧录,但是由
于节点分布分散,版本更新换代快,以及人工成本高等原因显得不切实际。所以就引申出现
在的代码更新方法。当前的代码更新方法是,在一个区域内部署一个网关,由上位机编写更
新数据包,由网关对节点进行分发,并通过节点的网络多跳传递实现整个物联网节点网络
的代码更新。但是,当前的代码更新存在对节点的开销大,成本高,多跳传递更新数据包实
现困难等问题。例如,节点需要广播预更新消息,这对低能耗,短距离的节点来说是一个不
小的开销。跨协议通信(Cross‑Technology Communication,CTC),要解决的问题是如何实
现异构的无线设备(Wi‑Fi,蓝牙,ZigBee等)的直接通信。目前在CTC领域有很多可喜的进
展,如FreeBee实现了Wi‑Fi、ZigBee之间直接通信,WiZig在幅度维度和时间维度上采用能
量调制技术,以优化在嘈杂信道上从Wi‑Fi到ZigBee的吞吐量,B2W2充分利用重叠的特征渠
道将数据传输从蓝牙低能量设备重新连接到Wi‑Fi设备等。

发明内容

[0003] 本发明的目的在于通过使用CTC的方法来实现对物联网节点的代码更新,从而解决当前代码更新的多跳实现困难,对节点能耗要求高等问题,它对硬件的要求较低且易于
实现。
[0004] 本发明的技术方案:
[0005] 一种基于跨协议通信的物联网节点代码更新方法,步骤如下:
[0006] 步骤一,上位机编写更新程序,并由编译器编译成Hex的ZigBee节点可执行文件;
[0007] 步骤二,上位机获取时间同步序列,与待更新节点实现时间同步;上位机控制网卡设置Wi‑Fi协议在1信道工作(2401MHz‑2423MHz),即ZigBee的11信道(2404MHz‑2406MHz),
周期性广播名为SyncStart的Beacon(信标)。利用ZigBee节点感知信道RSSI值的特性,监测
到ZigBee的11信道被占用,则说明检测到该SyncStart信标;于是ZigBee节点开始时间同
步,并在当前信道持续发送与ZigBee数据包不同功率强度的数据包SyncACK,由上位机使用
Ath9k网卡光谱扫描技术,发现该变化后,进入时间同步状态;
[0008] 步骤三,上位机上的更新程序对更新数据包按照跨协议通信协议进行编码并发送;按照如下规则进行编码:(1)假定Wi‑Fi与ZigBee运行在同一信道上,当Wi‑Fi传输数据
占用信道时,会导致信道中接收端信号的功率强度增大,ZigBee节点检测到的RSSI值(接收
的信号强度)就会发生变化;(2)当Wi‑Fi端发包占用信道时,ZigBee节点感受该信道的RSSI
值明显增大,则判断接收名为Symbol‘1’的编码;(3)当Wi‑Fi端不发送数据包时,ZigBee节
点则感受该信道的RSSI值明显减少,则判断接收名为Symbol‘0’的编码,完成编码;工作信
道上位机以及更新节点分别设置在都较少使用的Wi‑Fi的1信道以及ZigBee的11信道进行
工作;上位机完成对网卡发送的数据帧的时间序列的编码后,按照该时间序列发送数据包;
[0009] 步骤四,待更新节点的采样接收上位机发送数据模块接收更新脚本,并依照跨协议通信协议进行解码;自开始时间同步时,待接收节点持续监听ZigBee的11信道的能量变
化,并通过采样获取并记录信道的RSSI值,通过特征提取对每一个RSSI值片段进行量化,通
过干扰剔除排除掉干扰信道的RSSI值,接着通过解码将信息还原;
[0010] 步骤五,待更新节点的更新操作模块负责对接收的更新数据包校验以及进行更新操作;待更新节点使用基于整个代码的更新模式,即新代码完全接收完并校验无误后,将运
行权交由程序引导装载区的程序,完成对Flash区域的代码擦除和新代码的写入的模式;更
新操作包括以下步骤:(1)启动代码更新服务,接收到上位机发送的同步更新数据帧
SyncStart,则启动同步更新服务;(2)接收上位机发送的更新代码的编码序列,并将其解码
成新程序代码,将其储存在外部Flash中,并对其进行验证,确保安全完整;(3)代码更新,确
定接收到完整安全的代码后,启动程序引导装载区中的代码更新服务;
[0011] 步骤六,ZigBee节点根据跨协议通信协议向上位机发送更新完成信息,更新完成后,同样依照ZigBee和Wi‑Fi工作在相同频段的特性,更新完成后的节点,连续一段时间在
ZigBee的20信道(2449MHz‑2451MHz,WiFi并不工作在此频段,但使用Ath9k光谱扫描技术可
以检测到该信道的RSSI值)发送功率强度有明显变化的表示更新已完成的Fin数据包;
[0012] 步骤七,上位机扫描到接收到节点的更新完成信息数据包,更新完成;上位机使用Ath9k网卡光谱扫描技术,获取由待更新节点发送的数据包的RSSI能量值,一旦扫描到
ZigBee的20信道上功率强度持续一段时间内发生明显变化的数据包Fin,则表示更新成功,
否则更新失败。
[0013] 本发明所提供的实现上述任意一项所述的基于跨协议通信的代码更新方法的代码更新系统,包括,上位机编译更新程序模块,将更新程序按照跨协议通信协议编码模块,
以及待更新节点接收并解码模块和待更新节点更新模块。
[0014] 与传统代码更新技术相比,本发明提出的代码更新方法是基于跨协议通信的方法实现的,它单跳实现的方式,极大地减少了传统代码更新过程中对更新节点能耗负载,降低
了更新过程中的复杂程度。此外,本发明是通过上位机和待更新节点之间的直接传输实现
的,因此,不需要传统代码更新技术中的网关节点,减少了代码更新过程中的成本。

附图说明

[0015] 图1是本发明实施例提供的基于跨协议通信的物联网节点代码更新系统的组成示意图。
[0016] 图2是本发明实施例提供的各功能模块的结构框图。
[0017] 图3是本发明实施例提供的Wi‑Fi上位机到ZigBee节点的跨协议通信装置的系统框架示意图。
[0018] 图4是本发明实施例提供的Wi‑Fi协议和ZigBee协议工作信道示意图
[0019] 图5是本发明实施例提供的上位机将更新按照跨协议通信协议编码的步骤流程图。
[0020] 图6是本发明实施例提供的上位机编码实例及编码策略示意图。
[0021] 图7是本发明实施例提供的代码更新系统中节点对信道中RSSI值的采样率示意图。
[0022] 图8是本发明实施例提供的用于上位机同待更新节点间基于折叠策略的Beason识别原理图。
[0023] 图中:101上位机;102待更新节点a;103待更新节点b;200检测节点更新完成模块;201编写编译更新代码模块;202跨协议通信协议编码模块;203发送编码模块;204采样接收
上位机发送数据模块;205特征分析以及干扰剔除模块;206存储经过上述处理的数据模块;
207根据跨协议通信协议解码模块;208更新操作模块;209回复更新完成数据包模块。

具体实施方式

[0024] 为了使本发明的目的,技术方案及优点更加清楚明白以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并
不用于限定本发明。
[0025] 图1是本发明实施例提供的基于跨协议通信的物联网节点代码更新系统的组成示意图。该系统主要包括使用Wi‑Fi协议进行通信的上位机101,待更新节点a102以及待更新
节点b103。图1种闪电符号表示上位机101,待更新节点a102以及待更新节点b103是通过无
线的方式进行通信的。
[0026] 其中,上位机101使用Wi‑Fi协议进行通信,本系统不含有具有转发、变换通信协议的网关节点存在,上位机101上主要用于编写,编译更新程序为的可执行的Hex文件。并将其
交给上位机101的跨协议通信模块按照相应协议对其进行编码(参见下文的描述)。在本系
统内,在一个更新区域范围中,只允许一个上位机101的存在。此外,本发明使用跨协议通信
涉及到的两种协议WiFi及ZigBee的信道分布图见图4。
[0027] 待更新节点a102以及待更新节点b103是代码更新的目标节点,在将要更新的节点网络中,可以有多个带更新的节点。因为本发明所述方法需要上位机101与待更新节点进行
时间同步,所以在一段时间内只有一个待更新节点进行代码更新操作。图1中是待更新节点
a102正在进行更新操作,待更新节点b103处于等待更新状态。
[0028] 图2给出了上位机以及待更新节点各功能模块的结构框图。上位机101的功能模块包括检测节点更新完成模块200、编写编译更新代码模块201、跨协议通信协议编码模块202
以及发送编码模块203。待更新节点的功能模块包括采样接收上位机发送数据模块204、对
数据特征分析及干扰剔除模块205、存储经过上述处理的数据模块206、根据跨协议通信协
议解码模块207、更新操作模块208以及回复更新完成数据包模块209。现将各个模块的功能
及实现方法分别说明如下。
[0029] 检测节点更新完成模块200,用于对更新完成的节点发回的完成数据包Fin进行扫描确认;若确认,则开启下一个节点的更新过程;若之前无正在更新的节点,则跳过这一模
块的操作,直接进入编写编译更新代码模块201,开始更新操作。
[0030] 跨协议通信协议编码模块202,用于把编写编译更新代码模块201的更新程序编码成待更新节点能够接收到的数据序列,以便待更新节点能够接收并解码出更新程序。跨协
议通信协议编码模块202需要上位机101同更新节点之间实现时间同步,依据的是无线网络
中具有周期特征的Beacon信标进行,Wi‑Fi系统中,无线设备会周期性地广播Beacon信标来
宣布自身存在,这是Wi‑Fi的固有特性。如图5所示,其编码主要按照如下步骤:
[0031] 步骤501:把Beacon信标的发送时间作为时间参考标志在时域上完成编码。
[0032] 编码的具体实现方法是,设两个相邻Beacon信标帧的时间间隔为T,将T分解为N块,每一块为一个时间长为Tw的Symbol窗口,一个Symbol窗口代表1‑bit的信息,且Tw=T/N;
将Symbol窗口均分为3个小窗口,分别为up、mid和low,时长分别为Tup、Tmid和Tlow,且三者相
等;如图6的603部分所示,控制包长相同的多个包以固定的传输时间间隔平铺在不同的小
窗口内,在up和low两个窗口进行传输以代表编码Symbol‘1’,如图6的601部分,控制这些包
在mid窗口上传输以代表编码Symbol‘0’,如图6的602部分。将需要传输的信息编码成时间
序列包,即更新程序的编码;
[0033] 步骤502:对上位机Wi‑Fi同ZigBee节点建立通信线路,完成时间同步。在本发明中用到的Beacon信标命名为SyncStart数据帧,利用ZigBee可识别出这种周期出现的
SyncStart数据帧,便可以完成实现时间同步。依据此原理时间同步具体实现见下文。
[0034] 时间同步的具体方法是,设置Wi‑Fi工作在1信道,ZigBee工作在11信道,信道分布见图4,在ZigBee接收端,开启能量感知模式进行对信道RSSI值的获取,当采集到一连串
RSSI值,依据802.15.4提供的信道空闲监测机制,将大于‑75dBm的值量化成数值1指代信道
忙,并将小于‑75dBm的值量化成数值0指代信道空。在此基础上,依据折叠策略来进行
SyncStart的识别。
[0035] 上述折叠策略的原理是在时间维度上偏移信标的传输周期来调制符号信息,不同周期偏移代表不同的信息。设Beacon周期为T,ZigBee采集得到的RSSI序列{rssi(1),…,
rssi(t),…,rssi(Tsample)},
[0036] 其中rssi(t)指代在时间点t上的RSSI值。将得到的RSSI序列按照Beacon信标周期进行折叠,进而得到一个全新的矩阵rssi(w,n),其中 n∈[1,T],接着计算矩阵rssi
(w,n)每一列的和sum(n),sum(n)中的最大值所对应的下标即Beacon信标出现的位置。sum
(n)的计算公式如下
[0037]
[0038] 如图8给出的基于折叠策略的Beason识别原理图。如图所示,T=4,长度为16的RSSI序列,图中1代表RSSI值大于‑75dBm,0代表RSSI值小于‑75dBm表示,经过折叠后依据列
的最大值便可快熟识别出Beacon信标。图中灰色方框为噪声点,经过折叠后噪声被消除。按
照此方法实现ZigBee节点对信标的识别,从而实现上位机和ZigBee节点的时间同步。
[0039] 步骤503:上位机确认时间同步,并将编码好的交由发送编码模块203。识别到SyncStart的Beason,ZigBee节点开始进入时间同步状态,并在15信道(2424MHz‑2426MHz)
持续发送与ZigBee数据包不同功率强度的数据包SyncACK。根据图4的描述,WiFi并不工作
在此信道上。但使用Ath9k网卡的光谱扫描技术可以检测到该信道的变化,这么做可以减弱
无关WiFi信号对本系统的干扰。由上位机使用Ath9k网卡光谱扫描技术,发现该变化后,将
编码交由更新发送模块。
[0040] 发送编码模块203,用于接收由跨协议通信协议编码模块202发送来的更新程序的编码,控制这些时间序列包,经由物理层传输出去,便可完成代码更新系统中上位机的工
作。
[0041] 接收上位机发送数据模块204,用于接收由上位机101发送的更新程序的编码。接收使用的方法包括节点对信道中RSSI值持续监测和采样,RSSI分割以及特征提取与干扰剔
除。接下来将依次说明上述步骤。
[0042] RSSI值持续监测和采样,根据图7,图中的packet1和packet2为两个常规的WiFi数据包,Trssi为采样器的采样周期,Tmtt为WiFi包的最小传输时间。由图7可知,当Trssipacket1和packet2都可被探测到。只需控制采样周期小于Tmtt并能捕捉信道信息即可完成
ZigBee节点对RSSI值的监测。
[0043] RSSI分割目的是从采集到的所有RSSI序列中提取可用的RSSI数据,分割的结果是一些RSSI片段。设置阈值为Threshold,若有RSSI值大于此阈值,则可以探测到每个片段的
开始,若有RSSI开始小于此阈值,则意味值探测到每个片段的结束为止,据此我们可以获得
M个片段。
[0044] 特征提取与干扰剔除模块205,每一个片段的特征主要是有信道RSSI值被扰动的持续时间、均值与方差组成的特征向量。按照常规的方法可以提取出这些特征。接着把上述
特征向量值与预先得到的指纹特征进行对比,依据干扰片段与兴趣片段的特征差异性规则
完成区分与剔除。
[0045] 存储模块206,用于存储接收到并经过干扰处理的更新数据,存储的数据还是处于被编码状态,需要物理设备存储下来,以便于保证更新数据的完整性从而实现成功解码。
[0046] 根据跨协议通信协议解码模块207,用于把存储模块206所存储的数据解码出更新程序。其步骤如下,将存储模块206的RSSI序列分割成N块,每一块都代表一个Symbol,而N的
大小取决于发送端设定的窗口大小,将每一个Symbol块均分为3个部分,按照编码方式完成
解码。即窗口up和low被占有则判定为Symbol‘1’,如mid被占有则判定为Symbol‘0’,端口是
否被占用依据如下公式进行,
[0047]
[0048]
[0049]
[0050] 其中,P(up)、P(mid)和P(low)分别指代up、mid和low三个小窗口的包占有比例,Tpacket为每个数据包占用的时间,设定当P>50%时认定对应的Symbol窗口指代的值可由如
下公式判断:
[0051]
[0052] Symbol(n)表示第n个Symbol窗口的结果。同时对每个Symbol窗口都采取同样的方法,从而完成解码操作,并将其发送到进行更新操作模块208。
[0053] 更新操作模块208,用于把解码好的更新程序载入到节点中。待更新节点,启动程序引导装载区中的代码更新服务,从而完成代码更新操作。
[0054] 回复更新完成数据包模块209,作用于代码更新操作完成之后,用于发送让上位机101确认该节点的Fin数据帧,该数据帧由位于上位机101的接收回复更新成功的检测节点
更新完成模块200接收。具体操作是,更新完成的节点在连续一段时间在ZigBee的20信道发
送功率强度有明显变化的Fin数据包,表示自己已完成代码更新。
[0055] 本发明使用的跨协议通信方法系统装置图如图3所示,该方法在802.11和802.15.4的协议标准上进行架构,并不用进行底层硬件的更改。基于图3介绍,本发明所用
跨协议通信方法的基本思路。在WiFi端,借用Beacon信标作为时间标志完成编码。在ZigBee
接收端,通过RSSI采样获取信道RSSI值,通过RSSI值分割提取被扰动的信道RSSI值并归为
片段,通过提成提取对每一个RSSI值片段进行量化,通过干扰剔除将干扰源扰动给的信道
RSSI值去掉,通过解码将信息还原,最终完成WiFi到ZigBee的直接通信。
[0056] 应当理解的是,以上所述仅为本发明的较佳实施例而已,并不足以限制本发明的技术方案,对本领域普通技术人员来说,在本发明的精神和原则之内,可以根据上述说明加
以增减、替换、变换或改进,而所有这些增减、替换、变换或改进后的技术方案,都应属于本
发明所附权利要求的保护范围。