本科毕业设计(论文)基于Z-Stack的智能家居系统学院___物理与光电工程学院____专业_____电子科学与技术______年级班别_____2012级(3)班______学号_______3112008326_______
学生姓名________苏荣津__________指导教师_________陈国鼎__________2016年5月
摘要随着社会的进步,互联网高速发展,整个社会越来越智能化,智能化设备无处不在,大到军事设备、城市交通,小到工业生产,居民小区,均能看到智能化产品的身影。而本次文章所要论述的是人类的居住生活环境,称智能家居。智能家居应用非常广泛,形式已非常多种,目前市场上已经涌现了大量的智能家电,这些设备均属于智能家居的一部分,对于不少人来说,这些智能单品已经使他们的生活方式有了明显的改善,生活质量也有了相应的提升。而智能单品设备应用场景单调,随着生活环境的改善,智能单品的使用便显得复杂累赘,手机上的应用程序越来越多,这将会给用户带来困扰。本次设计正是为了解决这一难题,利用Zigbee协议设计一套中控式的智能家居系统,将整个家庭甚至整个楼宇的所有智能设备集中控制,并连接到互联网,实现远程控制。本文将对智能家居中控式系统框架进行详细地阐述,并着重对Zigbee协议的发展历史、协议内容及分层结构一一讲述。目前市场上的Zigbee软硬件解决方案应属TI公司的CC2530
及其搭配的Z-Stack协议栈。本设计正是使用TI公司的芯片CC2530及Z-Stack进行系统地开发。Zigbee网络搭建解决局域网内智能设备的集中式管理,需要解决的另一个问题便是互联网的接入及联合手机APP的远程控制。如果开发一套智能家居系统便要去搭建独立的云服务器,未免也太过浪费人力和资源。针对这一点,在物联网行业内有不少公司专门做智能系统云服务。如机智云、云智易等,其中机智云属于行业内的大家,有深厚的技术沉淀和云服务开发经验,是一个很好的选择。本次智能家居系统的云端接入正是选用机智云的云服务方案。关键词:物联网,智能家居,Zigbee,云服务接入,机智云,Gokit
目录一、绪论----------------------------------------------------------------------------------------------------------41.1、研究内容---------------------------------------------------------------------------------------------41.2、研究意义---------------------------------------------------------------------------------------------4二、智能家居系统基本框架----------------------------------------------------------------------------------52.1、整体设计框架---------------------------------------------------------------------------------------52.2、局域网通讯协议------------------------------------------------------------------------------------62.3、网关选型---------------------------------------------------------------------------------------------6三、Z-Stack智能家居系统方案设计------------------------------------------------------------------------83.1、Zigbee核心技术------------------------------------------------------------------------------------83.1.1、Zigbee协议栈结构-------------------------------------------------------------------------83.1.2、Zigbee设备类型--------------------------------------------------------------------------11
3.1.3、Zigbee网络的建立-----------------------------------------------------------------------113.1.4、Zigbee网络内设备通讯-----------------------------------------------------------------123.1.5、Z-Stack协议栈-----------------------------------------------------------------------------143.2、机智云云服务-------------------------------------------------------------------------------------173.2.1、机智云物联网框架-----------------------------------------------------------------------173.2.2、Gokit的介绍-------------------------------------------------------------------------------183.2.3、云端接入流程-----------------------------------------------------------------------------193.3、系统对接程序设计-------------------------------------------------------------------------------203.3.1、Zigbee应用设计:-----------------------------------------------------------------------213.3.2、Gokit应用设计----------------------------------------------------------------------------223.3.3、Gokit、Zigbee串口对接----------------------------------------------------------------22四、硬件选择--------------------------------------------------------------------------------------------------264.1、硬件参数--------------------------------------------------------------------------------------------26
4.2、硬件原理图:-------------------------------------------------------------------------------------26五、总结与展望-----------------------------------------------------------------------------------------------285.1、系统优势--------------------------------------------------------------------------------------------285.2、后续发展及完善----------------------------------------------------------------------------------28六、参考文献--------------------------------------------------------------------------------------------------29七、致谢-----------------------------------------------------------------------------------------------------29
一、绪论近年来物联网已经成为世界关注的技术领域,是继互联网之后的一大技术创新。物联网(IoT),顾名思义,就是物物相联成网。物联网的概念本身是在互联网的基础上,将互联端扩延到物品与物品之间。智能家居则是物联网在现代智能化建筑的应用和体现。智能家居的概念虽然起源很早,但到了近代,才有具体的建筑案例出现,是美国联合科技有限公司在1984将建筑的信息化和整合化应用于美国康涅狄格州哈特佛市,才让智能家居现身于世界建筑的舞台。一直到2014年,谷歌公司以32亿美元收购智能家居公司Nest,带动了全球智能家居市场的上扬,中国的智能家居行业也迎来了一个新的发展阶段。如今,智能家居产业已经是如火如荼,不少互联网公司也看到了智能家居辉煌的前景,纷纷转投到智能家居的阵营,这个正在崛起的产业充满机遇和挑战。传统家电产业更是为了实现家居产品智能化而或与互联网公司战略合作打造智能家居产业链。如中国家电龙头企业
的海尔、美的及格力等公司。智能手机公司也在智能家居市场上扮演了不可或缺的角色,最典型的像小米公司,配合智能手机推出一系列智能家居产品。总的来说,物联网时代即将到来,家居产业必定是通过数据联网,越来越智能化。1.1、研究内容智能家居系统是集成不同应用层次的开发,包括框架设计,软硬件设计选型及各模块之间的对接。本系统涉及到的研究内容有:1、Zigbee协议栈软件开发,完成Zigbee局域网的搭建。要求熟悉嵌入式C编程,熟悉单片机的开发及外设的使用,熟练地运用各种传感器组成不同的应用场景。2、云服务器对接,需要以机智云的Gokit开发板作为网关,将Zigbee网络连上因特网,这
将需要将Zigbee协调器和Gokit进行协议通讯。3、实现Zigbee网络内各设备的状态上报,接收远程控制指令并做出相应动作。1.2、研究意义智能家居产业是新兴产业,充满机遇和挑战,中控式智能家居系统是单点智能设备的升级产品,这将成为智能家居的未来发展模式。未来的智能家居一定不会是独立的智能家电,而将是整个家庭互联乃到整个小区,楼宇间的互联通讯。国内不少企业专注Zigbee智能家居的研究和开发,其中不乏Zigbee技术联盟的成员,但是目前市场上却少有成熟的智能家居系统产品,也未被普遍普遍使用,所以Zigbee中控式智能家居系统还是有非常大的潜力。
二、智能家居系统基本框架2.1、整体设计框架所谓的智能家居的设计,已经有非常典型的框架,就是云服务器—控制设备端—硬件平台端这样形成三角的数据通讯模型。
P2.1云服务器的职责主要是数据的存储、处理(如对用户数据的分析和统计)、转发等。其中,对数据的分析是云服务器的核心工作,通过分析整个系统在使用过程中产生的数据,能够分析出用户的日常的生活习惯以及做息时间,有针对性地为不同的客户量身定制一套的智能生活方案。同时能够通过数据检测产品的各部分功能的使用情况,完善实用功能,去其华而不实的鸡肋。这样智能家居才能更加初显实用性,从而逐渐被普遍用户接受。可以说云服务器是整个系统的大脑,这就要求云服务器能高效,稳定地处理整个智能家居系统的数据控制端是智能家居系统与人类直接交互的部分,这个角色通常由智能手机、平板电脑或特定的控制终端扮演。通过在移动设备上安装特定的APP将数据及控制命令传输到云服务器及硬件平台端。控制端除了在UI上完成友好的用户交互之外,更是要保证稳定和安全的数据传输,寻求最好的用户体验。硬件平台端是整个智能家居系统最灵活的部分也是最核心的部分,由不同的硬件设备组
合能衍生出不同的产品,适应不同的应用场景,直接决定产品的价值。互联网时代下的智能化产品,云服务器和APP、设备端之间数据的通讯绝大多数是通过因特网。而对于硬件平台端接入因特网的方式和平台内部的设备组成、设备与设备之间局域网内的通讯则有多种不同的方案。打通设备端和因特网的屏障,需要一个网关设备,网关是可以让不同协议的网络实现互通的设备。目前使用最多的有以太网卡、WIFI模块、GPRS模块等。设备端可以是单点的设备,也可以是中控的系统。以前的家电都没有智能控制和联网的功能,直到到智能硬件兴起后,不少家电产商也都给传统家电赋上了智能化的能力,大多数是集成无线通讯模块、联网模块如BLE或wifi射频模块,通过手机实现无线控制或通过路由器等网络接口接入因特网。这样虽说是能联网,但只是独立的家电设备,称不上是智能家居。而中控系统是具有多电器接口、能将家中所有
电气化设备统一联成局域网并集中控制的系统。这就需要有一套成熟的协议规范,将所有设备按照一协议组成局域网互联互通,并且要保证系统的稳定性和易操作性。2.2、局域网通讯协议当今智能家居行业甚至整个物联网,使用最多的通信协议就有BLE、WIFI和Zigbee。这三种协议都是能实现组成局域网,完成我们的中控需要,但这三种协议它们各有所长,所适用的领域也有所差异。低功耗蓝牙(BLE)特点是功耗低,可互操作性,工作在免证的2.4GISM射频频段的短距离无线通信技术,由于大部分智能手机、智能平板都集成BLE模块,使BLE产品与移动设备交互非常方便且友好,因此BLE被大规模地运用在智能穿戴设备上,也有不少人会将BLE运用到智能家居。但BLE的组网复杂,仅支持少数从设备同时共存组成微微网,应用
场景有局限性。WIFI技术已经是非常成熟的局域网通讯协议,相信每家每户只要需要无线上网,一般都会配备一个无线路由器。路由器正是以WIFI协议为基础组成局域网。BLE的优势是与手机的交互方便,但是WIFI更胜一筹,只要能上网的地方就可以互通,就算只是在局域网内,路由器的覆盖范围也相对较大。WIFI可以做到随时随地的连接用户和设备、云服务器和设备或者是设备和设备,甚至不同平台之间的对接都很方便,也最普适。但是WIFI也有短板,那就是WIFI功耗比较大,远远比不上BLE,成本也高。同样只要WIFI设备一多,路由器的负载也会加重,在同一局域网内也是不能大规模地添加设备,星型架构的效率也不高。综合WIFI的特点,WIFI适合少数设备单点接入,特别是对于位置固定的插电式家电。由于路由器可以直接接入因特网,WIFI的射频模块用于网关更是合适不过。Zigbee协议是基于IEEE802.15.4标准的低功耗局域网协议,来源于蜜蜂群集通信的八字舞,又名紫蜂协议。其特点是低功耗、自组织和短距离通讯。IEEE802.15.4工作在工业科学医疗ISM频段,定义了两个物理层:2.4GHz频段和
868/915MHz频段物理层。两种物理层都基于直接序列扩频,使用相同的物理层数据包格式,它们的区别在于工作频率、传输速率、调制技术和扩频码片长度。这两个物理层在不同国家使用选择有所不同,868MHz在ISM频段只在欧洲被使用,915MHzk只在北美使用,而2.4G则全世界都有。所有频段总共有27个三种不同速率的信道,868MHz频段有一个20kbit/s的信道,915MHz频段有10个40kbits/s的信道,而2.4GHz有16个250kbit/s的信道。且2.4GHz频段的物理层有更高的吞吐量、更短的周期和更小的通信时延,因此会更加省电。在中国只使用2.4GHz这个频段,以下的论述只针对这个频段。Zigbee最突出的是它的自组能力,不但组网方便,更是支持大量设备同时接入。因此,运用Zigbee协议到中控系统是不二之选。Zigbee最大的缺点是很少的智能手机或移动设备会内置Zigbee模块,所以Zigbee与用户交互和与其它不同类型的网络互通相对困难。唯有加入其它模块充当网关,才能打通对外交互的屏障。2.3、网关选型
互联网是基于TCP/IP协议的,接入互联网必然需要遵循TCP/IP协议。目前的上网方式有线上网和无线上网,网关的设置就是为了平台设备端能够通过其转运而接入到因特网。有线网关一般是选用以太网卡,设备插上网线通过以太网接口连上互联网。但这种联网方式的缺点是无法与智能手机等无线上网的设备直接交互,需要同时连上互联网,通过互联
网传输数据,一旦网络不通,设备便成为折翼的老鹰,跟传统家电设备无异了。无线上网一般有两种方式:GPRS和WIFI无线模块,前者就是手机中集成的打电话和发短信的通讯模块,需要SIM卡支持并支付一定的流量费用给网络运营商,才能连接互联网。而WIFI上网则非常简便,WIFI无线路由器也相当普遍。只要无线路由器网络通畅,在WIFI覆盖范围内,设备便可直接通过无线路由器接入互联网。GPRS一般用于户外或宽带网络不发达的地区,而WIFI则用于室内或有WIFI信号覆盖的地域。
三、Z-Stack智能家居系统方案设计Z-Stack智能家居系统的整体设计框架同上所述,采用云服务器—控制设备端—硬件平台端的三角数据通讯模型。云服务器选用机智云的云服务平台,机智云的云平台提供了自主接入服务,并且推出了Gokit模块,使开发者的云端接入更为简便。控制设备端上使用的控制软件也是使用机智云提供的SDK所开发的APP。因为SDK与机智云的云端协议、GAgent协议是相互对应的。GAgent是机智云提供的设备端接入云服务的协议适配层,运行在Gokit开发板的WIFI模组上,后面会详细描述。平台设备端则采用TI的Z-Stack协议栈,搭配CC2530芯片完成整个Zigbee网络的搭建。并选Gokit为网关,接入机智云的云服务器。Zigbee网络配置了1个路由器,2个终端节点,分别接入DHT11温湿度传感器、人体红外热释电传感器及继电器,实现传感器数
据定时上报,传感器数据查询,控制指令下发等功能。完成了最为基础的数据双向通讯:状态上报和指令下发。3.1、Zigbee核心技术3.1.1、Zigbee协议栈结构zigbee协议栈基于标准的OSI七层参考模型,但只是根据市场需要和应用实际在相关范围来定义一些相应层来完成特定的任务。zigbee协议栈结构由多个分层构成,每个层都有一套特定的服务方法和上一层连接,称为协议。提供数据的传输服务称为数据实体,提供服务类型的为管理实体。每个分层上的服务实体通过服务接入点(SAP)和上一层相对接,每
个SAP提供大量服务方法来完成相应的操作。分层明确的有以下几个层:物理层(PHY)和介质访问控制层(MAC)。网络层(NWK)以及应用层(APL)。APL层又包括应用支持子层(APS),zigbee的设备对象(ZDO)以及制造商定义的应用对象。整个体系结构如图P3.1所示。
P3.1物理层:IEEE802.15.4协议的物理层是协议的最底层,承担着和外界直接作用的任务。它采用扩频通信的调制方式,控制RF(radiofrequency射频)收发器工作。介质访问控制层:MAC层遵循IEEE802.15.4协议,负责设备间无线数据链路的建立、维护和断开,确认数据的传送和接收模式,实现低延迟的高质量数据传输,并负责网络中每个设备的网络地址寻址,支持各种网络拓扑结构。它还可对无线传输信道的接入过程进行管理,包括以下几方面:网络协调器产生网络信标、网络中设备与网络信标同步、完成设备的入网和离网、网络安全控制、利用CSMA-CA(载波侦听多路访问/冲突避免)机制进行信道接入控制、处理和维持GTS(GuaranteedTimeSlot)机制、在两个对等的MAC实体间提供可靠的链路连接。1、数据传输模型:
MAC规范定义了三种数据传输模型:数据从设备到协调器、从协调器到设备、从设备到设备对等传输模型。在数据传输过程中,ZigBee采用了CSMA/CA碰撞避免机制和完全确认的数据传输机制,保证了数据的可靠传输。同时为需要固定带宽的通信业务预留了专用时隙,避免了发送数据时的竞争和冲突。2、帧结构定义:MAC规范定义了四种帧结构:信标帧、数据帧、确认帧和MAC命令帧。网络层:网络层负责建立新的网络、处理节点的加入和离开、分配网络地址、保证节点之间的同步和提供网络的路由,并根据网络类型设置节点的协议堆栈、。网络层确保MAC子层的正确操作,并为应用层提供合适的服务接口。为了给应用层提供合适的接口,网络层用数据服务和管理服务这两个服务实体来提供必需的功能。网络层数据实体(NLDE)通过相关的服务接入点(SAP)来提供数据传输服务;网络层管理实体(NLME)
通过相关的服务接入点(SAP)来提供管理服务。NLME利用NLDE来完成一些管理任务和维护管理对象的数据库,称作网络信息库(NIB),如图P3.2所示。
NLDE提供的数据服务允许同处于一个应用网络内的多个设备之间传输应用协议数据单元。它提供的服务有两个:产生网络协议数据单元和选择通信路由。NLME提供的管理服务是允许一个应用与协议栈操作进行交互:配置新设备、建立新网络、加入和离开网络、寻址、设备发现、路由发现和接收控制。
P3.2应用层:应用层提供高级协议栈管理功能,应用程序由开发者或各制造产商规定。APS应用支持子层主要提供Zigbee端点接口,应用程序操作相应端口读取或发送数据。APS子层也维护绑定表,根据设备之间的服务和需要使它们相互匹配。ZDO设备对象描述了一个基本的功能函数类,在应用对象、设备profile和APS之间提供了一个接口,它满足Zigbee协议栈所有应用操作的一般要求,负责设备的管理:定义设备在网络中的角色、发现设备、发起和响应绑定请求等。Zigbee协议栈中有几个重要的概念:端点、簇、Profile端点:端点在协议栈中用一个8bit的字段来描述,用于区分射频端支持的不同应用。一个设备可以有多个端点。按照Zigbee协议规定,端点值0x00用于寻址设备配置文件,这是每个设备都默认需要的。端点值0xFF用于寻找所有活跃的端点。0xF1—0xFE暂时预留,剩下的0x01—0xF0这240个端点可以支持不同的应用程序。这可以看成是一个设备
的240个对外通讯通道。簇:簇是包含一个或多个属性的群组,所谓属性其实就是真正通讯的数据含意。一个端点可以定义多个簇,簇相当于端点通讯的句柄,数据发送到对应端点的指定簇,对端就能在相应簇中获取到数据。属性则是数据的内容,不同设备的应用数据不同,可以是温湿度、控制指令等。Profile:ZigBee网络中数据的收发是建立Profile的基础上的。每个Profile都有一个ID;应用规范可分为公共Profile,ID范围为0x0000--0x7FFF和制造商特定Profile且ID范围为0xbF00--0xFFFF。这只是一个规范标识,如果使用公共Profile的就要遵循公共的,如果私有的只要不和公共的重复,可以随意定义。一个设备中端点和簇的关系如图P3.3所示。
P3.33.1.2、Zigbee设备类型Zigbee网络由3个角色组成,分别是协调器(Coordinator)、路由器和终端设备。Zigbee的设备功能类型分为两种:全功能设备(FFD)和精简功能设备(RFD),协调器和路由器为全功能设备,而终端为精简功能设备。协调器负责建立整个网络并维护网络,在选择一个信道和指定PID(PersonalAreaNetworkID)后启动网络。网络启动后,协调器的功能就如同路由器了,承担维护网络的责任并有路由功能。路由器的功能主要是允许设备加入该网络,多跳路由,为整个网络路由选路,并转发其它设备的数据,路由器和协调器都能接受新设备的加入,同样也都能为新加入的设备分配网
络地址。终端设备对网络没有维护的作用,它只负责收集并输出自己本身节点上的传感器数据,所以终端设备可以通过电池供电,进入省电模式,间隔唤醒上报传感器状态,而后又进入睡眠态,既节省资源又方便部署。终端是网络的末端,不可接受其它设备的加入。协调器和路由器均可以为其它设备的父节点,路由器还可以为其它设备的子节点,协调器就只能是父节点,因为它是网络的第一个节点,而终端节点则只能是子节点,不能接受其它设备的加入。一个Zigbee网络只能有一个协调器,可以有多个路由器和终端,根据系统的设备类型及加入方式可组成不同的Zigbee网络类型。3.1.3、Zigbee网络的建立Zigbee在2.4G的频段范围内,又划分出了16个工作信道,由于Zigbee硬件不支持
一个设备同时工作在两个频段上,所以在设备启动的时候,必需为硬件选定工作的信道。PID是一个区分不同Zigbee网络的16bit的值,每个设备都需要指定一个唯一的PID,以此作为创建网络或加入网络的路标。如果协调器的PID设置为0xFFFF,则会随机产生一个PID建立网络,如果路由器或终端节点设置PID为0xFFFF去加入一个网络,则会在指定信道内随机选择一个网络加入。PID和信道一样,需要在设备启动前确定好,才能让设备准确无误地加入到指定的网络。
Zigbee网络由协调器发起建立,建立网络后的协调器和路由器起着相同的作用,同路由器一起共同维护整个网络,负责允许其它设备的加入和路由选路、数据转发。有了路由器,Zigbee网络可以形成多种拓扑结构,满足不同的应用场景,使Zigbee的应用更加灵活,功能更加强大。Zigbee网络有典型的三种拓扑结构,分别为星状网络、树状网络和网状网络。星状网络(Start)是由协调器建立网络后只有终端节点加入,终端节点就是网络的末端,所有设备形成以协调器为中心的放射状星形网络拓扑如图P3.1(a)。树状网络(Cluster-tree)可以看成是多个星状网络的结合,所有节点只有与自己的父节点通信,如果需要往其它节点传输数据,则需要通过父节点转送。网络形成由协调器为中心,加入路由器和终端,如P3.1(b)所示。树状网络的优点是覆盖范围大。网状网络(Mesh)一般由一个协调器创建网络后,加入若干个路由节点,节点与节点之间的通讯是完成对等的,网状网络是一种高可靠性的网络结构,但网络的构建也相对复杂,并且维护的信息也较多。网络拓扑图如P3.1(c)所示
P3.43.1.4、Zigbee网络内设备通讯Zigbee数据传输速率不快,理论比特速率为250kbit/s,但通讯过程简易,特别适合控制类数据通讯。3.1.4.1、设备地址类型ZigBee设备的地址的两种。一种是64bit的IEEE物理地址,称MAC地址,另一种是16
bit的网络地址。MAC地址是全球唯一的地址,设备出厂后便被赋予一个64bit的MAC地址,通常由制造商设定或者被安装时设置。这些MAC地址由IEEE组织来维护和分配。16bit的网络地址是当设备加入网络后由协调器或路由器分配的,有设备加入时,协调器或路由器会给该设备分配一个16bit的地址,由哪个设备分配地址取决于加入网络的父节点,网络地址
是用来在网络中鉴别设备和设备间通讯的。设备的网络地址在网络内是唯一的,这样才能保证一个特定的数据包能够发给它指定的设备,而不出现混乱。3.1.4.2、设备间的通讯方式从数据包发送方向分有三种方式,分别为单播、组播和广播,所以在网络中设备通讯时除了需要指定目的地址,还需要设置地址模式。一个单点传送数据包只发送给一个设备,多点传送数据包则要传送给一组设备,而广播数据包则要发送给整个网络的所有节点。地址模式分类:typedefenum{afAddrNotPresent=AddrNotPresent,
afAddr16Bit=Addr16Bit,afAddr64Bit=Addr64Bit,afAddrGroup=AddrGroup,afAddrBroadcast=AddrBroadcast}afAddrMode_t;从通讯的方式分有两种方式:直接通讯和间接通讯。直接通讯需要使用网络内的网络地址做为参数,然后调用协议栈内相应的API来进行通讯。由于网络地址是设备加入网络后才从网络从获取,所以通讯前需要有获取网络地址的过程。而MAC地址是设备硬件出厂就已经附带,所以协议栈中也提供通过MAC地址获取网络地址的API,如果数据包是发送给协调器的,协调器的网络地址固定为0。间接通讯则与绑定相关,是各个节点通过端点的绑定建立通讯。这种通讯方式不需要网络地址,而是通过设备维护的绑定表进行通讯,要
互相通讯的设备在发送数据前需要先建立绑定关系。数据包发送API:afStatus_tAF_DataRequest(afAddrType_tdstAddr,endPointDesc_tsrcEP,uint16cID,uint16len,uint8buf,uint8transID,uint8options,uint8radius)
直接通讯和情况下,dstAddr这个参数需要传入16bit的网络地址或64bit的MAC地址,若是间接通讯,dstAddr可以是以AddrNotPresent的地址模式传入。前提是已有跟其它设备处于绑定关系。
3.1.5、Z-Stack协议栈3.1.5.1、TI的Zigbee发展史Zigbee起于1998年,在2001年向IEEE提案纳入IEEE802.15.4标准规范之中,自此ZigBee技术逐渐成为业界通用的低速短距无线通信技术之一。自从2003年12月,CHIPCON公司推出业界的第一款Zigbee收发器CC2420后,各大半导体厂家前赴后继,先后推出许多款Zigbee收发芯片,但仍然以CHIPCON最受业界关注。除了CHIPCON的芯片外就以微芯的PIC18F4620和ATMEL的A222222最受业内认可。2004年12月,CHIPCON推出全球第一个IEEE802.15.4/ZigBee片上系统(SoC)解决方案:CC2430无线单片机,该款芯片集成了增强型的8051内核以及业内性能卓越的ZigBee
收发器CC2420。2005年12月,CHIPCON又推出内嵌定位引擎的ZigBee/IEEE802.15.4解决方案CC2431。此后Zigbee的市场基本为CHIPCON占领。在2006年2月,TI公司为壮大其在RF行业的龙头地位,收购了CHIPCON公司。之后TI在CHIPCON发布的ZigBee收发器以及无线单片机的解决方案上不断进行修订,也陆续研发出针对Zigbee解决方案的开发系统,并于2006年10月将MSP430处理器用于对Zigbee收发器的控制,并在2007年5月推出整套CC2520+MSP430ZigBee/IEEE802.15.4DevelopmentKit开发包。2008年2月,TI推出第二代ZigBee/IEEE802.15.4收发芯片CC2520,2008年4月推出ZigBee协处理器CC2480,2008年6月推出2.4G放大芯片CC2591,而后又推出CC2530。CC2530结合了TI的业界领先的黄金单元Zigbee协议栈Z-Stack,提供了一个强大和完整的Zigbee解决方案,成为当前业界的潮流。3.1.5.2、Z-Stack程序架构
Z-Stack运行在硬件平台CC2530之上,CC2530集成了业界标准的增强型8051CPU,系统内可编程闪存,8-KBRAM。在8位的CPU,有限的内存和闪存的条件下,TI将抽象操作系统OSAL运用到协议栈中,使Z-Stack既保证协议的正常运行,又能方便厂商在协议的基础上添加自己的应用。整个的Zigbee协议栈都要在OS的基础上才能运行。OSAL和我们通常所说的RTOS还是有很大的不同,它只是利用了操作系统的概念和思想,利用OS把Z-Stack软件组件从特殊的处理过程相分离,并将软件成分保护了起来。它提供了如下的管理功能:任务的注册、初始化和启动、任务间的消息交换、任务同步、中断处理、时间管理、内存分配OSAL是单线程操作系统,支持多任务运行的系统资源分配机制,通过轮询方式来对整个协议栈的不同任务进行处理。工作原理如图P3.5所示:
P3.5初始化:Z-Stack启动后,对硬件平台的外设资源,包括I/O、FLASH及MAC层等,随后进行OSAL的任务的初始化:voidosalInitTasks(void){uint8taskID=0;tasksEvents=(uint16)osal_mem_alloc\(sizeof(uint16)tasksCnt);osal_memset(tasksEvents,0,(sizeof(uint16)tasksCnt));macTaskInit(taskID++);nwk_init(taskID++);
Hal_Init(taskID++);#ifdefined(MT_TASK)MT_TaskInit(taskID++);#endifAPS_Init(taskID++);#ifdefined(ZIGBEE_FRAGMENTATION)APSF_Init(taskID++);#endifZDApp_Init(taskID++);#ifdefined(ZIGBEE_FREQ_AGILITY)||defined(ZIGBEE_PANID_CONFLICT)ZDNwkMgr_Init(taskID++);#endif
SampleApp_Init(taskID);}从Z-Stack的任务初始化中可以看到,协议栈从MAC层到应用层使用不同的任务进行管理。最后的一个任务(SampleApp)则是开放给厂商针对不同应用场景进行程序开发的任务。
在初始化任务时,OSAL会维护一个对应的任务表,每个任务对应一个表项,表项为每个任务的回调函数,一旦该任务有事件发生或消息通知,系统则会触发回调函数进行事务处理。如图P3.6所示:P3.6
以下为Z-Stack任务回调函数表:constpTaskEventHandlerFntasksArr[]={macEventLoop,nwk_event_loop,Hal_ProcessEvent,#ifdefined(MT_TASK)MT_ProcessEvent,#endifAPS_event_loop,#ifdefined(ZIGBEE_FRAGMENTATION)APSF_ProcessEvent,#endifZDApp_event_loop,
#ifdefined(ZIGBEE_FREQ_AGILITY)||defined(ZIGBEE_PANID_CONFLICT)ZDNwkMgr_event_loop,#endifSampleApp_ProcessEvent};运行时:初始化完协议栈后,系统将进入无止境的轮询状态,这是一个无限循环:voidosal_start_system(void){#if!defined(ZBIT)&&!defined(UBIT)
for(;;)//ForeverLoop#endif{osal_run_system();}}
在循环中,系统将对任务的状态进行检测,一旦哪个任务有事件或消息需要处理,系统则调用任务表对应的回调函数。任务触发机制:OSAL中触发任务处理的方式有两种:任务事件和消息。简单来说,任务的触发是事件的发起,消息其实是存在于事件中的,该事件称为系统事件。根据协议栈的设计,一个任务有一个系统事件和多个应用事件,系统事件下又包含有消息,称为系统消息。事件的定义以一个16位的字段表示,每一个位可以定义一个事件,这就意味着一个任务最多只能定义16个事件,除了一个系统事件,最多定义15个应用事件。而系统事件下的消息虽然也是16位的字段,但却每一个值可以表示一个消息,即可以有65535个消息,OSAL会为每个任务的系统事件维护一个消息队列,一旦在系统运行过程中有消息需要发送,则先发送到对应的消息队列,系统会触发系统事件从消息队列中取出消息,进行处理。
事件是驱动任务去执行某些操作的条件,当系统中产生一个事件,OSAL将这个事件,这个事件传递给相应的任务后,任务才能执行一人相应的操作(调用事件处理函数去处理)通常某些事件发送时,又伴随着一些附加的信息的产生,如:从天线接收到数据后,会产生消息,但是任务的事件处理函数地处理这个事件的时候,还需要得到天线接收到数据因此,这就需要将事件和数据封装成一个消息,将消息发送到消息队列,然后在事件处理函数中就可以从消息队列中得到该消息,,进行处理。事件的触发API:需要指定任务ID和事件位即时触发:uint8osal_set_event(uint8task_id,uint16event_flag)定时触发:uint8osal_start_timerEx(uint8taskID,uint16event_id,uint16timeout_value)消息相关函数API:需要传入任务ID和消息体
发送消息:uint8osal_msg_send(uint8destination_task,uint8msg_ptr);取出消息:uint8osal_msg_receive(uint8task_id)3.2、机智云云服务机智云平台是致力于物联网、智能硬件云服务的开放平台。平台提供了从定义产品、设备端开发调试、应用开发、产测、运营管理等覆盖智能硬件接入到运营管理全生命周期服务的能力。机智云平台为开发者提供了自助式智能硬件开发工具与开放的云端服务。通过傻瓜化的工具、不断增强的SDK与API服务能力最大限度降低了物联网硬件开发的技术门槛,降低研发成本,提升开发者的产品投产速度,帮助开发者进行硬件智能化升级,更好的连接、服务最终消费者。3.2.1、机智云物联网框架
物联网纵向方向涉及到的行业知识很多,从下到上大概有传感器、MCU、通讯模组(BLE、ZigBee、WiFi等)、APP、M2M服务、数据存储、报表分析、数据挖掘、云对接等。而机智
云提供的GoKit原型已经打通了上述的每一个环节,并且开源GoKit相关技术和资料,同时也提供了根据这个原型快速开发新产品的方法。机智云物联网解决方案的整个框架如图P3.7所示
P3.7GAgent:设备端的模组系统GAgent,通过使用GAgent,开发者可根据机智云提供的协议与GAgent对接,使设备可快速接入。目前已兼容国内主流的Wi-Fi模块、移动网络模块IOTSDK:机智云提供了基于IOS,Android系统的IOTSDK,开发者通过SDK,可快速实现APP开发,无缝接入机智云,并根据SDK获取机智云平台逐步推出的新服务MCU:开发者遵循机智云自动生成的模组与MCU通讯协议进行MCU的开发机智云提供了智能家居纵向的一系统环节的资源,MCU部分则是厂家自已的设备,而
本次的Z-Stack智能家居系统便是使用机智云的一整套框架,将Zigbee网络通过Gokit的MCU接入到机智云的框架上,形成一套完整的智能家居中控系统解决方案。3.2.2、Gokit的介绍机智云的Gokit开发板包含WIFI应用板和MCU主控板两个部分:应用板已经兼容市场上主流的WIFI模组,而GAgent则是运行在WIFI模组上遵循机智云协议的一套程序,是机智云云服务器、手机APP和MCU的数据通讯的联动部分。机智云已经将这套协议代码编译成固件,烧录在WIFI模块上,不需要开发者做云端和APP的连接操作。除此之外,应用板上也集成了RGBLED灯、温湿度传感器、电机等测试传感器。
主控板目前有两款,Arduino和STM32,本次设计使用的是STM32底板,机智云官网上也开放出了STM32的“微信宠物屋”的源码。程序中已经有MCU和GAgent的通信协议。总的来说,Gokit开发板,已经能够完成云服务器—手机APP—设备端的三角数据通讯,应用的差别在于协议中的数据点。Gokit开发板的产品图如P3.8所示:
P3.8(a)应用板
P3.8(b)主控板3.2.3、云端接入流程由于通讯协议已经内嵌在机智云的物联网框架中,只需根据创建设备后产生的协议文档,做好MCU和WIFI模块的串口对接。产品的区别在于MCU的应用程序,机智云推出的Gokit的MCU应用程序便是一个产品“微信宠物屋”的demo。
3.2.3.1、ProductKey:机智云的接入过程中,需要在机智云官网上注册开发者账号,创建自己的设备,设备创建成功后官网会为其分配一个产品标识码(ProductKey),ProductKey是由机智云官网分配的32位字符串,是云服务器中区别不同产品的唯一标识,也只有拥有有效的ProductKey,才能从云端获取设备ID,进行设备注册和数据通讯。在设备启动的时候,就需要按照协议将ProductKey从MCU传给WIFI模块,然后WIFI模块会按GAgent的逻辑对ProductKey对应的这个设备进行注册和记录。3.2.3.2、数据点
在机智云通讯协议中,需要关注的另一个概念是数据点,即为产品需要传输的数据种类,在创建设备的同时,需要对设备的数据点进行添加和设置。数据点大致可以分为上报数据和控制数据两种,按照机智云协议文档的描述则有以下分类:数据点分类设备的状态和可控制点可分为四大类(下文简称大类?):●只读?:不能被控制或修改,只能由设备上报。如环境温度,湿度等。●可读写?:可以被远程控制或修改,设备同时也会上报当前值。如开关,马达转速等。●报警?:不可被控制或修改,只能由设备上报,有警示作用。如温度过高,门没有关好等。●故障?:不可被控制或修改,只能由设备上报,提示出现了硬件或软件故障。如抽风马达坏,温度传感器坏等。
数据点数据类型每一种数据点可以指定为以下的一种数据类型:●布尔型(bool):占一个bit的长度●枚举型(enum):占一个或多个bit的长度,最多8bits●整型(uint):长度可分为1B(uint8),2B(uint16),4B(uint32)几种●二进制数据(binary)数据点只是通讯协议其中一个指令(业务指令)的组成部分,数据点的内容将加载到业务指令的Payload中,随着业务指令按协议传输到各端。3.3、系统对接程序设计
在Zigbee方面,本次设计使用到Zigbee的所有设备类型:一个协调器、一个路由器、两个终端节点。协调器仅当网络设备用,路由器上添加了DHT11温湿度传感器,实时检测环境的温湿度;其中一个终端节点加入继电器,用于模拟控制家电的电源通断;另一个终端节点承载一个人体红外热释电传感器,模拟安防系统。
连接云服务器的方式仅需使用机智云的Gokit。手机APP需要使用机智云提供的SDK做APP开发,而机智云已经提供了基于SDK做的测试APP“IoT_demo”,本次设计侧重于Zigbee的嵌入式开发,因此直接使用IoT_demo做APP端。3.3.1、Zigbee应用设计:基于Z-Stack做程序开发,由于设备应用并不复杂,只需定义一个端口做设备的通讯接口。除了协议器外有三个通讯节点,需要定义三个簇,用于不同节点的数据通讯。#defineSAMPLEAPP_ENDPOINT50
#defineSAMPLEAPP_MAX_InOutCLUSTERS3#defineRELAYS_CLUSTERID0xA1#defineDHT11_CLUSTERID0xB1#defineINFRARED_CLUSTERID0xC1设备间通讯方式只有点对点的点播模式,并且通讯节点只需要将数据传给协调器或协调器直接下发命令到节点,所以设备地址和设备描述可以定义如下:SampleApp_PoinToPoin_DstAddr.addrMode=(afAddrMode_t)Addr16Bit;SampleApp_PoinToPoin_DstAddr.endPoint=SAMPLEAPP_ENDPOINT;SampleApp_PoinToPoin_DstAddr.addr.shortAddr=0x0000;
//Fillouttheendpointdescription.SampleApp_epDesc.endPoint=SAMPLEAPP_ENDPOINT;SampleApp_epDesc.task_id=&SampleApp_TaskID;SampleApp_epDesc.simpleDesc=(SimpleDescriptionFormat_t)&SampleApp_SimpleDesc;SampleApp_epDesc.latencyReq=noLatencyReqs;路由器(DHT11)在设备连接到网络后,设置一个时间为10秒的定时事件,每次触发事件则从DHT11中读取温湿度数据,随后将数据发送给协调器终端(RELAYS)
继电器上电默认为断开状态,一旦接收到协调器的控制命令,按照指令内容设置继电器的通断。终端(Infrared)人体红外热释电传感器的工作复杂但操作比较简单,除了电源和地线,就只有一个输出引脚,这个引脚默认输出低电平,一旦感应区内有人走动,则发生电平翻转,由低电平转化
为高电平。所以只需要设置在CC2530的其中一个引脚的中断,检测传感器的输出引脚的电平变化,从而达到安防的目的。中断后,在中断处理函数中,发送传感器的状态到协调器。协调器:协调器负责组建网络和收集数据,并与Gokit通过串口对接,将Zigbee网络中各节点的数据上传到Gokit,以Gokit上的WIFI模块做为网关,接入因特网。3.3.2、Gokit应用设计本次设计是基于机智云的“微信宠物屋”的Gokitdemo开发,微信宠物屋本身已有温
湿度、人体红外检测、LED等传感器对应的数据点,跟本次的智能家居系统数据点类似,将LED的数据点替换成继电器的开关。Gokit的程序逻辑是周期上报应用板上传感器的状态给WIFI模组,在接收到WIFI模组的查询指令后也会将数据点的数据上报。按照Gokit底板的程序逻辑,只需要在Gokit的STM32底板应用程序中添加继电器的数据点,并将Zigbee网络的传感器数据传输到Gokit底板,便可通过Gokit将Zigbee网络的数据传输到WIFI模组,从而上报组云服务器及手机APP,并且按照同样的方式,来自云端和手机APP的控制指令也能下发到Zigbee网络。3.3.3、Gokit、Zigbee串口对接3.3.3.1、制定串口通讯协议:
协议格式:帧头(1B)+指令(1B)+长度(1B)+数据(nB)状态查询指令(G-Z):0xFE0xA1LEN控制下发指令(G-Z):0xFE0xB1LENRELAY、数据上报指令(Z-G):0xFE0xC1LENDHT11_TDHT11_HRALAYINF3.3.3.2、串口对接由于串口只是用于指令的传输,串口通讯的接收设计可使用有限状态机,按字节依次接收串口数据帧,有效避免串口错包、残包导致串口数据错乱的情况,并且不用考虑串口数据粘包的情况。
Gokit有限状态机:串口数据以字节为单位接收,按协议状态机初始状态为ZSOP,在接收到帧头0xFE之后,状态机状态更改为ZCMD,表示下次期望接收的字节数据为命令字。在接收到合法的命令字之后,将状态机的状态更改为长度,表示下次期望接收的字节数据为长度字段。接收到
长度字段后则可以认为后续的为应用数据。便按协议将串口的应用数据赋给对应的数据点,待接收完所有数据后将状态机置为帧头状态,等待下一帧数据。enum{ZSOP,//帧头ZCMD,//指令ZLEN,//长度ZDATA1,//数据1、2、3、4ZDATA2,ZDATA3,ZDATA4};
voidUSART1_IRQHandler(void){if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET){uint8_tdata=0;u8i;USART_ClearITPendingBit(USART1,USART_IT_RXNE);data=(u8)USART_ReceiveData(USART1);switch(UartStates){caseZSOP:if(data==0xFE)
{UartStates=ZLEN;}elseUartStates=ZSOP;break;caseZLEN:u_len=data;UartStates=ZCMD;break;caseZCMD:u_cmd=data;if(u_cmd==0xC1)
UartStates=ZDATA1;elseif(data==0xfe)UartStates=ZLEN;elseUartStates=ZSOP;
break;caseZDATA1:Device_ReadStruct.Temperature=data;UartStates=ZDATA2;break;caseZDATA2:Device_ReadStruct.Humidity=data;UartStates=ZDATA3;break;caseZDATA3:Device_WirteStruct.LED_Cmd=data;UartStates=ZDATA4;break;
caseZDATA4:Device_ReadStruct.Infrared=data;UartStates=ZSOP;Pro_D2W_ReportDevStatusHandle();break;default:UartStates=ZSOP;break;}}while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);}
Zigbee有限状态机:Zigbee串口接收有限状态机跟Gokit的状态机设计相同,只是针对不同的串口指令做出不同的逻辑处理。enum{SOP,//帧头CMD,//命令LEN,//长度DATA//数据};voidSerialCallback(uint8port,uint8events){
uint8data;staticuint8UartStates=SOP;if(events&HAL_UART_RX_TIMEOUT){while(Hal_UART_RxBufLen(0))
{HalUARTRead(0,&data,1);switch(UartStates){caseSOP:if(data==0xFE){UartStates=LEN;}else{UartStates=SOP;}
break;caseLEN:u_len=data;UartStates=CMD;break;caseCMD:u_cmd=data;if(u_cmd==0xA1){osal_set_event(SampleApp_TaskID,GATEWAY_UART_EVT);UartStates=SOP;break;}
UartStates=DATA;break;caseDATA:u_data=data;osal_set_event(SampleApp_TaskID,GATEWAY_UART_EVT);UartStates=SOP;break;default:UartStates=SOP;break;}return;}
}}
四、硬件选择本智能家居系统使用的是网蜂基于TI的CC2530芯片出产的Zigbee模块,并直接使用网蜂的功能底板:4.1、硬件参数Zigbee核心板参数:PCB尺寸板层尺寸:36.527.8接口:标准2.54mm排针引脚
层数:2层材料:射频专用高介电常数、低损耗板材模块功能特点工作电压:2.0-3.6V天线:外接SMA接口的2.4G天线资源:CC2530F256所有I/O资源传输距离:可视传输250m功耗:接收电流<30mA,发射电流<40mA,睡眠功耗<5uA功能底板参数:底板尺寸:75cm串口通讯:自带USB转串口功能(PL-2303)供电方式:方口USB、DC2.1电源座(5V)、7号锂电池(3.7V)功能接口:Debug接口,兼容TI标准仿真工具,引出所有IO口,常用的串口引脚以
及5V/3.3V引脚。功能按键:1个复位按键,2个普通按键LED指示灯:电源指示灯、组网指示灯和普通LED核心模块支持:支持WeBeeCC2530核心板,CC2530+PA(cc2591)核心板。传感器模块支持:支持网蜂标准传感器接口:温度DS18B20/温湿度DHT11等全系列传感器。4.2、硬件原理图:核心板原理图:
五、总结与展望5.1、系统优势智能家居作为一个朝阳产业,已经处于快速发展期,但是很多用户对众多不能互联互通的智能家居单品而困扰,一个智能设备就需要一个对应的APP操控,这会给用户手机带来负担。随着市场逐渐成熟,将会淘汰部分以智能单品为主的厂商,而其它智能单品厂商必须实现跨平台控制,那么用户所需要安装的APP才会越来越少。而在以后的智能家居,也将会是不同产品之间跨平台的互联互通,以及通过智能家居云服务的方式打通。只是局域网的智能设备并不能真正称得上智能家居,充其量也只算是智能化产品。智能家居应该是一整个系统,多个智能化产品通过互联网互联互通。
本系统实现了智能设备单品的系统化管理,将传统家电设备升级到智能产品并从智能单品到接入网络的互联互通,实现智能家电的自动控制及远程控制。除了生活方面的方便快捷,在安防方面的表现也更为全面,传统的安防摄像头只能记录监控画面,这就意味着如果想要获取实时的消息需要有人长时间盯着屏幕。而将安防加入智能家居系统后,只要出现任何异常状况,就算远在千里之外,也能通过系统得知,并能实时获取到现场图像,采取相应措施。智能家居最基本的宗旨是为人们提供一个舒适、安全、便利和生活高效的环境。对智能家居产品来说,最重要的是以实用为核心,以实用性、易用性和人性化为主,摒弃华而不实的功能。智能家居是否成熟,取决于系统的设计和配置是否经济合理并且系统能否成功运行,系统的使用、管理和维护是否方便,系统或产品的技术是否成熟适用。5.2、后续发展及完善
总结本次的设计,虽然已经基本实现了中控制方式的智能家居系统,也实现了局域网的数据上报和互联网的指令下发控制,但是这只是智能家居的基础,产品的形成需要接受市场的考验。单纯的数据收集和远程控制远远满足不了用户的需求,也很难让智能家居成为社会的刚需。要使智能家居更能让用户接受,智能家居产品要让用户用起来真正感到舒适和便利。按照本次智能家居系统的设计,应用场景根据不同的传感器搭配还可以以更加丰富的形式展现出来,比如在北方,以温湿度传感器和空气加湿器的搭配便可以保证室内的湿度适宜,并不需要人为参与就能有舒适的生活环境。再比如,在局域网内,可以在各个智能设备内集成语言控制,用户可以无需启动手机APP,只需要要喊出设定的命令,便可以控制相应的设备做不同的动作。而在本系统中的Zigbee协调器,作为局域网的集中器,可以接上触屏显示器,既可以直观地显示所有设备的运行状态,又方便控制。
六、参考文献[1]王娟.基于ZigBee无线传感网络的智能家居系统设计与实现[D].2013[2]王博.基于ZigBee无线组网技术的智能家居系统设计[D].2012[3]雷梁.基于ZigBee无线传感网络的嵌入式智能家居监控系统研究[D].2009[4]高守玮,ZigBee技术实践教程[M].北京:航空航天大学出版社,2009.[5]王小强,ZigBee无线传感器网络设计与实现[M]北京:化学工业出版社,2012.七、致谢
在论文完成之际,我首先要衷心感谢陈国鼎导师。毕业设计及论文从选题、设计到撰写、定稿过程中,自始至终老师都悉心指导,给予我莫大的帮助。陈国鼎老师严谨治学的态度,都给我留下了深刻的印象。感谢母校对我的培养,使我既能在学校学习到专业的知识,也懂得很多为人处事的道理。感谢机智云公司对物联网云服务出色的贡献,使得像我们处于底层的嵌入式开发者能够快速便捷地完成整个系统的应用层服务的对接。最后,感谢所有答辩委员会的老师,对于你们百忙之中审阅我的论文表示由衷的谢意。
|
|