ZigBee无线传感器网络接入以太网研究-程序员宅基地

技术标签: 网络  操作系统  嵌入式  

1   引言

无线传感器网络( Wireless Sensor Network,WSN)就是由部署在监控区域内的大量的廉价微型传感器节点组成,通过无线通信方式形成的一个多跳的自组织的网络系统,其目的是协作地感知采集和处理网络覆盖区域中感知对象的信息,并发给观察者可以这样说,无线传感器网络使人们可以直接感知客观世界,从而极大地扩展了现有网络的功能和人类认识世界的能力

    随着ZigBee无线模块传感器网络的迅猛发展,由其所延伸出来的各种应用范围都需要去与IP 网络进行互联,实现实际物理空间的数据可以与网络上的数据进行交换处理但是,无线传感器网络所用到的协议标准又与我们现今网络所用的协议不兼容,这样就给我们带来了难题,怎么把现今Internet 的协议标准与无线传感器网络的协议标准相互连通,从而使得物理世界与虚拟世界得到很好的互联

因此本文主要研究基于ZigBee无线模块传感器网络与以太网互联,提出两个网络互联的理论算法结构和实现方案,最终实现两个网络的数据传输,并实现以太网对无线传感器网络的控制

2  ZigBee与网络互联技术

21 ZigBee技术

ZigBee作为一种无线网络的标准,主要目标就是在远程控制传感器应用上,这一点很适合予操控复杂的广播环境和一些被隔离起来的区域ZigBee联盟就在IEEE802154标准的基础上提出了适应于无线传感器网络的通信协议ZigBee协议

IEEE802154标准主要针对无线个人区域网络( low - rate wireless personal area network, LR -WPAN),力求使用低耗能信号低速率传输旨在为小范围内不同设备之间的低速率互连提供一个统一标准IEEE802154标准定义了系统物理层(PHY)和数据链路层的MAC 子层PHY 层由射频收发器以及底层的控制模块构成,MAC 子层为高层访问物理信道提供点到点通信的服务接口,Zig-Bee 联盟规定了系统传输层(TL)网络层(NWK)应用层( APL) 等层的标准

image

1 IEEE802 15 4 基础上的ZigBee 协议

1 表示出了在IEEE802154基础上发展起来的ZigBee协议IEEE802154定义了两个频段的物理层:868/915MHz 24GHz868/915MHz 频段包括欧洲使用的868MHz 频段以及美国和澳大利亚使用的915MHz 频段,24GHz 频段世界通用对于现在所使用的许多ZigBee无线数传硬件设备都使用的是24GHZ的频率段ZigBee数传模块支持网络型拓扑结构星型拓扑结构群组树形拓扑结构以及混合型的拓扑结构并且对于星型和网络型结构结合的最基础的一种结构就是群组树型结构

image

2 ZigBee 网络的配置

2 展示了网络型以及星型拓扑机构的配置应用程序设计上的手持设备的最大室内距离是30m,最大室外距离是100m,运行在24GHZ 的频率下,能达到250Kbps 的数据传输速率,考虑到ZigBee无线模块的实用性,本文主要研究基于ZigBee 无线模块的传感器网络

22 无线传感器网络与IP 技术

IP(Internet Protocol,网络之间互联协议) 技术主要是为了计算机网络相互连接进行通信而设置的协议,它在ZigBee无线数传传感网络接入互联网的系统中具有重要作用在因特网中,IP 是能够使连接到网上的所有计算机网络实现相互通信的一套规则,它规定了计算机在因特网上进行通信时应当遵守的协议IP 具有唯一性,有了IP 网络协议,就可以有序管理计算机网络系统,实现网络用户之间的正常通信

互联网通信的主要最基本的协议TCP/ IP 协议,由网络层的IP 协议来规定连入到互联网中的每一台电脑的地址,传输层的TCP 协议负责数据的传输可以看出,现在所使用的最基本的互联网协议TCP/ IP 协议就是以地址为中心的协议,而在无线传感网络中,都是通过各个传感器所收集到的数据通过传送给中心的协调器进行数据的传输,这就实现了以数据为中心的数据传输方式TCP/ IP 协议就不再适用于在无线传感网络中进行应用,这样我们提出了基于ZigBee协议的无线传感器网络,而要实现无线传感网络与互联网的互联通信数据传输等就要求能把ZigBee协议能够很好地与TCP/ IP 协议进行转换在本文中,主要提出了ZigBee协议与IP协议的转换,ZigBee协议的数据包转换为IP 的数据包,这样就可以通过TCP 或是UDP 传输协议发送进入互联网,从而实现无线传感网络与互联网的相互通信

两种协议栈互联的算法研究及实现方法

网络互联方案中,根据实现方式不同分为异构结构和同构结构,异构结构是将传感器节点TCP/ IP,同构结构是利用网关作为接口将传感器网络与TCP/ IP 网络互联对于无线传感网络与互联网的互通,可以从以上两种实现方式上进行探索,本文将主要就同构结构进行研究并提出其理论算法及其实现方案

31 利用网关--虚拟查表方式

在本研究中把网络互联的方案重点放在同构结构来实现,这样则不需要去改变ZigBee地址,而是采用虚拟地址这一个概念来实现的这种方式对于无线传感网络以及互联网的终端我们不做任何的处理,所有的虚拟地址以及匹配的问题都放在转换器也就是网关中来实现,如图3 所示为转换器中的简要示意图,主要体现在不改变原始两种网络结构的基础上利用转换器来实现两种协议栈的转换进而实现两种网络的互联

image

3 转换器中示意图

如图3 中所示,可以看出本研究的主要重点放在了虚拟地址的研究上,对于所熟知的以太网络中,主要是以地址为中心的也就是常用的IP 地址,而在WSN 中主要是以数据为中心的,并且两种网络的数据流动方式也是不相同的,这样为了WSN 可以融合到以太网中就需要找到一种方法来把两种协议栈互通起来,本文就立足于这样一个出发点提出了虚拟地址的算法来实现互联

本文阐述的核心问题,是提出了一种基于虚拟IP 以及虚拟ID 的互联通信控制方法对于WSN网络而言,人为地配备一个虚拟的ID 地址,以太网中配备一个虚拟的IP ,这样每一个虚拟的ID 地址就会对应一个虚拟的IP 号来进行两个网络的互联在网关中建立一个映射表,把每次的连接后的虚拟IP 以及虚拟ID 存储在这个表中,如果下次连接需要就可以直接调用表中的地址进行连接如图4 所示就展现了这个映射表的主要实现形式

image

4 虚拟ID 及虚拟IP 映射表

32 实现方案的软硬件结构

以上研究主要阐述了这种网关实现的算法结构,下文将在这种算法结构的基础上,提出了系统实现的可行性方案,主要包括实现的硬件及软件结构

在硬件实现方面,考虑到控制器的资源等采用ARM 处理器LINUX 操作系统来进行网关的实现, 并在Linux 系统上实现上位机的交互界面进行控制WSN 的协调器中采用MCU 对采集的数据进行处理,终端节点通过跳变方式在WSN 内部把数据传给网络协调器,由协调器中MCU 对数据进行处理打包最后通过串口发送到网关中,在网关中进行解封装以及重新分装为TCP/ IP 包并发送到以太网中,这样就在这两者之间建立了一条透明的传输路线并可以进行数据的传输及控制在上述硬件结构的实现方式上,体现了这种通路的可实现性,现就网关的软件结构设计方面来说明此网关设计的可实现性首先,在网关中我们把系统分为几个层次来实现,最下方的物理层进行接收来自WSN 或是以太网的数据包,这样需要我们有一个较为稳定的运行平台来进行,因此在本研究方案中采用Linux 运行平台来实现,物理层之上就是协议层,这个协议层包括了ZigBee协议栈以及TCP/ IP 协议栈,在数据进行上行以及下行数据传输的时候对数据包进行封装从而作为适应另一方传输的包发送出去协议层之上我们设计了一个应用层,在应用层上有一个网关的应用程序,实现对数据包的协议转换以及数据的上行下行传输

image

5 网关结构图

如图5 所示主要体现了网关中各层表示结构实现网关在每接收到一个ZigBee数据包后,在其发送之前将其转换为TCP/ IP 数据包,反之,在此系统中依然成立

33 协议转换实现

首先,这里要对ZigBee无线模块的底层驱动进行配置,ZigBee无线模块与网关的通信主要是串口通信,现今串口通信的技术已经很成熟在此将不再多说,这里主要是针对于各种的开发板不同进行串口的一些配置就可以了其次,进行本研究最主要的工作,也就是协议转换的软件实现在现今的以太网传输中的技术都已经比较成熟,知道源目的MAC 地址就可以实现主机之间的相互通信,当不知道目的主机的MAC 地址时,此时将采用ARP 来进行主机IP 地址与MAC 地址之间的转换,TCP/ IP 中此种地址的转换已经相当的成熟这样,本研究根据这样的方式提出并实现ZigBeeARP,把之前规定好对应ZigBee无线数传网络的虚拟IP 地址通过ARP 找到对应的MAC 地址,这个MAC 地址恰好就可以为ZigBee数传模块16 位地址,这样在虚拟IP MAC 地址之间就建立起来了一个映射表,当然这也与上述所提出的理论算法相一致,这样所用到的IP 地址就可以映射到ZigBee的节点地址,实现源主机的相互通信

image

6 协议转换示意图

如图6 所示展示了这一映射的思路,在图中可以看到在MAC 层上去分别实现TCP/ IP ZigBeeARP 功能,PHY 为物理层

TCP/ IP 端的ARP 机制已经比较成熟,因此这里主要说一下ZigBee端实现ARP当网关收到发送到WSN 的数据包时,提取出目的节点的IP 地址,此时就需要启动ZigBee端的ARP,网关发送一份ARP 请求报文,该报文中包括了目的以及源IP 地址,目的硬件地址填写的为广播地址,这样ZigBee的所有节点就可以收到该报文目的节点的ARP收到此广播报文后,识别出这是发送方在询问它的MAC 地址,于是发送一个ARP 应答报文,请求方收到ARP 的应答报文后,就可以使用目的主机物理地址进行数据包的发送了上述ZigBeeARP 工作原理如图7 所示

image

7 ZigBee ARP 机制实现原理

其次,在互相通信的基础上来分析一下数据的转换及传输本文所采用的方法是把传感器节点当作以太网中的主机来进行处理,为其分配IPV4 IP 地址19216811 ~ 1921681.254,以太网中的主机配置IP 地址192 168 2 2 ~ 1921682254这样当以太网中的主机发送数据时发现目的主机的IP 地址不在本网络中那么就把此数据包发送到IP地址为19216821的网关中进行处理,传送到网关中对其数据包进行解封得到目的IP 这样可以对应查找到是否为配置到WSN 中的IP 地址段中,在对应的地址段中,此时根据ZigBeeARP 找到目的IP 地址对应的目的MAC 地址,这样就可以在网关中对数据进行ZigBee的封装后然后通过串口发送到无线传感器网络中去当然,每一次发送数据时都会把IP 地址与其对应的MAC 地址写进映射表中,如果此次传输的路径已经在映射表中有了对应的IP MAC 地址了,这样就可以直接找到对应的ZigBee数传模块节点的包头信息进行封装后发送出去反之,ZigBee发送到以太网中的形式就相对简单一点,直接数据包从协调器中传送到网关中进行解析目的IP 地址即可,其他步骤就与以太网到WSN 的过程反过来即可对应查找到是否为配置到WSN 中的IP 地址段中,在对应的地址段中,此时根据ZigBeeARP 找到目的IP 地址对应的目的MAC 地址,这样就可以在网关中对数据进行ZigBee的封装后然后通过串口发送到无线传感器网络中去当然,每一次发送数据时都会把IP 地址与其对应的MAC 地址写进映射表中,如果此次传输的路径已经在映射表中有了对应的IP MAC 地址了,这样就可以直接找到对应的ZigBee无线模块节点的包头信息进行封装后发送出去反之,ZigBee发送到以太网中的形式就相对简单一点,直接数据包从协调器中传送到网关中进行解析目的IP 地址即可,其他步骤就与以太网到WSN 的过程反过来即可如图8 所示为此数据包转换的流程图,根据流程图来看则转换的思路则会更为清晰

image

8 数据包转换流程图

4 结束语

本文提出了一种基于ZigBee无线模块的无线传感器网络与IP 互联网络通信联接的数据通信及控制方案根据网络互联的不同需求方式,使用同构结构实现了两种网络系统的互联,通过构建转换器型的网关,可以在两种不同的协议之间进行数据通信,实现了以太网络与无线传感器网络系统的通信控制和信息交换功能本研究所提出的互联系统方案,可以用于两种不同协议栈之间的互联接入方面的应用系统研究,也为不同协议栈之间的转换互联提供了一种研究探索的方向

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30161304/viewspace-1698128/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30161304/viewspace-1698128/

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cuanbihanbi60075/article/details/100496931

智能推荐

【树】leetcode_105_从前序与中序遍历序列构造二叉树-程序员宅基地

文章浏览阅读66次。【树】leetcode_105_从前序与中序遍历序列构造二叉树/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left

vant-list的具体使用完整版(移动端分页)_van-list 详细页面-程序员宅基地

文章浏览阅读576次,点赞7次,收藏10次。【代码】vant-list的具体使用完整版。_van-list 详细页面

C#连接OPC C#上位机链接PLC程序源码 1.该程序是通讯方式是CSharp通过OPC方式连接PLC_c#opc通信-程序员宅基地

文章浏览阅读565次。本文主要介绍如何使用C#通过OPC方式连接PLC,并提供了相应的程序和学习资料,以便读者学习和使用。OPC服务器是一种软件,可以将PLC的数据转换为标准的OPC格式,允许其他软件通过标准接口读取或控制PLC的数据。此外,本文还提供了一些学习资料,包括OPC和PLC的基础知识,C#编程语言的教程和实例代码。这些资料可以帮助读者更好地理解和应用本文介绍的程序。1.该程序是通讯方式是CSharp通过OPC方式连接PLC,用这种方式连PLC不用考虑什么种类PLC,只要OPC服务器里有的PLC都可以连。_c#opc通信

Hyper-V内的虚拟机复制粘贴_win10 hyper-v ubuntu18.04 文件拷贝-程序员宅基地

文章浏览阅读1.6w次,点赞3次,收藏10次。实践环境物理机:Windows10教育版,操作系统版本 17763.914虚拟机:Ubuntu18.04.3桌面版在Hyper-V中的刚安装好Ubuntu虚拟机之后,会发现鼠标滑动很不顺畅,也不能向虚拟机中拖拽文件或者复制内容。在VMware中,可以通过安装VMware tools来使物理机和虚拟机之间达到更好的交互。在Hyper-V中,也有这样的工具。这款工具可以完成更好的鼠标交互,我的..._win10 hyper-v ubuntu18.04 文件拷贝

java静态变量初始化多线程,持续更新中_类初始化一个静态属性 为线程池-程序员宅基地

文章浏览阅读156次。前言互联网时代,瞬息万变。一个小小的走错,就有可能落后于别人。我们没办法去预测任何行业、任何职业未来十年会怎么样,因为未来谁都不能确定。只能说只要有互联网存在,程序员依然是个高薪热门行业。只要跟随着时代的脚步,学习新的知识。程序员是不可能会消失的,或者说不可能会没钱赚的。我们经常可以听到很多人说,程序员是一个吃青春饭的行当。因为大多数人认为这是一个需要高强度脑力劳动的工种,而30岁、40岁,甚至50岁的程序员身体机能逐渐弱化,家庭琐事缠身,已经不能再进行这样高强度的工作了。那么,这样的说法是对的么?_类初始化一个静态属性 为线程池

idea 配置maven,其实不用单独下载Maven的。以及设置新项目配置,省略每次创建新项目都要配置一次Maven_安装idea后是不是不需要安装maven了?-程序员宅基地

文章浏览阅读1w次,点赞13次,收藏43次。说来也是惭愧,一直以来,在装环境的时候都会从官网下载Maven。然后再在idea里配置Maven。以为从官网下载的Maven是必须的步骤,直到今天才得知,idea有捆绑的 Maven 我们只需要搞一个配置文件就行了无需再官网下载Maven包以后再在新电脑装环境的时候,只需要下载idea ,网上找一个Maven的配置文件 放到 默认的 包下面就可以了!也省得每次创建项目都要重新配一次Maven了。如果不想每次新建项目都要重新配置Maven,一种方法就是使用默认的配置,另一种方法就是配置 .._安装idea后是不是不需要安装maven了?

随便推点

毕设基于微信小程序的小区管理系统的设计ssm毕业设计_ssm基于微信小程序的公寓生活管理系统-程序员宅基地

文章浏览阅读223次。该系统将提供便捷的信息发布、物业报修、社区互动等功能,为小区居民提供更加便利、高效的服务。引言: 随着城市化进程的加速,小区管理成为一个日益重要的任务。因此,设计一个基于微信小程序的小区管理系统成为了一项具有挑战性和重要性的毕设课题。本文将介绍该小区管理系统的设计思路和功能,以期为小区提供更便捷、高效的管理手段。四、总结与展望: 通过本次毕设项目,我们实现了一个基于微信小程序的小区管理系统,为小区居民提供了更加便捷、高效的服务。通过该系统的设计与实现,能够提高小区管理水平,提供更好的居住环境和服务。_ssm基于微信小程序的公寓生活管理系统

如何正确的使用Ubuntu以及安装常用的渗透工具集.-程序员宅基地

文章浏览阅读635次。文章来源i春秋入坑Ubuntu半年多了记得一开始学的时候基本一星期重装三四次=-= 尴尬了 觉得自己差不多可以的时候 就吧Windows10干掉了 c盘装Ubuntu 专心学习. 这里主要来说一下使用Ubuntu的正确姿势Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的开源GNU/Linux操作系统,Ubuntu 是基于DebianGNU/Linux,支..._ubuntu安装攻击工具包

JNI参数传递引用_jni引用byte[]-程序员宅基地

文章浏览阅读335次。需求:C++中将BYTE型数组传递给Java中,考虑到内存释放问题,未采用通过返回值进行数据传递。public class demoClass{public native boolean getData(byte[] tempData);}JNIEXPORT jboolean JNICALL Java_com_core_getData(JNIEnv *env, jobject thisObj, jbyteArray tempData){ //resultsize为s..._jni引用byte[]

三维重建工具——pclpy教程之点云分割_pclpy.pcl.pointcloud.pointxyzi转为numpy-程序员宅基地

文章浏览阅读2.1k次,点赞5次,收藏30次。本教程代码开源:GitHub 欢迎star文章目录一、平面模型分割1. 代码2. 说明3. 运行二、圆柱模型分割1. 代码2. 说明3. 运行三、欧几里得聚类提取1. 代码2. 说明3. 运行四、区域生长分割1. 代码2. 说明3. 运行五、基于最小切割的分割1. 代码2. 说明3. 运行六、使用 ProgressiveMorphologicalFilter 分割地面1. 代码2. 说明3. 运行一、平面模型分割在本教程中,我们将学习如何对一组点进行简单的平面分割,即找到支持平面模型的点云中的所有._pclpy.pcl.pointcloud.pointxyzi转为numpy

以NFS启动方式构建arm-linux仿真运行环境-程序员宅基地

文章浏览阅读141次。一 其实在 skyeye 上移植 arm-linux 并非难事,网上也有不少资料, 只是大都遗漏细节, 以致细微之处卡壳,所以本文力求详实清析, 希望能对大家有点用处。本文旨在将 arm-linux 在 skyeye 上搭建起来,并在 arm-linux 上能成功 mount NFS 为目标, 最终我们能在 arm-linux 里运行我们自己的应用程序. 二 安装 Sky..._nfs启动 arm

攻防世界 Pwn 进阶 第二页_pwn snprintf-程序员宅基地

文章浏览阅读598次,点赞2次,收藏5次。00为了形成一个体系,想将前面学过的一些东西都拉来放在一起总结总结,方便学习,方便记忆。攻防世界 Pwn 新手攻防世界 Pwn 进阶 第一页01 4-ReeHY-main-100超详细的wp1超详细的wp203 format2栈迁移的两种作用之一:栈溢出太小,进行栈迁移从而能够写入更多shellcode,进行更多操作。栈迁移一篇搞定有个陌生的函数。C 库函数 void *memcpy(void *str1, const void *str2, size_t n) 从存储区 str2 _pwn snprintf

推荐文章

热门文章

相关标签