版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
LOGO基于Zigbee技术的无线开关控制设计项目五成功的花,人们只惊羡它的明艳,谁知道它当初的嫩芽却浸透了奋斗的泪水,洒遍了牺牲的血雨目录Contents认识Zigbee技术任务一基于Zigbee协议栈的按键控制设计任务二基于ZigBee协议栈的无线点对点通信设计任务三任务1认识Zigbee技术引导案例基于Zigbee的智能家居系统基于Zigbee的智能家居系统,通过Zigbee技术连接家中的各种智能设备,如智能灯泡、智能插座、智能门锁、温湿度传感器等,实现远程控制和自动化管理。用户可以通过手机APP或智能音箱发送控制指令给Zigbee协调器。Zigbee协调器将控制指令转发给相应的Zigbee路由器或终端设备。Zigbee路由器或终端设备执行控制指令,如调整智能灯泡的亮度、开关智能插座等。终端设备还可以将采集到的数据(如温湿度、光照强度等)通过Zigbee网络发送给协调器,再由协调器上传至云端服务器进行存储和分析。Zigbee协调器智能音箱或手机APP智能灯泡智能插座智能门锁云服务器温湿度传感器5.1.1Zigbee概述
1.Zigbee简介Zigbee技术是一种短距离、低功耗的无线通信技术,它最初被称为“HomeRFLite”和“FireFly”技术,后来被统一称为Zigbee。该技术的命名灵感来源于蜜蜂通过Z字形飞行来通知同伴食物位置的方式,象征着Zigbee技术用于设备间的信息交流和通信。Zigbee技术主要用于物联网(IoT)设备之间的数据传输,特别适用于距离短、功耗低且传输速率不高的应用场景。5.1.1Zigbee概述
2.Zigbee协议协议是一系列的通信标准,通信双方需要按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式,通俗讲协议栈就是协议和用户之间的一个接口,开发人员通过使用协议栈来使用这个协议,进而实现无线数据收发。Zigbee协议分为两部分,IEEE802.15.4定义了PHY(物理层)和MAC(介质访问层)技术规范;Zigbee联盟定义了NWK(网络层)、APS(应用程序支持层)、APL(应用层)技术规范。Zigbee体系结构如下图所示。5.1.1Zigbee概述
2.Zigbee协议Zigbee体系结构5.1.1Zigbee概述
3.Zigbee协议栈协议栈是协议的实现,Zigbee协议栈就是将各个层定义的协议都集合在一起,以函数的形式实现,并给用户提供API,用户可以直接调用。协议较底下的层与应用是相互独立的,商业化的协议栈只提供给你接口。就像调用地图API时不需要关心底层地图是怎么根据位置或坐标绘制的,用户也不用关心协议栈底层的实现。每个Zigbee芯片厂商都有自己的协议栈,比如TI推出的Z-Stack协议栈,它是Chipcon推出其CC2430开发平台时,开发的一款商业级协议栈软件。5.1.1Zigbee概述
3.Zigbee协议栈Zigbee协议栈的使用一般步骤为:(1)组网:调用协议栈组网函数、加入网络函数,实现网络的建立和节点的加入。(2)发送:发送节点调用协议栈的发送函数,实现数据无线发送。(3)接收:接收节点调用协议栈的无线接收函数,实现无线数据接收。5.1.2Zigbee技术特点
Zigbee技术以其低功耗、低成本、短距离通信、大容量网络、高安全性以及自组网和路由能力等特点,在物联网领域中具有广泛的应用前景。这些特点使得Zigbee成为构建智能家居系统、工业自动化网络、农业物联网等应用的理想选择。Zigbee技术以其独特的特点在物联网领域中脱颖而出。Zigbee技术特点如下:1.低功耗2.低成本3.短距离通信4.大容量网络5.高安全性6.自组网和路由能力7.灵活性和可扩展性5.1.3Zigbee技术规格
1.标准Zigbee技术基于IEEE802.15.4标准,并在此基础上添加了网络层和应用层协议。这使得Zigbee技术能够与其他基于IEEE802.15.4标准的无线通信技术进行互操作。IEEE802.15.4标准定义了两种类型的设备,分别是全功能设备(FFD,FullFunctionDevice)和精减功能设备(RFD,ReducedFunctionDevice)。RFD只能作为终端节点,能和FFD进行通讯,经过FFD可以将测得数据传送出去。2.频段Zigbee技术支持2.4GHz(全球流行)、868MHz(欧洲流行)和915MHz(美国流行)三个频段。其中,2.4GHz频段具有最高的数据传输速率(最高可达250kbit/s),而868MHz和915MHz频段则具有较低的传输速率(分别为20kbit/s和40kbit/s)。5.1.3Zigbee技术规格
3.网络拓扑Zigbee网络采用了mesh网状网络拓扑结构,允许设备间通过多跳传输进行通信。这使得Zigbee网络具有更好的覆盖范围和稳定性,并能够在某些设备出现故障时自动寻找新的通信路径。在ZigBee无线传感器网络中有三种设备类型:协调器、路由器和终端节点。协调器主要负责网络组建、维护、控制终端节点的加入等。路由器主要负责数据包的路由选择,终端节点负责数据的采集,不具备路由功能。网络中结点数理论上最多可达65536个,可以组成星型、网状型和簇状型三种类型网络。5.1.4Zigbee应用场景
Zigbee技术因其低功耗、低成本、短距离通信和大量设备连接等特性,在智能家居、工业自动化与控制、智能城市、医疗监护、农业物联网、无线传感器网络、智能电表和能源管理以及仓储物流系统等多个领域都有着广泛的应用场景。随着技术的不断发展和完善,Zigbee技术的应用前景将更加广阔。以下是Zigbee主要的应用场景:1.智能家居Zigbee技术被广泛用于智能家居系统,包括智能照明、智能插座、智能温控器、智能门锁、智能家电等设备的连接。这使得用户可以通过智能手机、智能音箱(需支持Zigbee协议)或其他控制设备轻松地监控和控制家居设备。Zigbee技术能够将这些设备组成一个网络,甚至可以通过网关连接到Internet,让用户可以在任何地方监控和控制家中的设备,极大地方便了用户的日常生活。5.1.4Zigbee应用场景
2.工业自动化与控制在工业领域,Zigbee技术用于构建传感器网络和控制系统,实现设备间的数据传输、监测和协同工作。它可以用于监测温度、湿度、压力等工业参数,并实现对设备的远程控制,加强作业管理,降低成本。Zigbee网络的多路径路由特性,使得其在工业环境中能够可靠地传输数据,即使部分节点出现故障,整个网络也能保持通信的连续性。3.智能城市在智能城市应用中,Zigbee被用于连接城市基础设施,如智能路灯、垃圾桶、停车传感器等。通过Zigbee网络,这些基础设施可以实时传输数据到城市管理中心,帮助城市管理者更好地进行资源分配和决策。例如,智能路灯可以根据车流量和人流量自动调节亮度,以节约能源;垃圾桶可以实时监测垃圾满溢情况,以便及时清理。5.1.4Zigbee应用场景
4.医疗监护Zigbee技术也应用于医疗设备和健康监测系统,如可穿戴设备、医疗传感器和远程健康监测装置。这些设备可以通过Zigbee技术组成一个监测网络,实时监测患者的身体状况。由于是无线技术,传感器之间不需要有线连接,被监护的人可以自由活动,非常方便。医护人员可以实时接收患者的健康数据,并在必要时做出反应。5.农业物联网在农业领域,Zigbee技术用于实现对农田环境参数的监测,如土壤湿度、温度等。传感器收集的数据通过Zigbee网络传输到中央控制设备,供农民决策和参考。这有助于提高农业生产效率和资源利用效率,实现精准农业。5.1.4Zigbee应用场景
6.无线传感器网络Zigbee是构建无线传感器网络的理想选择,可用于各种监测和控制应用,包括环境监测、智能建筑管理、能源管理等。Zigbee网络的低成本、低功耗和自动组网特性,使得它在无线传感器网络应用中具有显著优势。7.智能电表和能源管理Zigbee技术还应用于智能电表和能源管理系统,实现对电力使用的监测和控制。通过Zigbee网络,智能电表可以实时传输用电数据到能源管理中心,帮助用户更有效地管理和利用能源。5.1.4Zigbee应用场景
8.仓储物流系统随着仓储物流系统的推广,对无限数据传输系统的需求呈上升趋势。Zigbee技术由于其安全性和可靠性、多路径路由等特性,特别适合于仓储和物流系统。它可以用于现场车辆的调度、仓储物流中的网络结构构建以及信息传输路径的动态调整等场景。5.1.5Zigbee工作原理
Zigbee网络由一个协调器(Coordinator)和多个设备(Device)组成。协调器负责网络的管理和控制,包括设备的加入、网络拓扑的建立、路由选择等。设备可以通过发送加入请求加入Zigbee网络,并根据需要作为路由器(Router)或终端设备(EndDevice)参与网络通信。路由器可以进行中继操作,帮助其他设备传递数据;而终端设备则不能进行中继操作,只能与路由器进行通信。Zigbee网络采用了低功耗的射频技术,确保设备的电池寿命较长。此外,Zigbee还采用了CSMA/CA(载波侦听多路访问/冲突避免)机制来避免数据传输时的冲突和碰撞。任务2基于Zigbee协议栈的按键控制设计引导案例智能家居Zigbee按键开关在智能家居系统中通过Zigbee智能开关可以实现智能家居设备的按键控制。Zigbee智能开关采用Zigbee无线通信技术,具有低功耗、自组网、高可靠性等特点,适合智能家居场景的应用。用户可以通过Zigbee智能开关远程控制家中的智能灯泡、智能插座、智能窗帘等设备。用户将设备连接到ZigBee网关后,即可智能的控制该设备,也可以在应用程序中创建组来管理家中的所有灯光,并可以将设备共享给其他家庭成员。5.2.1Zigbee协议栈运行原理 Z-Stack协议栈是TI公司推出的一种软件架构,主要用于简化ZigBee应用的开发过程。Z-Stack协议栈通过其独特的架构和机制,为ZigBee应用的开发提供了强大的支持。其运行原理可以概况如下:1.Z-Stack协议栈组成Z-Stack协议栈主要由以下几个部分组成:(1)物理层(PHY)物理层负责无线信号的发送和接收。(2)媒体访问控制层(MAC)媒体访问控制层负责管理设备如何共享无线信道,包括信道访问控制、帧校验等。5.2.1Zigbee协议栈运行原理 1.Z-Stack协议栈组成(3)网络层(NWK)网络层负责网络的建立和管理,包括设备的加入、离开网络、路由选择等。(4)应用层(APL)应用层包含应用支持子层(APS)和ZigBee设备对象(ZDO),负责定义具体的应用服务和设备管理功能。此外,Z-Stack还包含了硬件抽象层(HAL)、安全层(Security)、服务层(Services)等,以支持不同硬件平台的安全通信和服务功能。5.2.1Zigbee协议栈运行原理 2.运行机制Z-Stack协议栈采用操作系统抽象层(OSAL)作为其核心机制,实现了任务调度和资源分配。OSAL是一个基于任务轮询方式的操作系统,其主要工作流程如下:(1)系统初始化在系统启动时,Z-Stack会执行一系列的初始化操作,包括硬件初始化、软件架构初始化等,为操作系统的运行做好准备工作。5.2.1Zigbee协议栈运行原理 2.运行机制(2)任务调度OSAL通过维护一个任务列表(tasksArr)和事件表(tasksEvents)来管理各个任务。系统不断轮询每个任务,检查是否有事件发生(即tasksEvents中的相应位是否被置位)。(3)事件处理如果某个任务有事件发生,OSAL会调用该任务对应的事件处理函数(tasksArr中的相应元素)来处理该事件。处理完成后,会清除当前任务的事件标志,以便进行下一轮查询。5.2.1Zigbee协议栈运行原理 3.运行流程Z-Stack协议栈的运行流程大致如下:(1)系统启动执行main()函数,完成硬件和软件的初始化工作。(2)操作系统初始化通过调用osal_init_system()函数初始化OSAL操作系统,包括内存、消息队列、定时器等资源的初始化。5.2.1Zigbee协议栈运行原理 3.运行流程(3)任务初始化在osal_init_system()函数中,会调用osalInitTasks()函数来初始化各个任务,包括为任务分配空间、设置任务事件处理函数等。(4)启动操作系统通过调用osal_start_system()函数启动OSAL操作系统,进入任务轮询状态。(5)任务轮询与事件处理系统不断轮询每个任务,检查是否有事件发生。如果有事件发生,则调用相应的事件处理函数进行处理;如果没有事件发生,则继续轮询下一个任务。5.2.2开发环境搭建 搭建Zigbee开发环境,是Zigbee项目开发的基础。Zigbee开发环境的搭建涉及多个步骤和组件,主要包括选择合适的集成开发环境(IDE)、安装必要的软件工具包、配置硬件连接等。1.选择合适的开发环境Zigbee开发常用的开发环境(IDE)有以下几种:(1)IAREmbeddedWorkbenchfor8051(2)SimplicityStudio(3)CodeComposerStudio5.2.2开发环境搭建 2.安装相关软件(1)IAREmbeddedWorkbench的安装Step1:双击“EW8051-10201-Autorun.exe”运行IAR安装程序,如下图所示。5.2.2开发环境搭建 2.安装相关软件(1)IAREmbeddedWorkbench的安装在弹出的IAR安装界面中,选择第一选项“InstallIAREmbeddedWorkbenchfor8051”,如下图所示。5.2.2开发环境搭建 2.安装相关软件(1)IAREmbeddedWorkbench的安装Step2:在弹出的“LicenseAgreement”对话框中选择“Iacceptthetermsofthelicenseagreement”并点击“Next”,如下图所示。5.2.2开发环境搭建 2.安装相关软件(1)IAREmbeddedWorkbench的安装Step3:选择安装目录,然后点击“Next”。Step4:在“setupType”对话框中,选择“Complete”完整安装,点击“Next”。Step5:在“ReadytolnstalltheProgram”对话框中,点击“Install”开始安装。安装过程中可能会自动弹出“VisualC++RedistributablePackage”和驱动安装提示,不需要用户干预,等待安装完成。5.2.2开发环境搭建 2.安装相关软件(1)IAREmbeddedWorkbench的安装Step6:安装完成后,取消“Viewreleasenotes”、“LaunchIAREmbeddedWorkbench”两个复选框,点击“Finish”完成安装,如下图所示。回到IAR安装界面,点击“Exit”退出安装程序。5.2.2开发环境搭建 2.安装相关软件(1)IAREmbeddedWorkbench的安装Step7:右键单击IAREmbeddedWorkbench快捷方式,选择以管理员身份运行。打开IAREmbeddedWorkbench找到“Help”菜单中的“LicenseManager...”,启动IAR授权管理器,如下图所示。5.2.2开发环境搭建 2.安装相关软件(1)IAREmbeddedWorkbench的安装Step8:关闭弹出的欢迎界面。选择“License”菜单中的“OfflineActivation...”,如下图所示,打开“Offlineactivation”对话框。5.2.2开发环境搭建 2.安装相关软件(1)IAREmbeddedWorkbench的安装Step9:暂时关闭电脑病毒防护,将Keygen.rar解压,找到并右键点击“LicenseGenerator.exe”破解程序,选择以管理员身份运行。Step10:在“[Product]”列表中选择“IAREmbeddedWorkbenchfor8051,Standard”。Step11:点击“[LicenseNumber]”栏中的“Generate”按钮产生授权码,如右图所示。5.2.2开发环境搭建 2.安装相关软件(1)IAREmbeddedWorkbench的安装Step12:复制“[LicenseNumber]”中的授权码。Step13:切换到IAR的“Offlineactivation”对话框,将刚刚在破解软件中复制的授权码(LicenseNumber)粘贴到“LicenseNumber”文本框中,如图5-12所示。然后点击“下一页”,如右图所示。5.2.2开发环境搭建 2.安装相关软件(1)IAREmbeddedWorkbench的安装Step14:在“Chooselockingcriteria”对话框中选择“No”,如下图所示。然后点击“下一页”。5.2.2开发环境搭建 2.安装相关软件(1)IAREmbeddedWorkbench的安装Step16:点击“Saveactivationinformation”对话框中文本浏览按钮,选择“激活信息”保存位置,如保存为“D:\IAR\ActivationInfo.txt”。然后点击“下一步”进入“Requestanactivationresponsefile”对话框。Step17:点击“Requestanactivationresponsefile”对话框中的“下一页”按钮,如右图所示,进入“Usetheresponsefiletoactivatethelicense”对话框。5.2.2开发环境搭建 2.安装相关软件(1)IAREmbeddedWorkbench的安装Step17:切换到破解程序,点击“Activatelicense”栏中的“Browse...”按键,找到并打开Step16所保存的ActivationInfo.txt文件,如右图所示。5.2.2开发环境搭建 2.安装相关软件(1)IAREmbeddedWorkbench的安装Step17:然后点击“Activatelicense”按钮,将产生一个名为“ActivationResponse.txt”的文件,并将其保存在ActivationInfo.txt所在的目录中,如下图所示。“Activatelicense”按钮右边将提示“Done”,表示已生成“ActivationResponse.txt”文件。5.2.2开发环境搭建 2.安装相关软件(1)IAREmbeddedWorkbench的安装Step18:切换到“Usetheresponsefiletoactivatethelicense”对话框,点击文本框右边的“文件浏览”按钮,找到并打开Step17中所生成的ActivationResponse.txt”文件,如右图示;然后点击“下一步”完成破解。5.2.2开发环境搭建 2.安装相关软件(2)安装SmartRFFlashProgrammer编程器SmartRFFlashProgrammer是一款编程器软件,可用于对TI的基于8051的低功耗射频无线
MCU中的Flash进行编程。其安装步骤如下:Step1:找到“SmartRFFlashProgrammer”安装程序,右键单件选择以管理员身份打开,如下图所示;然后按提示安装即可。5.2.2开发环境搭建 2.安装相关软件(2)安装SmartRFFlashProgrammer编程器Step2:安装完成后双击桌面“SmartRFFlashProgrammer”的图标,打开软件,如下图所示。5.2.2开发环境搭建 2.安装相关软件(2)安装SmartRFFlashProgrammer编程器Step3:先用10Pin排线把仿真器(下载器)和开发板连接,再将USB一头接电脑,另一头接到仿真器上。注意:尽量不要热拔插仿真器的排线,否则需要按仿真器的RST,仿真器才能正常工作。仿真器与开发板和电脑连接如下图所示。5.2.2开发环境搭建 2.安装相关软件(2)安装SmartRFFlashProgrammer编程器Step4:打开SmartRFFlashProgrammer会检测到CC2530芯片,如下图所示(如果没识别CC2530,可按下仿真器复位按键):5.2.2开发环境搭建 2.安装相关软件(3)Z-Stack协议栈安装Z-Stack是TI提供的一套软件套件,用于开发Zigbee应用。可以到TI官网下载Z-Stack协议栈的安装包。以下为Z-Stack协议栈安装步骤:Step1:找到并双击运行“Z-stackcc2530-2.5.1a.exe”文件,如下图所示。5.2.2开发环境搭建 2.安装相关软件(3)Z-Stack协议栈安装Step2:在弹出的“Welcometothezstack-Cc2530SetupWizard”对话框中点击“Next”,如下图所示。5.2.2开发环境搭建 2.安装相关软件(3)Z-Stack协议栈安装Step3:在弹出的“LicenseAgreement”对话框中选择“Iaccepttheagreement”,然后点击“Next”,如下图所示。5.2.2开发环境搭建 2.安装相关软件(3)Z-Stack协议栈安装Step4:在弹出的“SelectDestinationLocation”对话框中点击“Browse”,选择协议栈安装路径(通常为默认路径);然后点击“Next”,如下图所示。5.2.2开发环境搭建 2.安装相关软件(3)Z-Stack协议栈安装Step5:在弹出的“ReadytoInstall”对话框中点击“Install”,开始安装协议栈,如下图所示。5.2.2开发环境搭建 2.安装相关软件(3)Z-Stack协议栈安装Step6:等待安装成功,在弹出的“Completingthezstack-Cc2530SetupWizard”对话框中取消复选框“ViewtheReleaseNotes”勾选,然后点击“Finish”,完成协议栈安装,如下图所示。5.2.2开发环境搭建 2.安装相关软件(3)Z-Stack协议栈安装通常,Z-Stack的安装只是将压缩包解压到指定目录,如图5-28所示。其中四个文件的作用分别是:Components是存放库文件的文件夹,包括ZD0,driver,hal,zcl等代码的库;Documents是存放开发文档的文件夹;Projects是存放TI协议栈的文件夹,掌握其中一两个基本就能做事了;Tools是存放一些上位机软件等的文件夹。5.2.2开发环境搭建 3.Z-stack协议栈的使用首先,在任意目录中新建一个TestApp文件夹,复制C:\TexasInstruments\ZStack-CC2530-2.5.1a目录下的Components和Projects文件夹到TestApp目录中。进入..\TestApp\Projects\zstack\Samples目录中,将GenericApp、SimpleApp这两个目录删除,只留下SampleApp目录。然后打开..\TestApp\Projects\zstack\Samples\SampleApp\CC2530DB目录,找到并双击打开SampleApp.eww文件,如下图所示。5.2.2开发环境搭建 3.Z-stack协议栈的使用在打开的IAR工程中包含APP、HAL、MAC、MT、NWK、OSAL、Profile、Security、Services、Tools、ZDO、ZMac、ZMain、Output等多个目录,如右图所示。5.2.2开发环境搭建 3.Z-stack协议栈的使用SampleApp工程中各个目录功能如下:App:应用层目录,这是用户创建各种不同工程的区域,在这个目录中包含了应用层的内容和这个项目的主要内容。HAL:硬件层目录,包含有与硬件相关的配置和驱动及操作函数。MAC:MAC层目录,包含了MAC层的参数配置文件及其MAC的LIB库的函数接口文件。MT:实现通过串口可控制各层并与各层进行直接交互NWK:网络层目录,包含网络层配置参数文件网络层库的函数接口文件及APS层库的函数接口。OSAL:协议栈的操作系统。Profile:Applicationframework用框架层目录,包含F层处理函数文件。应用框架层是应用程序和APS层的无线数据接口。5.2.2开发环境搭建 3.Z-stack协议栈的使用SampleApp工程中各个目录功能如下:Security:安全层目录包含安全层处理函数,比如加密函数等Services:地址处理函数目录,包括地址模式的定义及地址处理函数。Too1s工程配置目录,包括空间划分及Z-Stack相关配置信息。ZD0:ZD0目录ZMac:MAC层目录,包括MAC层参数配置及MAC层LIB库函数回调处理函数。ZMain:主函数目录,包括入口函数及硬件配置文件。Output:输出文件目录由IARIDE自动生成。5.2.2开发环境搭建 3.Z-stack协议栈的使用在App层中,SampleApp.c是Z-Stack提供的一个示例应用程序文件,用于提供给用户设置和使用Zigbee网络中的基本功能的接口,它提供了在Zigbee网络中实现设备功能的基本框架和示例代码。通过修改和扩展SampleApp.c,开发者可以轻松地实现自己的Zigbee设备应用。SampleApp.c中包括初始化函数(SampleApp_Init())、事件处理函数(SampleApp_ProcessEvent())、按键处理函数(SampleApp_HandleKeys)、消息发送函数(SampleApp_SendPeriodicMessage())、消息接收处理函数SampleApp_MessageMSGCB()等函数。开发者可以通过修改相关函数实现自定义功能。5.2.3Zigbee协议栈的按键控制程序设计1.Z-STACK按键的两种工作模式Z-STACK中按键有两种工作模式:轮询(Poll)和中断(Interrupt)。(1)轮询Z-STACK中按键处理函数是hal_key.c文件中定义的HalKeyPoll(void),该函数会在“HAL/common/hal_drivers.c”中Hal_ProcessEvent()的“HAL_KEY_EVENT”事件处理过程中被调用;轮询周期通常默认为100ms,通过在配置函数中设置软件定时器“osal_start_timerEx(Hal_TaskID,HAL_KEY_EVENT,100);”来启动定时器,当溢出的时候向HAL层发出HAL_KEY_EVENT事件。在事件处理函数中会检查当前是否使能中断模式,如果使能的话就跳到中断模式操作,否则重新启动定时器。HalKeyPoll()函数中会调用按键回调函数,根据按键状态来处理按键信息。5.2.3Zigbee协议栈的按键控制程序设计1.Z-STACK按键的两种工作模式(2)中断中断对应处理函数是
halProcessKeyInterrupt(void)会在对应管脚的中断处理函数中被调用。根据配置函数的参数interruptEnable的情况来设置中断或者轮询。当检查到有按键按下则会启动一个定时事件,定时长度由hal_key.c文件中的语句“#defineHAL_KEY_DEBOUNCE_VALUE25”定义。最终执行函数还是在HAL的事件处理函数中的HAL_KEY_EVENT中被执行。5.2.3Zigbee协议栈的按键控制程序设计1.Z-STACK按键的两种工作模式(3)中断和轮询的区别按键中断和轮询的主要区别是轮询需要CPU定期的检查按键状态,当检测到按键按下则发出HAL_KEY_EVENT消息到HAL层来执行处理,中断则是当有按键按下立刻向HAL_KEY_EVENT发出消息,不需要CPU的检查。轮询的实时性比中断要差点,推荐用中断方式。5.2.3Zigbee协议栈的按键控制程序设计2.Z-STACK按键的使用Z-STACK按键主要使用IO来设置,这里需要设置的参数主要有按键设置在哪个端口以及掩码、按键中断使能标志以及掩码、引起中断的上升沿还是下降沿以及掩码。涉及的主要寄存器有PICTL端口输入中断控制、IEN1端口0总中断使能、IEN2端口1和2总中断使能。5.2.3Zigbee协议栈的按键控制程序设计2.Z-STACK按键的使用(1)定义按键端口和位打开hal_key.c文件,找到定义按键端口和位的代码,如下图所示。5.2.3Zigbee协议栈的按键控制程序设计2.Z-STACK按键的使用(1)定义按键端口和位其中,对按键端口和位定义以及端口定义的代码如下:#defineHAL_KEY_SW_6_PORTP0//SW_6的IO端口#defineHAL_KEY_SW_6_BITBV(1)//SW6接到IO端口的位数为1#defineHAL_KEY_SW_6_SELP0SEL//SW_6的IO端口功能选择#defineHAL_KEY_SW_6_DIRP0DIR//SW_6的IO端口方向5.2.3Zigbee协议栈的按键控制程序设计2.Z-STACK按键的使用(2)中断触发方式配置按键的中断触发方式配置在按键端口和位的定义下方,其代码如下://SW_6的IO端口边沿掩码#defineHAL_KEY_SW_6_EDGEBITBV(0)//SW_6的IO端口中断的边沿选择#defineHAL_KEY_SW_6_EDGEHAL_KEY_FALLING_EDGE5.2.3Zigbee协议栈的按键控制程序设计2.Z-STACK按键的使用(3)中断配置按键的中断配置代码如下:#defineHAL_KEY_SW_6_IENIEN1//SW_6的IO端口中断使能#defineHAL_KEY_SW_6_IENBITBV(5)//SW_6的IO端口中断使能的掩码#defineHAL_KEY_SW_6_ICTLP0IEN//SW_6的IO端口总中断#defineHAL_KEY_SW_6_ICTLBITBV(1)//SW_6的IO端口总中断掩码#defineHAL_KEY_SW_6_PXIFGP0IFG//SW_6的IO端口中断标志位5.2.3Zigbee协议栈的按键控制程序设计2.Z-STACK按键的使用(3)中断配置按键的中断触发方式配置在中断触发方式配置下方,其代码如下:#defineHAL_KEY_SW_6_IENIEN1//SW_6的IO端口中断使能#defineHAL_KEY_SW_6_IENBITBV(5)//SW_6的IO端口中断使能的掩码#defineHAL_KEY_SW_6_ICTLP0IEN//SW_6的IO端口总中断#defineHAL_KEY_SW_6_ICTLBITBV(1)//SW_6的IO端口总中断掩码#defineHAL_KEY_SW_6_PXIFGP0IFG//SW_6的IO端口中断标志位5.2.3Zigbee协议栈的按键控制程序设计2.Z-STACK按键的使用(4)按键配置例如,需要设置HAL_KEY_SW_6为P0.4为输入下降沿有效中断设置如下:#defineHAL_KEY_SW_6_PORTP0#defineHAL_KEY_SW_6_BITBV(4)#defineHAL_KEY_SW_6_SELP0SEL#defineHAL_KEY_SW_6_DIRP0DIR#defineHAL_KEY_SW_6_IENIEN1#defineHAL_KEY_SW_6_IENBITBV(5)#defineHAL_KEY_SW_6_EDGEHAL_KEY_FALLING_EDGE#defineHAL_KEY_SW_6_EDGEBITBV(0)#defineHAL_KEY_SW_6_ICTLPICTL#defineHAL_KEY_SW_6_ICTLBITBV(4)#defineHAL_KEY_SW_6_PXIFGP0IFG5.2.3Zigbee协议栈的按键控制程序设计2.Z-STACK按键的使用(5)设置按键查询方式按键查询方式如果为轮询方式,则不用修改代码。按键查询方式如果为中断方式,则需要打开ZMain层中的“OnBoard.c”文件,并找到InitBoard()函数,将其中调用的HalKeyConfig函数中的参数“HAL_KEY_INTERRUPT_DISABLE”修改为“HAL_KEY_INTERRUPT_ENABLE”,如下图所示。5.2.3Zigbee协议栈的按键控制程序设计2.Z-STACK按键的使用(6)修改按键处理函数打开SampleApp.c文件,找到按键处理函数SampleApp_HandleKeys()。在按键处理函数中将执行按键状态发生改变后的一系列操作。例如,当按键按下,则将LED灯1的显示状态切换,LED灯2闪烁4次,其代码如下图所示。5.2.3调试与运行1.连接设备将CC2530开发板通过下载器连接到电脑。2.选择设备类型Zigbee设备类型包括协调器(CoordinatorEB)、路由器(RouterEB)、终端设备(EndDeviceEB)。按键实验可以由单机完成,可以选择任意设备类型,比如选择协调器,如下图所示。5.2.3调试与运行2.编译连接首先选择SampleApp.c文件,然后点击编译图标;编译完成后(确保没有编译错误),点击连接图标;连接完成后(确保没有连接错误),再点击下载图标。编译、连接、下载操作如下图所示。5.2.3调试与运行3.运行调试等待下载完成后,会在DebugLog中提示下载成功,如下图所示。然后点击“go”图标运行,再点击“stop”图标结束,如下图所示。完成后就可以点击按键,查看LED状态是否执行正常。任务3基于ZigBee协议栈的无线点对点通信设计引导案例Zigbee智能照明系统Zigbee智能照明系统由一个协调器、若干个终端设备、多个手持的无线遥控器以及PC上位机界面等四个部分组成。协调器在该系统的作用是启动和配置网络。无线遥控器可以在室内的任何地方发送控制指令来控制一盏或多盏灯,使得整个照明系统更灵活。Zigbee的通信方式主要有三种:点播(单播)、组播、广播。Zigbee通信方式配置流程如下图所示。5.3.1Zigbee的通信方式 设备初始化声明点播的结构体变量添加点播的发送函数修改信息接收函数配置该变量的参数把该函数放入事件处理函数中点播通信方式是指Zigbee网络中的一个设备(源设备)直接向另一个设备(目标设备)发送数据。这种方式适用于点对点的通信场景,如智能家居中的智能灯泡直接接收来自控制器的指令。组播是介于单播和广播之间的一种通信方式。源设备将数据发送给一组特定的设备,这组设备在Zigbee网络中事先被定义为一个组。这种方式适用于需要将相同数据发送给多个相关设备的场景,如智能家居中的安防系统同时向所有安防设备发送警报信号。广播通信方式是指源设备向网络中的所有设备发送数据。这种方式适用于需要同时通知多个设备的场景,如智能家居中的中央控制器向所有智能设备发送时间同步信号。5.3.1Zigbee的通信方式 1.ZigBee信道Zigbee在3个频段定义了27个物理信道:868MHz频段中定义了1个20Kb/s信道,915MHz频段中定义了10个40Kb/s信道,信道间隔为2MHz,2.4GHz频段上定义了16个250Kb/s信道,信道间隔为5MHz。当建网过程开始后,网络层将请求MAC层对规定的信道或由物理层默认的有效信道进行能量检测扫描,以检测可能的干扰。网络层管理实体对能量扫描的结果以递增的方式排序,丢弃那些能量值超出可允许能量水平的信道,然后再由网络层管理实体执行一次主动扫描,结合检查PAN描述符,对剩下的信道选择一个合适的建立网络。5.3.2Zigbee无线通信要点 2.ZigBee网络编号在确定信道以后,下一步是确定网络编号(PANID),在Tools层的“f8wConfig.cfg”文件中,如果“ZDAPP_CONFIG_PAN_ID”被定义为0xFFFF,那么协调器将根据自身的IEEE地址建立一个随机的PANID(0~0x3FFF);如果“ZDAPP_CONFIG_PAN_ID”没有被定义为0xFFFF,那么网络的PANID将由定义的“ZDAPP_CONFIG_PAN_ID”确定。5.3.2Zigbee无线通信要点 3.ZigBee端口号Zigbee设备提供给用户使用的端口为1~240号端口。若用户要使用某端口收发数据,则需要使用afRegister()函数在设备上注册该端口,注册完成后便可以使用该端口收发数据。afRegister()函数的形参端口描述符“epDesc”,包含了该端口的所有信息,其代码如下:5.3.2Zigbee无线通信要点 typedefstruct{uint8endPoint;//端口号uint8*task_id;//该端口绑定的任务的任务ID,发送至此端口的数据都由此任务处理SimpleDescriptionFormat_t*simpleDesc; //简单描述符:存储该端口更多的信息afNetworkLatencyReq_tlatencyReq;//固定为noLatencyReqs}endPointDesc_t;3.ZigBee端口号以下代码是简单描述符所包含的信息:5.3.2Zigbee无线通信要点 Typedefstruct{byteEndPoint;//端口号uint16AppProfId;//应用规范IDuint16AppDeviceId;//特定规范ID的设备类型byteAppDevVer:4;//特定规范ID的设备的版本byteReserved:4;//AF_V1_SUPPORTusesforAppFlags:4.byteAppNumInClusters;//输入簇ID的个数cId_t*pAppInClusterList; //输入簇ID的列表byteAppNumOutClusters;//输出簇ID的个数cId_t*pAppOutClusterList;//输出簇ID的列表}SimpleDescriptionFormat_t;4.AF_DataRequest函数当子设备(终端节点或路由器)加入协调器的网络后,它们之间便可以相互通信了。Zigbee设备通信的实质是Zigbee设备端口与另一个Zigbee设备端口之间的通信。只要知道目标设备的网络地址和端口号就可以调用数据发送函数AF_DataRequest()发送数据给目标设备的端口,再由该端口绑定的任务来处理该数据。Zigbee设备通信示意图如下图所示。5.3.2Zigbee无线通信要点 无线通信注册注册Zigbee设备1Zigbee设备2
端口x
端口x自定义任务自定义任务绑定绑定4.AF_DataRequest函数Z-stack协议栈中唯一的数据发送函数AF_DataRequest(),其定义如下:5.3.2Zigbee无线通信要点 afStatus_tAF_DataRequest(afAddrType_t*dstAddr,endPointDesc_t*srcEP,uint16cID,uint16len,uint8*buf,uint8*transID, uint8options,uint8radius)ldstAddr:填充目标设备的网络地址和目标端口号。
lsrcEP:本身发送端口的端口描述符。
lcID:ClusterID,描述命令号。
llen:要发送数据的长度。
lbuf:指向发送数据缓存区的指针。
ltransID:指向发送的指针,每发送数据,序号加1。
loptions:有效位掩码的选项,取默认值。lradius:传送跳数,取默认值AF_DEFAULT_RADIUS。Zigbee无线数据收发设计以点播通信为例。首先配置点播通信,协调器和终端节点设置点播通信的代码可以共用,然后再分别修改协调器和终端节点代码。因为协调器不能进行点播发送,所以这里我们以终端节点作为发送设备,协调器作为接收设备,其实现步骤如下:5.3.3Zigbee无线数据收发设计 1.查找点播通信变量打开Profile层的“AF.h”文件,找到如下图所示代码段,该类型是枚举类型。其中,“Addr16Bit”表示点播,“AddrGroup”表示组播,“AddrBroadcast”表示广播。5.3.3Zigbee无线数据收发设计 2.添加点播簇ID的宏定义打开App层的“SampleApp.h”文件,添加点对点通信簇ID的宏定义代码:“#defineSAMPLEAPP_POINT_TO_POINT_CLUSTERID3”,如下图所示。5.3.3Zigbee无线数据收发设计 3.声明点播的簇ID打开App层的“SampleApp.c”文件,在“constcId_tSampleApp_ClusterList[SAMPLEAPP_MAX_CLUSTERS]”中添加“SAMPLEAPP_POINT_TO_POINT_CLUSTERID”声明点播的簇ID,如下图所示。5.3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河南南阳市西峡县2025-2026学年八年级下学期6月期末道德与法治试题(文字版含答案)
- 国民经济-木制容器制造行业(2025年)分析报告
- 2026中国具身智能产业商业化前沿洞察
- 掌握高分逻辑初中地理季风气候思维暑假思维提升复习课
- 虚拟现实内容制作师考核评定表
- 《望岳》古诗赏析教学
- 关于销售合同确认及后续执行通知函7篇
- 人力资源专员招聘效率测量考核表
- 环保行业项目执行经理效果绩效评定表
- 合同到期续签条款内容确认函(4篇)范文
- 2026年重庆市“五方面人员”选拔乡镇领导班子考试历年参考题库(含完整答案)
- 家政保姆入户服务标准化礼仪规范
- 2026秋新教科版科学五年级上册教学课件:第四单元 第5课 岩石的类别与变化 有2个微课视频
- 2026年中国石油辽阳石化分公司校园招聘笔试参考试题及答案解析
- 2026年新水利安全员b证考试试题及答案
- 二年级上册数学【应用题乘法】80题(含答案)
- 2026年全国中考语文试题汇编-议论文阅读及答案
- 华东师大版七年级数学下册期末测试卷(含答案)
- 浅表血管瘤的超声诊断与表现
- 民政知识培训课件
- 前列腺增生与前列腺癌的磁共振诊断及波谱分析
评论
0/150
提交评论