• 休闲生活
  • 教育教学
  • 经济贸易
  • 政法军事
  • 人文社科
  • 农林牧渔
  • 信息科技
  • 建筑房产
  • 环境安全
  • 当前位置: 达达文档网 > 达达文库 > 人文社科 > 正文

    基于联创中控物联网平台应用程序与ZigBee网关通信协议的研究

    时间:2020-09-19 07:54:31 来源:达达文档网 本文已影响 达达文档网手机站


    打开文本图片集

    摘 要:ZigBee网络节点之间的数据传输具有一定数据格式,物联网应用程序通过对这些数据读写实现对设备的控制。本文通过对“联创中控物联网平台”应用程序与ZigBee网关通信协议的研究,介绍数据通信的格式,促进开发人员对设备的了解和应用程序的编写。

    关键词:ZigBee;物联网;网关

    DOI:10.16640/j.cnki.37-1222/t.2016.11.129

    0 引言

    ZigBee是基于IEEE802.15.4标准的低功耗局域网协议,它是一种短距离、低功耗的无线通信技术。联创中控研发的无线传感网络实验教学平台整体上包括ZigBee网络,Android智能网关服务程序和Android终端应用程序三部分。通信过程是传感器节点通过CC2530无线射频将数据传输的协调器节点上,协调器节点通过串口与Android智能网关服务程序进行通信,Android终端应用程序通过3G/WIFI或以太网方式与Android智能网关服务程序进行通信,进而实现控制各个传感器节点。实际开发中Android终端应用程序主要使用了以太网Socket编程技术,Android终端应用程序作为TCP通信的客户端,Android智能网关程序作为TCP通信的服务端,客户端把数据通过TCP通信把数据发送到服务端,服务端以串口通信方式把数据发送给协调器节点,协调器节点解析数据发送给各个传感器节点实现控制[1]。研究终端应用程序与ZigBee网关应用程序通信协议是开发应用程序的前提,协议的测试与使用方法具体内容如下:

    1 上位机与网关进行组网

    首先,上位机的网络配置。对于Win7操作系统右击桌面的网络,点击属性打开网络和共享中心,点击本地连接,前提是网卡与无线路由器设备之间有物理连接,点击属性进行网卡配置,使用静态IP地址,输入IP地址为192.168.1.2,子网掩码为255.255.255.0,默认网关为192.168.1.1。

    其次,准备一台无线路由器,用于实现通讯设备间无线或有线组网。启动IE浏览器,在地址栏里输入http://192.168.1.1,进行无线路由器配置。对于不同厂家的无线路由器的IP和配置方式可能不同,查看产品使用说明书即可。设置无线路由器的登录密码,设置密码与确认密码保持一致,如果忘记密码,按Reset键可以恢复出厂设置。上网设置可以跳过,输入无线名称和无线密码,IP地址使用默认192.168.1.1。

    最后,网关的网络配置。物理连接好网关和无线路由器,启动智能网关的Android系统。点击设置关闭WIFI,选择以太网络。点击打开网络,进行网络配置。获取IP方式选择静态IP,输入IP地址192.168.1.3,子网掩码为255.255.255.0,网关为192.168.1.1,保存配置。

    配置结束后,在上位机上启动命令提示符,输入ping 192.168.1.3,测试上位机与网关设备组网是否成功。

    2 通信协议的命令格式

    终端应用程序与ZigBee网关的通信协议是具有一定格式的,每一条命令由起始位、命令、数据长度、数据和校验五部分构成,具体说明如表1所示。

    SOP表示命令的开始,长度为1个字节,取固定值为0x02。

    CMD表示命令标识码,长度为2个字节,用于区别不同的命令。其中0x2900表示上位机向网关发送数据;0x6900表示网关向上位机响应;0x6980表示网关向上位机响应具体数据。

    LEN表示DATA域的长度,长度为1个字节,为0表示没有数据域。

    DATA表示数据格式,长度为n个字节,由EP和APP_MSG构成。其中EP为固定一个字节取值为 0x02;APP_MSG为具体的数据通信帧,由2个字节的网络地址、2个字节的命令id和x个字节数据包构成,详细说明如表2所示。

    FCS表示数据校验,长度为1个字节,从CMD到DATA的异或和。

    3 传感器节点网络地址测试

    ZigBee有两种类型地址,一种是64位IEEE地址,即MAC地址,它是全球唯一的地址,一经分配就将跟随设备一生,它通常由制造商或者被安装时设置,这些地址由IEEE组织来维护和分配。另一种是16位的网络地址,相对于IEEE地址又叫做短地址,可以由开发人员自己指定,但是为了防止指定网络地址冲突,通常使用分布式寻址方案来动态分配网络地址,从而保证整个网络中所有分配的地址都是唯一的[2]。在单一的ZigBee网络内部主要通过网络地址来区分不同的设备,默认ZigBee网络的协调器节点的网络地址为0x0000。

    测试传感器节点网络地址可以通过测试协调器节点邻居表的办法来获得,邻居表的参数标示为0015。启动Android智能网关,选择启用ZigBee网关。在上位机上安装网络调试助手工具,协议选择TCP Client,本地主机地址自动获得为192.168.1.2,远程主机地址和端口为192.168.1.3:8320,其中8320为智能网关TCP服务端的端口号,点击连接,按钮变成红色表示网络连接成功,选中按十六进制发送,输入命令02 29 00 07 02 00 00 00 01 00 15 38,表示向协调器询问邻居表信息,命令说明如下:

    02表示命令开始,2900表示上位机向网关发送数据,07表示发送数据的长度,02表示数据开始,0000表示目标地址是协调器,0001表示要读信息,0015表示要读取节点的邻居表信息,38表示29 00 07 02 00 00 00 01 00 15的异或和结果。在协议研究中由于经常要用到异或和,可以设计一个用于实现异或计算的类,实现自动计算异或功能[3],代码如下:

    public class Test {

    public static int fcs(int [] data){

    int result=data[0];

    for(int i=1;i

    result^=data[i];

    }

    return result;}

    public static void main(String[] args) {

    int [] data=new int[]{0x29,0x00,0x07,0x02,0x00,0x00,0x00,0x01,0 x00,0x15};

    int result=fcs(data);

    System.out.println(Integer.toHexString(result));

    }

    }

    点击发送后,接收区返回数据为02 69 00 01 00 68 02 69 80 0C 00 00 80 01 00 00 15 02 2F 3E 46 D6 F2,信息说明如下:

    第一部分,02 69 00 01 00 68,表示网关向上位机响应。

    第二部分,02 69 80 0C 00 00 80 01 00 00 15 02 2F 3E 46 D6 F2,表示网关向上位机响应的数据信息。其中02表示命令开始,6980表示网关向上位机响应,0C表示响应数据的长度,0000表示响应的节点地址,8001表示读参数响应,00表示读参数响应正常,0015表示邻居表参数,02表示邻居表个数,2F3E表示第一个邻居表网络地址,46D6表示第二个邻居表网络地址,F2表示69 80 0C 00 00 80 01 00 00 15 02 2F 3E 46 D6异或和。

    4 传感器节点类型测试

    传感器在加入ZigBee网之前要进行设备类型编号,设备类型参数为0005,常用类型编号如表3所示。

    由于网络地址是由ZigBee网络动态生成,每次实验的数据可能有所不同。经测试协调器邻居表的网络地址为a75d,在网络通讯助手工具上发送02 29 00 07 02 a7 5d 00 01 00 05 d2,查看传感器的设备类型编号,命令说明如下:

    02表示命令开始,2900表示上位机向网关发送数据,07表示数据长度,02表示数据开始,a75d表示目标设备的网络地址,0001表示读信息,0005表示设备类型,d2表示29 00 07 02 a7 5d 00 01 00 05异或和。

    点击发送后,接受区返回数据为02 69 00 01 00 68 02 69 80 08 a7 5d 80 01 00 00 05 42 DD,其中倒数第2个字节数据42表示设备的编号,对照传感器设备编号表,确认为直流电机传感器。

    5 传感器节点使用的测试

    传感器节点操作可以分为读和写两种。例如对直流电机传感器节点的读操作,可以查看当前电机的状态;对直流电机传感器节点的写操作,可以控制电机正转,反转和停止。关于直流电机传感器节点的设备参数说明如表4所示。

    5.1 查看直流电机传感器状态

    发送数据:02 29 00 07 02 a7 5d 00 01 42 02 97

    接受数据:02 69 00 01 00 68 02 69 80 08 a7 5d 80 01 00 42 02 00 DA,其中4202表示读设备参数,00表示电机处于停止状态。

    5.2 控制直流电机传感器正转

    发送数据:02 29 00 08 02 a7 5d 00 02 42 01 01 99,其中0002表示写请求,4201表示写设备参数,01表示电机的正转数度。

    收到数据:02 69 00 01 00 68 02 69 80 05 A7 5D 80 02 00 94 02 69 80 07 a7 5d 00 03 42 02 01 56,其中8002表示写响应,00表示写成功,0003表示自动上报直流电机传感器的状态,01是正转。

    5.3 控制直流电机传感器反转

    发送数据:02 29 00 08 02 a7 5d 00 02 42 01 ff 67,其中0002表示写请求,4201表示写设备参数,ff表示电机的反转的数度。

    收到数据:02 69 00 01 00 68 02 69 80 05 A7 5D 80 02 00 94 02 69 80 07 a7 5d 00 03 42 02 ff 58,其中8002表示写响应,00表示写成功,0003表示自动上报直流电机传感器的状态,ff是反转。

    5.4 控制直流电机传感器停止

    发送数据:02 29 00 08 02 a7 5d 00 02 42 01 00 98,,其中0002表示写请求,4201表示写设备参数,00表示电机停止。

    收到数据:02 69 00 01 00 68 02 69 80 05 A7 5D 80 02 00 94 02 69 80 07 a7 5d 00 03 42 02 00 57,其中8002表示写响应,00表示写成功,0003表示自动上报直流电机传感器的状态,00是停止。

    6 结束语

    通过对“联创中控物联网平台”的使用,对传感器节点网络地址、传感器节点设备类型和传感器节点使用的测试,深入分析了应用程序与ZigBee网关通信协议的数据格式和使用方式,并给出了具体的测试方案,对于物联网应用层程序开发人员具有一定指导作用。

    参考文献:

    [1]联创中控(北京)科技有限公司.ZigBee无线传感网技术与应用系统开发.

    [2]周武斌.ZigBee无线组网技术的研究[D].湖南:中山大学,2009.

    [3]刘文杰,郑玉,刘志昊.Java 7实用教程[M].北京:清华大学出版社,2013.

    作者简介:魏钢(1978-),男,辽宁盘锦人,硕士,讲师,主要从事Java Web开发、物联网应用程序开发研究。

    相关热词搜索: 网关 联网 应用程序 中控 联创

    • 生活居家
    • 情感人生
    • 社会财经
    • 文化
    • 职场
    • 教育
    • 电脑上网