首页 > 代码库 > 基于Linux应用层的6LOWPAN物联网网关及实现方法

基于Linux应用层的6LOWPAN物联网网关及实现方法

本发明涉及一种基于Linux应用层的6LOWPAN物联网网关及实现方法,所述物联网网关包括开发平台以及无线射频模块,其实现方法是:所述6LOWPAN物联网网关的以太网网口收到访问6LOWPAN无线传感器网络中节点的数据包,Linux应用层将以太网数据包格式转化成6LOWPAN物联网的格式,然后通过无线射频模块发送出去;同理,Linux应用层同时监听无线射频模块,收到6LOWPAN无线传感器网络中的数据包,所述Linux应用层将数据包转化成以太网数据包格式,再通过以太网网口把该数据包发送出去。本发明移植性好、再次开发容易、可扩展性强、减少硬件更环保。

技术领域

[0001] 本发明属于在物联网业务中使互联网和6LOWPAN网络通讯的方法,特别是一种基于Linux应用层的6LOWPAN物联网网关及实现方法。

背景技术

[0002] 物联网(The?Internet?of?things)是通过射频识别(RFID)、红外感应器、全球定位系统、激光扫描器以及气体感应器等信息传感设备,按约定的协议,把任何物品与互联网相连接,进行信息交换和通信,以实现对物品的智能化识别、定位、跟踪、监控和管理的一种网络。物联网技术的核心和基础是互联网技术,是在互联网基础上的延伸和扩展的网络。

[0003] 因特网把人与所有的物体连接起来,物联网将人与人、人与物、物与物连接起来。虽然物联网的概念早在十多年前就有了雏形,但想要建立理想中物联网还有很多技术需要完善,例如安全、寻址、标准、接入方式、生物工程等。只有通过这些技术进步和出台统一的规范,才能够获取一个公平和以用户为中心的物联网。

[0004] 物联网技术涵盖范围极广,包括具备"内在智能"的传感器、移动终端、智能电网、工业系统、楼控系统、家庭智能设施以及视频监控系统等、和"外在使能"(Enabled)的各种资产(如贴上RFID、条形码标签)、携带无线终端的个人与车辆等等"智能化物件或动物""智能尘埃",通过各种无线和/或有线的长距离和/或短距离通讯网络实现互联互通(M2M)、应用大集成(Grand Integration)、以及基于云计算的SaaS营运等模式,在内网、专网、和/或互联网环境下,采用适当的信息安全保障机制,提供安全可控乃至个性化的实时在线监测、定位追溯、报警联动、调度指挥、预案管理、远程控制、安全防范、远程维保、在线升级、统计报表、决策支持、领导桌面等管理和服务功能,实现对"万物""高效、节能、安全、环保""管、控、营" 一体化。

[0005] 无线传感器网络在物联网中担当链接传统网络重任。

[0006] 无线传感器网络作为物联网产业的核心产业,能显著带动诸多周边产业发展,对物联网的扶持应以无线传感器网络这样具有提纲挈领作用和床亲增长点的产业为重点。

[0007] 无线传感器网络在工业,农业,军事,环境,医疗,交通等领域具有广泛的应用,并且他的规模具有扩大化,功能具有复杂化,应用领域也具有扩展和交叉。这导致了对无线传感器网络本身提出了更高的要求。现在主要体现在三个方面:第一,大规模无线传感器网络的通信和管理;第二,多个无线传感器网络之间任意节点的点对点通信;第三,无线传感器网络与有线IP网络的集成和无缝连接。

[0008] 无线传感器网络具有"无处不在"和节点数量庞大等特点,部署无线传感器网络需要数量巨大的地址资源。而作为下一代互联网解决方案-1PV6技术,可以提供海量的地址,并且已经日渐成熟,较为成功的解决了 IPV4所存在的问题,成为下一代互联网的标准。所以无线传感器和IPV6结合,是一个很好的选择。

[0009] 现如今最流行、最有效实现无线传感器网络和IPv6结合的方案是6LOWPAN无线传感器网络。例如:中国专利申请《基于IPv6的物联网终端与互联网主机的通信方法》(南京邮电大学.CN102857968A.2013)

[0010] 现有技术的缺点:基于IPv6的物联网终端与互联网主机通信方法,首先这种技术没有使用6LOWPAN协议栈的标准(6LOWPAN协议栈传输层可以采用TCP,具体标准参考图1);物联网网关包括两大核心处理功能模块,第一个模块是以太网接口,该接口是网关与互联网之间的接口,第二个模块是无线射频接口,该接口是网关和6LOWPAN网络之间的接口。物联网网关同时具备这两个接口功能,才能很轻易的实现物联网和互联网之间的互联互通。(具体实现模块参考图2),该技术要求物联网网关设备需要有两个MCU (微控制器),一个处理6LOWPAN网络数据,一个处理以太网数据,这是一种浪费资源并且不环保。同时该技术可扩展性不强,如果6LOWPAN协议栈中添加了新的应用层协议,该技术就不支持。

[0011] 针对6LOWPAN无线传感器网络和互联网通讯,设计一种基于Linux应用层的6LOWPAN物联网关及实现方法非常必要。

发明内容

[0012] 本发明的目的是提供一种以太网格式的数据包和6LOWPAN物联网格式的数据包之间的转换,基于Linux应用层的6LOWPAN物联网网关及实现方法。

[0013] 为了实现上述目的,本发明所采用的技术方案是:

[0014] —种基于Linux应用层的6LOWPAN物联网网关,其特点是:所述物联网网关包括开发平台以及无线射频模块,所述开发平台包括以太网收发包模块、SPI模块、IEEE802.15.4收发包模块、应用层处理模块以及6LOWPAN逻辑处理模块,所述应用层处理模块中设置有压缩解压缩模块,所述无线射频模块包括无线射频芯片;互联网通过以太网网口以及所述以太网收发包模块与应用层处理模块连接,所述无线射频模块通过SPI接口以及所述SPI模块与应用层处理模块连接;所述IEEE802.15.4收发包模块以及6LOWPAN逻辑处理模块分别与应用层处理模块连接,所述应用层处理模块和6LOWPAN逻辑处理模块均处在Linux系统应用层。

[0015] 所述基于Linux应用层的6LOWPAN物联网网关的实现方法是:

[0016] 所述6LOWPAN物联网网关的以太网网口收到访问6LOWPAN无线传感器网络中节点的以太网数据包,应用层处理模块将以太网数据包交给6LOWPAN逻辑处理模块,6LOWPAN逻辑处理模块调用应用层处理模块中压缩解压缩模块将以太网数据包的以太网格式转化成6LOWPAN物联网的格式,即IEEE802.15.4格式,然后通过无线射频模块发送出去;同理,6LOWPAN逻辑处理模块同时监听无线射频模块,收到6LOWPAN无线传感器网络中的返回数据包,所述6LOWPAN逻辑处理模块调用应用层处理模块中压缩解压缩模块将返回的IEEE802.15.4格式数据包转化成以太网数据包格式,即IEEE802.3格式,交给应用层处理模块,应用层处理模块再通过以太网网口把该返回数据包发送到以太网。

[0017] 所述6LOWPAN物联网网关在应用层通过调用开源公共的bcm2835公共驱动平台控制无线射频模块。

[0018] 所述实现6LOWPAN物联网网关的方法具体是:

[0019] 第一步骤:6LOWPAN物联网网关收到以太网用户访问数据请求,以太网收发包模块实时监控Linux协议栈;

[0020] 第二步骤:一旦有数据包到达,以太网收发包模块则把收到的数据包加入到有线收包队列中,供应用层处理模块使用;

[0021] 第三步骤:应用层处理模块实时从有线收包队列中取出数据包,判断数据包是否是发给物联网节点的,如果是发给节点的,则把数据包传递给压缩解压缩模块进行处理;如果不是,则不作处理;

[0022] 第四步骤:压缩解压缩模块对应用层传递过来的数据包进行压缩处理,压缩完成以后,把压缩后的IEEE802.15.4格式报文传递给6LOWPAN逻辑处理模块;

[0023] 第五步骤:6LOWPAN逻辑处理模块把压缩解压缩模块压缩过的报文,加入到无线发包队列中;

[0024] 第六步骤:SPI模块实时的检测无线发包队列,如果有数据包要发送,SPI模块会从无线发包队列中取出数据包,写入到无线射频模块的发包寄存器中;

[0025] 第七步骤:无线射频模块检测到发包寄存器中有数据包,则把数据包发给无线节占.

[0026] 第八步骤:无线节点收到用户的访问请求,对用户的访问作出应答,发送应答报文给6LOWPAN物联网网关;

[0027] 第九步骤:无线射频模块收到无线传感器返回的数据包,把数据包存在本身的收包寄存器中;

[0028] 第十步骤:SPI模块实时检测无线射频模块的收包寄存器,如果有数据包,则取出该数据包放入到无线收包队列中;

[0029] 第十一步骤:6LOWPAN逻辑处理模块实时检测无线收包队列是否有数据包,如果有则取出该数据包,然后调用压缩解压缩模块对该数据进行处理;

[0030] 第十二步骤:6LOWPAN逻辑处理模块调用压缩解压缩模块解压缩,解压缩完成以后返回的是一个以太网数据格式的报文,此时再把该以太网格式报文交给应用层处理模块处理;

[0031] 第十三步骤:应用层处理模块把用户压缩解压缩模块解压缩后的报文进行处理后,加入到有线发包队列中;

[0032] 第十四步骤:以太网收发包模块从有线发包队列中取出数据包,从以太网网口发送出去,返回给用户。

[0033] 本发明具有以下有益效果:

[0034] 1、移植性好

[0035] 比如:传统的实现6LOWPAN网络是用contiki操作系统,但是不同无线射频模块使用contiki操作系统的时候都要进行大量移植修改,驱动也需要重新开发,这些都不是很容易开发得。图6中可以看出本发明方案中的所有驱动都是用bcm2835公共开源驱动,本发明不需要针对不同无线射频芯片开发驱动,只需要正确连接SPI接口即可。

[0036] 2、再次开发容易

[0037] 本方案是在Linux应用层实现的,如果想再次开发很容易。比如:6LOWPAN物联网应用层有了新的协议,本方案可以很容易的添加该新的协议。只需要在6LOWPAN逻辑处理模块添加对该协议的转换即可。

[0038] 3、可扩展性强

[0039] 无线射频模块一般分为2.4GHZ和低于1GHZ,本方案适用于所有无线射频模块。

[0040] 4、更加标准

[0041] 本方案实现的6LOWPAN物联网更加标准,从图1可以看出。

[0042] 5、减少硬件更环保

[0043] 在应用层实现6LOWPAN物联网和传统的无线射频模块相比,无线射频模块不需要MCU处理器,使产品更加环保。

附图说明

[0044] 16LOWPAN协议栈图。

[0045] 2为本发明物联网网关结构示意图。

[0046] 3为本发明的所述第一到第七步骤数据交换流程图。

[0047] 4为本发明的所述第八步骤到第十四步骤数据交换流程图。

[0048] 5为本发明物联网网关调用6LOWPAN网络数据程序框架图。

具体实施方式

[0049] 下面结合附图和实施例对本发明作进一步的详细描述。

[0050] 本发明主要核心是在Linux应用层实现以太网格式数据包和6LOWPAN物联网格式数据包之间的转换。

[0051] 正如前面描述的,6LOWPAN物联网网关就是在Linux应用层实现6LOWPAN协议栈,本发明能够使以太网和6LOWPAN无线传感器网络中的节点之间实现通讯。

[0052] 本发明是在Linux操作系统的应用层开发的,Linux应用层程序修改以太网格式数据包和6LOWPAN协议栈数据包让两者之间实现相互通讯,以6LOWPAN物联网网关为例来说明它的具体的实施。

[0053] 实施例:

[0054] 1、准备物联网网关的硬件

[0055] 首先需要准备两类硬件,其一是ARM硬件平台,本发明采用的ARM平台是树莓派,其二是无线射频芯片,射频芯片采用德州仪器的CC2420型号的芯片。

[0056] ARM开发平台是树莓派公板,芯片采用的是Broadcom的芯片,具有两类接口,一种是以太网网口,一种是SPI接口。以太网口是负责与互联网之间的接口,即ffiEE802.3接口,SPI接口是连接无线射频芯片的接口。

[0057] 无线射频芯片采用德州仪器的CC2420CC2520或其他802.15.4类型的无线射频芯片,采用的无线频段为2.4GHz,该频段为国际通用频段。

[0058] 2、连接无线射频模块和网关平台

[0059] 在准备好硬件以后,需要把准备的硬件连接成一个整体,使之构成能够运行6LOWPAN核心程序的网关平台,因为采用的CC2420无线射频芯片是SPI接口,那么连接也需要按照SPI接口的标准来进行连接,标准的SPI接口连接方法,请参考SPI基本原理。

[0060] 3、安装公共SPI接口驱动

[0061] 一般物联网网关的设计SPI驱动和下面SPI基本函数接口是在一个层面的事情,处于驱动层。本发明驱动层是采用开源公共的bcm2835公共驱动平台,它单独处于一层,这样增强了程序的可扩展性,另外一个方面通过公用的bcm2835的驱动平台,可以简化驱动层面的开发工作。物联网网关整个程序的框架如图5。该驱动可以在网上下载并安装。

[0062] 4、编写SPI操作模块

[0063] 编写SPI操作芯片的基本函数接口,这个函数接口是为写无线收发模块服务的,属于较为底层的工作。另外一个方面,如果是一般的ARM或者单片机平台,这个SPI操作芯片的基本函数接口为驱动层面的工作,或者这部分代码是一定要烧录到硬件上的。而本发明是直接调用了上一部分驱动层面的函数来完成基本函数接口。

[0064] 基本函数接口分为三个部分,第一个是Co_and指令,该指令是直接给芯片寄存器置位,达到设置寄存器关键状态的作用。第二个是WriteReg指令,该指令是写入芯片某个寄存器某一个值,这个是提供一个写一般寄存器数值的接口。第三个是ReadReg指令,该指令是读取某个寄存器里保存的数值,提供一个读某些寄存器的数值。具体函数实现可以参考SPI基本原理和实现。

[0065] 5、编写 IEEE802.15.4 收发模块

[0066] 编写该模块,主要是通过创建一个线程,实时的读取硬件中的数据包放在自己的收包队列中,实时的检查发送队列中的数据包,并且把发包队列中的数据包调用SPI操作模块把该数据包传递给无线射频芯片。通过该线程能够把数据传递给无线射频芯片,并且从无线射频芯片中获取芯片接收到的数据。具体的收发细节请参考CC2420芯片收发数据细节。

[0067] 6、编写6LOWPAN逻辑处理模块

[0068] 编写该模块,主要是实现在Linux应用层实现6LOWPAN协议栈,按照RFC6282实现压缩解压缩、分片重组功能,按照RFC6550实现RPL功能。从图2-4中可以看出6LOWPAN逻辑处理模块是连接以太网收发模块和IEEE802.15.4收发模块的。以太网接收到的数据包,如果访问的目的地址是终端,就把该数据包的数据和长度传递给6LOWPAN逻辑处理模块中的压缩操作,压缩操作遵循6LOWPAN协议标准即可,以使得以太网格式的数据转换为IEEE802.15.4格式数据,其处理方法是:IPv6头部中有很多默认的选项字段,这些字段占用空间,一般默认为O或一个固定的特征值,这样可以根据这些默认特性对其进行压缩,同时IPv6地址的前缀如果是物联网网关规定的前缀,也可对前缀所占用的字节数压缩掉,通过压缩这些默认特征字段对数据包进行长度控制。在对字段做了压缩时,把做压缩记录标记在压缩标记字段里,压缩标记字段只有两个字节。IPv6头部中可以压缩字段有=TrafficClass> Next Header> Hop Limit、源IPv6地址和目的IPv6地址等。压缩最理想情况,可以把40字节的头部给压缩成4个字节。这样通过压缩,来减小发送无线传输数据包的大小,从而减少能耗。

[0069] 如果数据压缩后的数据包大于127字节就进行分片操作,这样以太网数据包就转化成6LOWPAN数据包,然后调用IEEE802.15.4收发模块接口传递给该模块。同理,如果IEEE802.15.4收发模块发送队列中有数据,把该数据包的数据和长度传递给6LOWPAN逻辑处理模块,6LOWPAN逻辑处理模块判断该数据是否分片,如果有分片先进行重组操作,然后解压缩,这样就把6LOWPAN数据包转化成以太网数据包,最后调用以太网收发模块接口传递给该模块。解压缩处理方法是:根据压缩标记字段中的已经压缩的项,来进行还原,还原的过程是压缩过程的逆过程,把压缩后的字段根据具体的语意还原,把压缩后的头部还原为40字节的标准IPv6头部,还原的过程称之为解压缩。[0070] 6LOWPAN的压缩解压缩的方法已经是国际标准了,标准文件为RFC6282,本发明6LOWPAN网关只是沿用了这一标准。

[0071] 本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

SRC=https://www.google.com.hk/patents/CN103731344A

基于Linux应用层的6LOWPAN物联网网关及实现方法