版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
、上、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、上、上个个个个个个个个个个个个个个个个个个小实践教学、上、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、卜、上、上*******************兰州理工大学计算机与通信学院2014年春季学期物联网综合应用实践课程设计题目:基于物联网的智能家居演示系统专业班级:姓名:学号:指导教师:成绩:摘要随着社会经济的飞速发展,人民生活水平的迅速提高,人们对家居生活的品质提出了更高的要求。基于ZigBee的物联网智能家居系统由于其能耗和成本相对较低、组网较便捷、安全性高等优点,相对来说比较适合智能家居的发展要求,迅速成为智能家居系统设计研究的重点。基于ZigBee的物联网的智能家居系统的设计、开发和利用,对人们提高家居生活的品质和品位提供了一个很好的手段。本文解析Zigbee技术,分析基于ZigBee的物联网的智能家居系统的技术结构,探究基于Zigbee的物联网的智能家居系统。在设计中,为了实现智能家居系统的远程管理和无线传输的功能,利用ZigBee无线网络技术,以CC2530芯片和相关的一些外围器件组建成整个系统的家庭网关控制平台,而家居内部控制网络则利用ZigBee无线网络技术来实现。在家庭内部控制网络中,采用美国德州仪器TI公司生产的CC2530芯片来实现家庭内部控制网络中协调器节点和终端节点的功能,通过将家庭网关(主控制器、测温传感器、继电器分别与CC2530射频芯片相结合,设计了家用电器开关控制模块和测温控制模块,实现家居的智能化管理。关键词:智能家居,Zigbee技术,CC2530,物联网目录一、系统介绍 1-1.1智能家居 1-1.2关键技术 2-1.2.1物联网技术 2-1.2.2ZigBee技术 3-1.3系统开发平台 4-1.3.1硬件平台 4-1.3.2软件平台 6-1.3.3演示平台 11-1.4演示系统拓扑结构 12-二、硬件系统设计 13-三、软件系统设计 16-3.1创建工程 16-3.1.1建立工程 16-3.1.2工程选项设置 17-3.1.3添加文件 17-3.2任务与事件 18-3.2.1自定义事件 18-3.2.2事件触发 18-3.2.3定义事件触发函数 18-3.2.4添加事件处理函数 18-3.3设备信息配置 19-3.3.1ProfileID 19-3.3.2设备 19-3.3.3端口 19-3.3.4命令 20-3.3.5端口描述符 20-3.4建网与入网 21-3.5数据通信--- 23-3.5.1数据通信格式 23-3.5.2发送数据 23-3.5.3接收数据 23-3.6人机交互 ——24-3.6.1LED显示 24-3.6.2LCD显示 24-3.7生成HEX文件 25-四、系统测试 26-五、总结 27-致谢 28-参考文献 -29-一、系统介绍1.1智能家居目前的智能家居还处于一个初始发展阶段,国际社会暂时还没有形成一个明确的定义。通常来说,智能家居就是利用计算机、网络、通信、传感与自动控制等技术,将与家庭生活有关的各种应用子系统有机的结合在一起,通过综合管理,让家庭生活更舒、安全、有效和节能。智能家居一般包括以下系统:可视对讲、家庭安防、网络通信、互动娱乐、智能照明、家电控制。并且可以实现在生活中的智能化控制,以及网络的远程监控和管理。智能家居的发展前景给了当今社会各个行业领域的人们以无限的遐想,无论家电制造商还是普通消费者,都能够或多或少地对未来家居的美好愿景给予独特的期待。但目前现有的智能家具设备却明显存在成本高、信息安全不能得到保障、系统应用不够成熟、各操作界面不够友善、没有国际统一标准等诸多阻碍其迅速发展的问题。目前市场中的家具设备种类繁多、结构简单、信息传输模式、通信组网方式也各有门路,人们期待中的智能家居系统在数据格式、符号和语法上存在很大的差异,会带来无法预知的困难。针对该难题,数字生活联盟(DLNA通过制定通用协议手段,已经解决了会员商家设备的互联互通问题。但共享数据内容的模式需要使用者以面向设备的方式来操作,没有办法进行统一强制性规定;同时,复杂的内容检索、繁复的设备操控等问题也暂时都没有寻求到有效地解决方案。但是,无论问题怎样存在,普适计算、移动计算、虚拟计算机、云计算技术的飞速发展已经悄悄地给人类和家居环境之间的关系产生了微妙的影响;家居空间的计算模式正逐渐从面向技术转化为面向用户,家居环境物理世界和数字世界正加速融合。智能家居是物联网技术的第三大应用领域。物联网大潮下的智能家居行业在中国乃至全世界都有广阔的前景,是一个朝阳行业,蕴含着巨大的市场潜力。本系统利用物联网的传感、互联、智能控制等技术特点构建新型智能家居系统,将GPRS移动通信技术、嵌入式Internet技术与新一代无线网络通信技术ZigBee相结合,克服了有线布线的弊端,配置灵活、实时性好,势必是未来智能家居系统的发展趋势。智能家居系统包含的主要子系统有:家居布线系统、家庭网络系统、智能家居(中央控制管理系统、家居照明控制系统、家庭安防系统、背景音乐系统(如TVC平板音响、家庭影院与多媒体系统、家庭环境控制系统等八大系统。其中,智能家居(中央控制管理系统、家居照明控制系统、家庭安防系统是必备系统,家居布线系统、家庭网络系统、背景音乐系统、家庭影院与多媒体系统、家庭环境控制系统为可选系统。在智能家居系统产品的认定上,厂商生产的智能家居必须是属于必备系统,能实现智能家居的主要功能,才可称为智能家居。因此,智能家居(中央控制管理系统、家居照明控制系统、家庭安防系统都可直接称为智能家居。而可选系统都不能直接称为智能家居,只能用智能家居加上具体系统的组合表述方法,如背景音乐系统,称为智能家居背景音乐。在智能家居环境的认定上,只有完整地安装了所有的必备系统,并且至少选装了一种及以上的可选系统的智能家居才能称为智能家居。智能家居具有以下功能:1智能灯光控制;2智能电气控制;3安防监控系统;4智能背景音乐;5智能视频共享;6科室对讲系统;7家庭影院系统;8系统整合控制。1.2关键技术智能家居融合了计算机、网络、通信、传感与自动控制等技术,是一个综合性的技术,它的设计主要有以下关键技术。物联网技术物联网技术的核心和基础仍然是互联网技术,是在互联网技术基础上的延伸和扩展的一种网络技术;其用户端延伸和扩展到了任何物品和物品之间,进行信息交换和通讯。因此,物联网技术的定义是:通过射频识别(RFID、红外感应器、全球定位系统、激光扫描器等信息传感设备,按约定的协议,将任何物品与互联网相连接,进行信息交换和通讯,以实现智能化识别、定位、追踪、监控和管理的一种网络技术叫做物联网技术。物联网(InternetofThings指的是将无处不在(Ubiquitous的末端设备(Devices和设施(FaciHties,包括具备“内在智能”的传感器、移动终端、工业系统、数控系统、家庭智能设施、视频监控系统等、和“外在使能”(Enabled的,如贴上RFID的各种资产(Assets、携带无线终端的个人与车辆等等“智能化物件或动物”或“智能尘埃”(Mote,通过各种无线和/或有线的长距离和/或短距离通讯网络实现互联互通(M2M、应用大集成(GrandIntegration、以及基于云计算的SaaS营运等模式,在内网(Intranet、专网(Extranet、和/或互联网(Internet环境下,采用适当的信息安全保障机制,提供安全可控乃至个性化的实时在线监测、定位追溯、报警联动、调度指挥、预案管理、远程控制、安全防范、远程维保、在线升级、统计报表、决策支持、领导桌面(集中展示的CockpitDashboard等管理和服务功能,实现对“万物”的“高效、节能、安全、环保”的“管、控、营”一体化。物联网主要有以下技术支撑:1RFID:电子标签属于智能卡的一类,物联网概念是1998年MITAuto-ID中心主任Ashton教授提出来的,RFID技术在物联网中主要起“使能”(Enable作用;传感网:借助于各种传感器,探测和集成包括温度、湿度、压力、速度等物质现象的网络,也是温总理“感知中国”提法的主要依据之一;M2M:这个词国外用得较多,侧重于末端设备的互联和集控管理,X-Internet,中国三大通讯营运商在推M2M这个理念;两化融合:工业信息化也是物联网产业主要推动力之一,自动化和控制行业是主力,但目前来自这个行业的声音相对较少。物联网的体系架构物联网体系主要由运营支撑系统、传感网络系统、业务应用系统、无线通信网系统等组成。通过传感网络,可以采集所需的信息,顾客在实践中可运用RFID读写器与相关的传感器等采集其所需的数据信息,当网关终端进行汇聚后,可通过无线网络运程将其顺利地传输至指定的应用系统中。此外,传感器还可以运用ZigBee与蓝牙等技术实现与传感器网关有效通信的目的。运用传感器网关可以实现信息的汇聚,同时可运用通信网络技术使信息可以远距离传输,并顺利到达指定的应用系统中。目前,我国无线通信网络主要有3G、WLAN、LTE、GPR,而4G仍为试点阶段。M2M平台具有一定的鉴权功能,因此可以为顾客提供必要的终端管理服务,同时,对于不同的接入方式,其都可顺利接入M2M平台,因此可以更顺利、更方便地进行数据传输。此外,M2M平台还具备一定的管理功能,其介意对用户鉴权、数据路由等进行有效地管理。而对于BOSS系统,其由于具备较强的计费管理功能,因此在物联网业务中得到广泛的应用。业务应用系统主要提供必要的应用服务,包括智能家居服务,一卡通服务,水质监控服务等,所服务的对象,不仅仅为个人用户,也可以为行业用户或家庭用户。在物联网体系中,通常存在多个通信接口,对通信接口未实施标准化处理,而在物联网应用方面,相关的法律与法规并不健全,这不利于物联网的安全发展。1.2.2ZigBee技术Zigbee是无线通信技术的一种典型代表,它在检测和控制方面有广阔空间,而且本身具有近距离、低复杂度、低功耗、低传输速率、低成本的绝对优势,这些与智能家居系统对家庭网络技术的要求不谋而合,已经确定了其取代有线组网,成为无线组网的最佳选择的地位;另一方面,市场上存在很多能够支持ZigBee技术的芯片,例如TI公司的CC2430、CC2530、CC1101,飞思卡尔公司的MC13XX系列等,便宜的价格,能大大地降低得智能家居系统的成本,因此高额的性价比最有可能被百姓接受。ZigBee是一个由可多到65000个无线数据传输模块组成的一个无线数传网络平台,在整个网络范围内,每一个ZigBee网络数据传输模块之间可以相互通信,每个网络节点间的距离可以从标准的75m无限扩展。与移动通信的CDMA网或GSM网不同的是,ZigBee网络主要是为工业现场自动化控制数据传输而建立,因而,它必须具有简单,使用方便,工作可靠,价格低的特点。每个ZigBee网络节点不仅本身可以作为监控对象,例如其所连接的传感器直接进行数据采集和监控,还可以自动中转别的网络节点传过来的数据资料。除此之外,每一个ZigBee网络节点(FFD还可在自己信号覆盖的范围内,和多个不承担网络信息中转任务的孤立的子节点(RFD无线连接。ZigBee是一种无线连接,可工作在2.4GHz(全球流行、868MHz(欧洲流行和915MHz(M国流行3个频段上,分别具有最高250kbit/s、20kbit/s和40kbit/s的传输速率,它的传输距离在10-75m的范围内,但可以继续增加。作为一种无线通信技术,ZigBee具有如下特点:1低功耗:由于ZigBee的传输速率低,发射功率仅为1mW,而且采用了休眠模式,功耗低,因此ZigBee设备非常省电。1.3系统开发平台在智能家居演示系统中,开发过程我们分为3个过程,分别是硬件设计,软件设计,还有系统演示的软件设计。他们各自的设计平台如下。1.3.1硬件平台在智能家居演示系统中,硬件平台选用德州仪器的OURS-IOTV2物联网创新实验套件CC2530。实验平台再现了一个典型的物联网完整架构,包含传感层、网络层与通信层。物联网的传感层通过无线组网或现场总线实现对各种物理量的传感采集和反馈控制,数据通过网络汇聚到服务器,再由服务器通过Internet或3G网络实现广域的数据发布,与各种终端,包括手机实现智能的交互与管理。OURS-IOTV2物联网创新实验套件包括硬件设备、软件资源、实验资源三大部分。硬件设备包括8个无线节点模块、8个传感器模块、嵌入式网关和其他配套设备。无线节点模块兼容目前市场上常用的无线芯片,包括CC2430、CC2431、CC2530、CC430、CEL工业模块以及国内常用的TinyOS的ATMEL128处理器。软件资源包括无线传感器网络软件、sniffer软件、嵌入式网关软件与PCServer端软件。如图(2所示。21域本低:国班次的初始成本在白登元Adi,估过班快就帷降到L5—2V美元,#11索典或心仪昆电1利班的低成本对于灯店胧岸也是•个受用的国累,笳时挺用;诙信时延和从休眠状态搬活的时兔都非常矩.糜型的捱紫设菁时超30g.体院激活的旧征心1如应泅用&芾然通接入的时延内比ms,内此EigB”技术适用F对M耻要求刘尉的无践幽Mi如才业控制场舍等).应用.打忖都容依大:一个显书皓相的力就一网络城名用以容纳的4个从世鬻和一个主曲*,, TH风内呵以同时存小猿表1的个别就让网络,冏H网雄翔成,艮活:副何对♦一了礴捕S!能策曲同时为徜胤喉带宽南地借业务超留了专用川队・开「发送数州的竟争和洞定.MAC层了用了完全确仇的数据辕输整式,每小发这的盥谁包御必须等恃接收方的确认信息一加果传输过程中出现同通可以进行叱发一。安全:EUB"提供『乩『物坏冗企校验〔CRG的数据佻法慎并心小动能,支持‘里战和认语.黑用了AEST组的加帘算法杵个应用"JU蛀活确定其安全试性口按照I打帙吧--旗照网内聒4层从上向下士别为物理篇tFHU,同珞层(IfflC).媒体访网控制层(MAC)和应用闻1AFL>「加图1所示.图2物联网创新实验套件图3物联网创新实验套件模块介绍
尢找MlI寸M模块无城电流傕鼎模块无推电陆晦感模裁无法网络孙迎器尢找MlI寸M模块无城电流傕鼎模块无推电陆晦感模裁无法网络孙迎器」二线推电器料能模跳工注向舒加的器材面 (赛列模次3Cnrt^M3小中可中川伏摸地电儿抻阳工法城块书’展板1.3.2软件平台在智能家居演示系统的设计过程中,我们要将设计好的软件代码下载到开发板上进行系统的演示,在进行软件程序的设计过程中,我们主要用到IAREmbeddedWorkbench软件和ZigBee协议栈,我们运用和硬件平台相容的TIZ-Stack协议栈。IAREmbeddedWorkbench软件的介绍EW是IAREmbeddedWorkbench的简称,它的C/C++交叉编译环境和调试器是目前世界上最完善、最易使用的嵌入式应用开发工具。他对不同的微处理器提供一样直观的用户界面。目前它可以支持35中以上的8位/16位/32位ARM微处理器。EW由嵌入式C/C++编译器、汇编器、连接定位器、库管理员、编译器、项目管理器以及C-SPY调试器组成。使用IAR的编译器能最大程度优化和紧凑代码,节省硬件资源,最大限度降低产品成本,提高产品竞争力。EW是IAREmbeddedWorkbench集成编译器的主要特征如下:高效的PROMable代码;完全标准C兼容;内建对应芯片的程序速度和大小优化器;目标特性扩充;版本控制和扩展工具支持良好;便捷的中断处理和模拟;瓶颈性能分析;高效浮点支持;内存模式选择;工程中相对路径支持。开启IAREmbeddedWorkbench软件,其界面如图4所示。
图4IAREmbeddedWorkbench软件开启界面在IAREmbeddedWorkbench软件中我们可以像编写单片机代码那样进行程序的设计,然后在“Options”选项中设置工程参数,接下来编译、链接、下载,安装仿真器进行程序调试。程序调试界面如图5所示。FileEditViewPrqjtrtDebugTexas[nttnjmtiitEEmulatorToolsWindowHelp1胆m修侬"ICectefcr8O5LMMiiBsiuiie<iecc25ao,h*XJ*-Jf*声-M***FileEditViewPrqjtrtDebugTexas[nttnjmtiitEEmulatorToolsWindowHelp1胆m修侬"ICectefcr8O5LMMiiBsiuiie<iecc25ao,h*XJ*-Jf*声-M***£,^£1/dZX口口JmtE.ii:for(产上13csii?y0000?575FEPI4^0:zzjDODONSC294氏1a")DOaO^A12Utl5400B09DD294XLairtLDaDD9F口口UWl皂0000A400DOAS90Q0A&PQPQA72TIZ-Stack软件介绍TIZ-Stack是基于一个轮转查询式操作系统。Z-Stack的main函数ZMain.c中,总体上来说,它一共做了两件工作,一个是系统初始化,即由启动代码来初始化硬件系统和软件架构需要的各个模块,另外一个就是开始执行操作系统实体。如图6所示。a.系统初始化系统启动代码需要完成初始化硬件平台和软件构架做需要的各个模块,为操作系统的运行做好准备工作,主要分为初始化系统时钟、检测芯片工作电压、初始化堆栈、初始化各个硬件模块、初始化FLASH存储、形成芯片MAC地址、初始化非易失变量、初始化MAC层协议、初始化应用帧层协议、初始化操作系统等十余部分,其具体流程图和对应的函数如图7所示。图6协议栈主要流程图5IAREmbeddedWorkbench软件下载器调试界面图7系统初始化流程操作系统的执行启动代码为操作系统的执行做好了准备工作后,就开始执行操作系统入口程序,并由此彻底将控制权移交给操作系统。其实,操作系统实体只有一行代码:osal_start_system(;//NoReturnfromhere注释的意思是本函数不会返回,是一个死循环。这个函数就是轮训查询式操作系统的主体部分。函数的主体部分代码如下:for(;;{do{if(tasksEvents[idx]//Taskishighestprioritythatisready.{break;}}while(++i待处理的具有dx<tasksCnt;//得到了最高优先级的任务索引idxif(idx<tasksCnt//确认本次有任务需要处理{uint16events;halIntState_tintState;//进入/退出临区,来取出需要处理的任务中的事件HAL_ENTER_CRITICAL_SECTION(intState;events=tasksEvents[idx];tasksEvents[idx]=0;//CleartheEventsforthistask.HAL_EXIT_CRITICAL_SECTION(intState;activeTaskID=idx;events=(tasksArr[idx](idx,events;//通过指针调用来执行对应的任务处理函数activeTaskID=TASK_NO_TASK;HAL_ENTER_CRITICAL_SECTION(intState;tasksEvents[idx]|=events;//Addbackunprocessedeventstothecurrenttask.HAL_EXIT_CRITICAL_SECTION(intState;}//本次事件处理函数执行完成,继续下一个循环}操作系统专门分配了存放所有任务事件的tasksEvents口这样的数组,每一个单元对应存放每一个任务的所有事件。在这个函数中,首先通过一个do-while循环来遍历tasksEvents口,找到第一个具有事件的任务,然后跳出循环,此时,就得到了事件待处理的具有最高优先级的任务的序号idx,然后通过event=tasksEvents[idx]语句,将这个当前具有最高优先级的任务的事件取出,接着就是调用(tasksArr[idx](idx,events函数来执行具体的处理函数。在项目中组织Z-Stack文件为了更好地从整体上认识Z-Stack架构,我们以SimpleApp为例来说明在具体的项目中怎样把Z-Stack中的文件组织起来,如图8所示。□[3SimpleApp-SimpleContr...—ElDApp-SDHAL-SDMAC-H±1DMT-H3DNWK-HUDOSAL—S匚]Profile—0CHSecurity—ECJSen/ices—SDlTools-HZIDZDO—0口ZMac—SCJZMain—SDOutput图8Z-Stack在项目中的目录结构各个目录的含义如下:。1App:应用目录,其结构如图9所示。这个目录下的四个文件就是创建一个新项目时要只要添加的文件。。2HAL:硬件层目录,其结构如图10所示。Commom目录下的文件是公用文件基本上与硬件无关。Include目录下主要包含各个硬件模块的头文件,而Target目录下的文件是跟硬件平台相关的。。3MAC:MAC层目录,其结构如图11所示。HighLevel和LowLevel两个目录表示MAC层分为高层和底层两层,Include目录下包含了MAC层的参数配置文件及其MAC层的LIB库的函数接口文件。。4MT:监控调试层目录,该目录下的文件主要用于调试目的,即实现通过串口调试各层,与各层进行直接交互。。5NWK:网络层目录,含网络层配置参数文件及网络层库的函数接口文件,及APS层库的函数接口。。6OSAL:协议栈的操作系统。。7Profile:AF层目录,包含AF层处理函数接口文件。。8Security:安全层目录,包含安全层处理函数接口文件。。9Service:ZigBee和802.15.4设备的地址处理函数目录,包括地址模式的定义及地址处理函数。。10Tools:工程配置目录,包括空间划分及Z-Stack相关配置文件。。11ZDO:指ZigBee设备对象,可认为是一种公共的功能集,方便用户用自定义的对象调用APS子层的服务和NWK层的服务。。12ZMac:ZMac层目录如图12所示,其中zmac.c是Z-StackMAC导出层接口文件,zmac_cb.c是ZMac需要调用的网络层函数。。13ZMain:ZMain目录如图13所示,在ZMain.c函数中主要包含了整个项目的入口函数main(,ffiOnBoard.c中包含对硬件开发平台各类外设进行控制的接口函数。。14Output:输出文件目录,这个EW8051IDE自动生成。
TUlApp—S0sapi.c——Dsapi.h——QSimpleApp.h—SimpleCollector.c—0区]SimpleController.c——SimpleSensor.c——SimpleSwitch.c—I^lDApp—EQsapi.c——Bsapi.h—QSimpleApp.h——SimpleCollector.c—S0SimpleController.c—SimpleSensor.c——SimpleSwitch.cTU1A叩T卫国sapi.c■—L.Sinnpl&App.h——'gSimpleCollector.cTSRSinripleQcntroller.c..%SinnpleS&risor.G—kE;innpl3}词忙h.匚T^CJApp—SE|sapi.csaoi.h——[?]SimpleApp.h—I=lDApp—E0—I=lDApp—E0sapi.csapi.hQSimpleApp.hSimpleCollector.c—E0SimpleController.c1.3.3演示平台在智能家居演示系统中,演示平台我们选用实验套件提供的PCServer端软件,奥尔斯物联网综合演示系统,该软件是由北京奥尔斯和美国德州仪器联合开发针对IOTV2物联网实验套件。软件里面含有拓扑结构、数据视图、智能家居、智能农业等模块,用户界面亲切,已于操作,只要与开发板连接成功,在正确的程序下,就可以实现系统的演示。在这个演示系统中,连接时用到网线连接,所以,要将串口转换为网口,我们利用实验箱提供的转换转置,只要输入合适的地址和连接端口,就可连接成功,这样就可以实现开发硬件和PC机的连接,其连接界面如图14所示。—I^CJApp|—El国sapi.csapi.h—E]SimpleApp.h—SimpleCollector.c—1+10SimpleController.c——SimpleSensor.c SimpleSwitch.c图10HAL层目录结构图12ZMac层目录接口图13ZMain层目录接口图14PC端演示连接界1.4演示系统拓扑结构本智能家居演示系统旨在运用ZigBee技术构建一个模拟的家居检测控制系统。系统拓扑结构如图15所示。从图可以看出,本系统大致有安防传感子网、家电控制子网、信息
其中,安防子网由温度传感器、煤气传感器、人体红外感应传感器等各种传感器模块组成。家电控制子网内的设备基本为受控设备。通过监测环境温度、照度、煤气泄漏以及红外入侵等信息,可直接联动控制相关受控设备或将信息发送至管理平台,由信息管理平台决策如何处理这些信息。二、硬件系统设计系统采用北京奥尔斯和美国德州仪器联合研制的IOTV2物联网创新套件,以CC2530芯片作为核心协调器。为了简化系统,突出ZigBee的框架性,节点硬件采取了简化措施,具体如下:1温湿度模块使用STH10作为主芯片。2求救器由按键模拟:按键连接在P0.1上。3天线灯控、电动窗帘、空调开关、换气扇都由单一IO口P1.3控制,模拟开关动作。4防盗报警采用催化燃烧式可燃气体传感器。5照度监测使用光电池做传感器。116所示,为节点通用的怏件设计框图,电源管理图17、图18、图19、图20分别为列举煤气检测、红外报警器的电路、电动窗帘和控制类节点电路原理图。图16智能家居节点硬件设计框图
图17煤气泄漏呢检测电路原理图图18红外报警器电路原理图图19电动窗帘电路图20控制类节点电路三、软件系统设计网络协调器负责建立无线网络,接收终端节点的状态信息并报警或显示,发送命令控制节点状态。系统应用层的程序主要包括安防、家电控制、传感、无线数据传输和人机交互模块等模块。终端节点负责数据采集,报警或显示,发送状态信息给协调器。系统应用协叫屠帮统岫川层程作功匿机图入网模埃k船警怕地尢发热据*输模块安防休心摸城£经数据偿瞬”决层的程序主要包括传盛.报警r无钱数据传输和人机交互模块.重统应用值功能框架如明21所水.图21系统应用县功能机图协叫屠帮统岫川层程作功匿机图入网模埃k船警怕地尢发热据*输模块安防休心摸城£经数据偿瞬”决层的程序主要包括传盛.报警r无钱数据传输和人机交互模块.重统应用值功能框架如明21所水.图21系统应用县功能机图3.1创建工程LCD显小匕块
网缔状态期警公二砧拉照格式;科聘布思 i皎据格式定义泰电舛匕抬块IEC议警心数庶拄收3.1.1建立工程安装完ZStack-CC2530-2.5.1a后,找到C:\TexasInstruments\ZStack-CC2530-2.5.1a\Projects\zstack\Samples\SimpleApp\CC2530DB下的SimpleApp工程,它提供两个应用实例:温度传感器实验和灯开关实验。智能家居则实现由节点采集数据并将电器的开关动作等开关量传给协调器显示,以这一实例作为模板实现智能家居较为方便。双击SimpleApp.eww,打开工程,在Workspace下拉框中选择SimpleCollectorEB。保存后将文件夹名SimpleApp改为Coordinator,作为智能家居的协调器工程,路径为:C:\TexasInstruments\ZStack-CC2530-2.5.1a\Projects\zstack\Samples\Coordinator。在C:\TexasInstruments\ZStack-CC2530-2.5.1a\Projects\zstack\Samples目录下重新复制一个SimpleApp工程,打开工程,在Workspace下拉框中选择SimpleSensorEB,保存后将文件名SimpleApp改为EndDevice,作为智能家居的终端节点程序,路径为:C:\TexasInstruments\ZStack-CC2530-2.5.1a\Projects\zstack\Samples\EndDevice。3.1.2工程选项设置在智能家居系统中,将多数选项设置为默认值,仅对Preprocessor标签中的预编译选项DefinedSysbols修改。协调器工程SimpleCollectorEB修改后的预编译选项:CC2530EBHOLD_AUTO_START//表示不允许自动启动设备、自动建网REFLECTORNV_INIT//将设备的基本信息保存到非易失存储设备中,但不保存网络状态信息xNV_RESTORExMT_TASKLCD_SUPPORTED//支持设备的LCD显示系统中协调器建网通过按钮实现。终端节点工程SimpleSensorEB修改后的预编译选项为:CC2530EBHOLD_AUTO_STARTREFLECTORNV_INITNV_RESTORExMT_TASKxLCD_SUPPORTED要保证终端节点断电重启后仍保持原有的网络状态,设置NV_RESTORE;实现绑定功能则设置REFLECTOR。3.1.3添加文件演示系统的温度采集功能在协调器上,因此要在协调器工程中添加温度采集程序。编写温度采集程序:新建文件Untitledl,编写温度采集程序,将文件另存为ReadTemp.h放到C:\TexasInstruments\ZStack-CC2530-2.5.1a\Projects\zstack\Samples\Coordinator\Source目录下。为Coordinator工程的应用程序组添加ReadTemp.h:打开协调器工程Coordinator,在应用程序组(APP处单击“AddFiles”,找到ReadTemp.h后添加。然后在SimpleCollector.c中添加“#include"ReadTemp.h"”。3.2任务与事件自定义事件模板程序在SimpleCollector.c中定义了事件MY_STRAT_EVT,用于启动设备的协议栈,使设备建立网络或加入网络。#defineMY_START_EVT0x0001智能家居系统的协调器需要增加新的事件,用于触发网络状态更新和液晶显示。新增事件定义如下:#defineMY_UPDATE_NEW_EVT0x0002//更新网络状态#defineMY_SHOW_MAIN_MENU_EVT0x0004//显示主菜单#defineMY_SHOW_VICE_MENU_EVT0x0008//显示二级菜单事件触发以#defineMY_UPDATE_NEW_EV为例,当网络建立成功后要触发该事件来更新网络状态,因此,在建网回调函数zb_StartConfirm(SimpleCollector.c中触发该事件。if(status==ZB_SUCCESS{myAppState=App_START;//触发网络状态更新事件osal_set_event(sapi_TaskID,MY_UPDATE_NET_EVT;}osal_set_event函数中,sapi_TaskID表示触发事件myAppState=App_START所在的任务ID。sapi_TaskID在sapi.c中定义。定义事件触发函数在SimpleCollector.c中定义对应于新增事件的事件处理函数。staticvoidzb_UpdateNet(void;//更新网络状态voidShow_MainMenu(void;//LCD显主之菜单staticvoidShow_ViceMenu_2(uint8show_type;//LCD显示二级菜单添加事件处理函数SimpleCollector.c中的zb_HandleOsalEvent函数用于处理用户应用程序中自定义的事件,在zb_HandleOsalEvent中增加对应于新增事件的事件处理函数的代码如下:voidzb_HandleOsalEvent(uint16event{if(event&MY_START_EVT{zb_BuildNet;〃建立网络}if(event&MY_UPDATE_NET{zb_UpdateNet(;//更新网络状态}if(event&MY_SHOW_MINA_MENU_EVT{Show_MainMenu(;//LCD显示主菜单}if(event&MY_SHOW_VICE_MENU_EVTShow_ViceMenu_2(show_type;〃显示二级菜单}}在终端节点中添加的事件有:defineMY_UPDATE_NET_EVT0x0002//更新网络状态defineMY_MEASURE_EVT0x0004//节点状态监测defineMY_CURTAIN_CONTROL_EVT0x0008//窗帘控制对应的事件处理函数分别为:zb_UpdateNet(;//更新网络状态myApp_Measure(;//节点状态监测myApp_CurtainControlOver(;//窗帘控制3.3设备信息配置ProfileIDCoordinator工程中ProfileID的定义在SimpleApp.h中。模板程序的定义为:#defineMY_PROFILE_ID0x0F10//ProfileIDMY_PROFILE_ID可以设定为任意的16位值,但必须保证同一网络中协调器和各个节点的MY_PROFILE_ID值一致。设备设备ID和设备版本的定义在SimpleApp.h中。模板程序的协调器设备定义如下:#defineDEV_ID_COLLECTOR0x00//设备ID#defineDEVICE_VERSION_COLLECTOR0x01//设备版本终端节点设备定义如下:#defineDEV_ID_SENSOR0x02#defineDEVICE_VERSION_SENSOR0x01端口在SimpleApp.h中定义端口:#defineMY_ENDPOINT_ID0x02命令智能家居系统中,协调器不仅能够主动请求所有节点信息,而且需要控制每个节点的状态,各个节点必须能够及时将自己的状态信息返回协调器。其中。协调器与每一个设备的操作可以对应一个命令。因此,在SimpleApp.h中定义的命令如下程序:defineALLINFO0x00//请求所有节点信息defineCOOR0x00//显示为协调器信息defineTEMP0x01//温度defineILLUMINANCE0x02//照度计defineLIGHT10x03//灯1defineLIGHT20x04//灯2defineCURTAIN0x05//窗帘defineFAN0x06//风扇defineCONDITION0x07//空调defineGAS0x08//煤气检测defineINBREAK0x09//防盗报警器defineWELCOME0x0A//门迎defineSOS0x0B//老人求助器将命令添加到命令列表:对于协调器设备,ALLINFO为输出命令,ILLUMINMANCE为输入命令;对于终端设节点设备来说,ALLINFO为输出命令,ILLUMINANCE为输入命令。因此,协调器输入命令列表程序如下:constcId_tzb_InCmdList[NUM_IN_COOR]={ILLUMINANCE,LIGHT1,LIGHT2,CURTAIN,FAN,CONDITON,WELCOME,INBREAK,GAS,SOS};协调器的输出命令列表程序如下:ConstcId_tzb_OutCmdList[NUM_OUT_CMD_COOR]={ALLINFO,LIGHT1,LIGHT2,CURTAIN,FAN,CONDITION,WELOCME,INBREAK,GAS,SOS}终端节点的输出命令列表应与协调器输出命令列表相同,输出命令列表与协调器输入命令列表相同。修改输入输出命令个数如下:defineNUM_OUT_CMD_COOR10defineNUM_IN_CMD_COOR10端口描述符在SimpleCollector.c中修改协调器设备的简单描述符定义,程序如下:constSimpleDescriptionFormat_tzb_SimpleDesc={MY_ENDPOINT_ID,//EndpointMY_PROFILE_ID,//ProfileIDDEV_ID_COLLECTOR,//DeviceIDDEVICE_VERSION_COLLECTOR,//DeviceVersion0,//ReservedNUM_IN_CMD_COOR,//NumberofInputCommands(cId_t*zb_InCmdList,//InputCommandListNUM_OUT_CMD_COOR,//NumberofOutputCommands(cId_t*zb_OutCmdList//OutputCommandList};在sapi.c中的SimpleApp任务初始化函数SAPI_Init(bytetask_id中完成端口描述符的注册:sapi_epDesc.simpleDesc=(SimpleDescriptionFromat_t*&zb_SimpleDesc;
afRegister(&sapi_epDesc;用同样的方法完成终端设备简单描述符的定义和端口描述符注册。建网与入网模板程序中协调器建网的过程如图22所示。启动成功厂- I F触发MV_START_EVT触发模板程序中协调器建网的过程如图22所示。启动成功厂- I F触发MV_START_EVT触发ZBENTRYEVEBT事件扇动Stack程序初婚化SWI触发KEY怀建网结束设苴设备逻辑类o1拨动摇杆SW1,触发事件KEY_CHANGE,进入sapi.c中的事件处理函数SAPI_ProcessEvent(bytetask_id,UINT16enents,执行CaseKEY_CHANGE:zb_handleKey(((keyChange_t*pMsg->state,((keyChange_t*pMsg->heys;break;o2进入SimpleCollector.c中的zb_HandleKeys函数,从NV中读出设备的逻辑类型,并将设备逻辑类型改写为ZG_DEVICTYPE_COORDINATOR。zb_ReadConfiguration(ZCD_NV_LOGICAL_TYPE,sizeof(uint8,&logicalType;if(logicalType!=ZG_DEVICETYPE_ENDDEVICE图22协调器建网过程{logicalType==ZG_DEVICETYPE_ENDDEVICE;zb_WriteConfiguration(ZCD_NV_LOGICAL_TYPE,sizeof(uint8,&logicalType}设置设备的启动方式为ZCD_STARTOPT_QUTO_START。zb_ReadConfiguration(ZCD_NV_STARTL_OPYION,sizeof(uint8,&startOption;startOption==ZCD_STARTOPT_XUTO_START;zb_WriteConfiguration(ZCD_NV_STARTL_OPYION,sizeof(uint8,&startOption;设备复位:zb_SystemReset(;o3设备复位后重新启动,在SimpleApp任务初始化函数SAPI」nit的最后设置事件ZB_ENTRY_EVENT,再次进入事件处理函数SAPI_ProcessEvent,处理ZB_ENTRY_EVENT事件,执行zb_StartRequest(。此函数的功能是启动ZigBee协议栈并建立网络。O4设备启动完成后,产生事件ZDO_START_CHANGE,进入事件处理函数SAPI_ProcessEvent,执行caseZDO_STATE_CHANGE://Ifthedevicehasstartedup,notifytheapplicationif(pMsg->status==DEV_END_DEVICE||pMsg->status==DEV_ROUTER||pMsg->status==DEV_ZB_COORD{SAPI_StartConfirm(ZB_SUCCESS;}break;O5进入回调函数zb_StartConfirm,如果设备成功启动。修改设备状态为APP_START,如果设备启动失败,设置定时器,过myStartRetryDelay毫秒后触发MY_START_EVT事件,重新执行zb_StartRequest(;voidzb_StartConfirm(uint8status{if(status==ZB_SUCCESS{myAppState=APP_START;//加入网络,网络状态标志改变HalLedSet(HAL_LED_1,ON;//网络状态指示灯osal_set_event(sapi_TaskID,MY_UPDATE_NET_EVT;//触发更新网络状态事件}else{//Tryjoiningagainlaterwithadelayosal_start_timer(MY_START_EVT,myStartRetryDelay;//重新加入网络}}终端节点接入网络的过程与协调器建网过程类似。数据通信数据通信格式协调器与终端节点之间通信的主要内容是节点状态信息或报警信息。定义数据通信结构体代码如下:typedefstruct{uint8SENSOR_TYPE;//传感器类型uint8NODE_TYPE;//节点类型uint16LADDR;//节点长地址uint16SADDR;//节点短地址uint8SENSOR_DATA;//节点状态}NODE_INFO;发送数据以灯节点为例数据发送的过程代码如下:NODE_INFOnode_info;//定义节点信息结构体voidNodeInfo_Init(void//节点信息初始化{node_info.SENSOR_TYPE=LIGHT1;node_info.NODE_TYPE=ZG_DEVICETYPE_ENDDEVICE;osal_memcpy(&node_info.LADDR,&aExtendedAddress,sizeof(uint16;//获取长地址osal_memcpy(&node_info.SADDR,&_NIB.nwkDevAddress,sizeof(uint16;//获取短地址node_info.SENSOR_DATA=0x00;}接收数据数据接收代码如下所示:voidzb_ReceiveDataIndication(uint16source,uint16command,uint16len,uint8*pData{switch(command//判断命令caseLIGHT1://保存节点信息到node_infosal_memcpy(&node_info[LIGHT1],pData,sizeof(node_info[LIGHT!];break;„}}人机交互LED显示打开LED驱动程序hal_led.c,它提供了典型的LED显示接口函数。voidHalLedInit(void初始化LED。voidHalLedOnOff(uint8leds,uint8mode打开或关闭LED。Leds为LED位标志,用于选择所操作的LED。Mode为LED操作模式,可选择的值有LED_ON和LED_OFF。voidHalLedBlink(uint8leds,uint8numBlinks,uint8percent,uint16periodLED闪烁。leds为LED标志位。numBlinks为闪烁次数。period为闪烁的周期。percent为闪烁过程中LED点亮时间所占的百分比。4voidHalLedSet(uint8leds,uint8mode设置LED工作模式。leds为LED标志。Mode为LED工作模式。由以下几种参数可选择:BLINK,FLASH,TOGGLE,ON,OFF。LCD显示打开LCD的驱动程序hal_lcd.c,它提供了典型的LCD显示接口函数。voidHalLcdInit(初始化LCD。voidHalLcdWriteString(char*str,uint8option在LCD某一行显示字符。str是字符型指针,指向所要现实的字符,option用于设置显示的位置。若option为HAL_LCD_LINE_1,表示显示在LCD的第一行。voidHalLcdWriteValue(uint32value,constuint8radix,uint8option在LCD某一行显示数值。Value是显示的数值,radix为数值的类型,option为显示的位置。voidHalLcdWriteScreen(char*line1,char*line2在LCD上显示字符。字符型指针linel指向显示在第一行的字符,字符型指针line2指向显示的第二行字符。voidHalLcdWriteStringValue(char*title,uint16value,uint8format,uint8line在LCD某一行显示字符和数值。voidHalLcdWriteStringVakueValue(char*title,uint16value1,uint8format1uint16value2,byteformat2,uint8line在LCD某一行显示两个数值。staticvoidlcdUpdateLine(uint8line,uint8*pLine更新LCD上的某一行。line表示更新的哪一行,pline指向更新的字符。在ZMain.c中的ZSEGintmain函数中,LCDHalDriverInit函数调用了HalLcdInit(完成LCD的初始化,因此,在应用层程序中没有必要在进行初始化操作,直接调用接口函数即可。.7生成HEX文件如图23所示,对协调器工程设置Linker中的Output标签。打开Tools文件组中的配置文件f8w2530.xcl,取消对生成HEX文件的代码注释。编译协调器工程,产生HEX文件。用同样的方法生成终端节点的HEX文件,进行程序的烧写。
图23设置Outpu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年零售业分析报告及未来五至十年行业创新报告
- 人工智能教育在区域教育信息化中的伦理问题与协同发展研究教学研究课题报告
- 2026年智能家电行业创新报告及用户体验提升报告
- 誓师大会发言稿11篇
- 2024年食品报废销毁服务合同三篇
- 2026年浙江省桐乡市高三最后一考化学试题试卷含解析
- 中央空调水机安装与调试指南
- 肾癌组织中CXCR3的表达特征、关联因素与潜在意义探究
- 肾康宁方:开启早期糖尿病肾病治疗新视角-血清TNF-α及IGF-1水平的影响探究
- 肺部炎性肌纤维母细胞瘤13例诊疗分析与前沿洞察
- 2026年合肥聚和运营管理有限公司委托招聘考试备考题库及答案解析
- 诗歌鉴赏 【备课精研精讲】 八年级语文下册期末复习 课件
- GA 1809-2022城市供水系统反恐怖防范要求
- 水运工程监理质量评估报告
- GB/T 2934-2007联运通用平托盘主要尺寸及公差
- GB/T 13664-2006低压输水灌溉用硬聚氯乙烯(PVC-U)管材
- 《中图图书分类法》使用指南课件
- 部颁图30米小箱梁计算书模板
- 防雷工程施工方案
- 酒店服务指南
- 供应商审核表-供应商评审报告
评论
0/150
提交评论