




已阅读5页,还剩58页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
淮安信息职业技术学院淮安信息职业技术学院 电子工程学院电子工程学院 物联网应用技术物联网应用技术 项目项目 实训指导书实训指导书 20132013 年年 0505 月月 前前 言言 智能家居最早是在 20 世纪 80 年代兴起于日本和美国 并在 20 世纪 90 年代进入我国 经过十几年的发展 特别是随着我国的住宅产业发展而迅速发展起来 而且在我国智能家 居引起越来越多的关注 随着人民生活水平的提高 人们对于居住环境智能化 舒适程度 等要求会越来越高 这给智能家居的发展提供了很大的市场空间 然而由于我国的居住模 式和发达国家存在很大的差别 我国人口众多 城市多以密集型住宅为主 这造成了国内 外在智能家居的发展和技术上存在了很大的差别 国内智能化更多地注重于整个小区智能 化的建设 最早从做对系统开始 并且逐渐由过去的非可视对讲过渡到目前的以黑白可视 对讲为主流 同时一些集成了安防功能 抄表功能 短信息等功能的对讲产品出现并在一 些地区应用 由于可视对讲的发展迅速 一些厂家的宣传 给人造成了一种错误的观念 小区只要做可视对讲或者综合布线就称得上智能化小区 随着对智能家居的认识越来越深入 人们逐渐意识到智能化的真正主体是家居的智能家居的智能 化化 更多地体现在家庭内部自动化家庭内部自动化 所以 20 世纪 90 年代后期 一些企业开始引入国外的 智能家居技术和产品在国内推广 还有一些大的集团公司也看好该领域 通过各种途径介 入 促进整个行业迅速发展 正如当今如火如荼的家电行业 无论是白色家电 还是黑色 家电 以及其他一些日用家电无不嵌入了自动化控制 其智能化程度已远是以前的普通家 电所不及了 目录目录 目录 1 准备知识 1 1 1 1 模块认识 1 准备知识 2 1 2 1 传感器认识 1 2 1 1 温湿度传感器 数字量 1 2 1 2 串行时钟输入 SCK 3 2 1 3 温湿度测量 5 2 1 4 通讯复位时序 5 2 1 5 CRC 8 Checksum 计算 6 2 1 6 状态寄存器 6 2 1 7 相对湿度 7 2 1 8 湿度信号的温度补偿 8 2 1 9 温度转换系数 8 2 1 10 露点 8 2 2 光敏传感器 模拟量 9 2 3 可燃气体传感器 模拟量 10 2 4 噪声传感器 模拟量 12 2 5 气压传感器 模拟量 12 2 6 震动传感器 开关量 13 2 7 红外热释电传感器 开关量 13 2 8 RFID 射频识别装置 15 准备知识 3 15 3 1 Flash Programmer 下载程序快速入门 15 项目一 应用设备的安装与调试 17 一 硬件实物介绍 17 二 硬件设备的安装与调试 26 实训硬件提供 26 目标 26 要求 26 1 1 工作任务 26 1 感知节点的设置 27 2 完善感知节点 ZigBee 协议栈代码 代码已给出 见附录 1 27 项目二 程序的编写与调试 28 2 1 初始操作 28 2 1 1 协议栈中网络结构类型修改 28 2 1 2 修改信道及网络编号 PANID 29 2 1 3 生成 Hex 文件操作 29 2 2 程序重点 29 2 2 1 消息处理流程 29 附录 1 36 一 SampleAppMaster c 36 二 SampleAppSlave c 47 附录 2 参考接线图 60 第 0 页 准备知识准备知识 1 1 1 模块认识模块认识 应用设备包括 环境监测模块 家居安防模块 家居三表模块 家居电子支付模块 开关动作电路 模拟电压控制电路 总线型控制电路 网络 USB 型 控制电路 硬件设备主要包含各类传感器和执行器 安防监测设备 三表设备等 准备知识准备知识 2 2 1 传感器认识传感器认识 传感器类型包括 开关量传感器 数字量传感器 模拟量传感器 开关量传感器 热释电红外传感器 数字量传感器 温湿度传感器 模拟量传感器 光敏 可燃气体 气压 噪声 震动 烟雾传感器 2 1 1 温湿度传感器 数字量 温湿度传感器 数字量 我们这里选用的的是属于 Sensirion 温湿度传感器家族中的贴片封装系列的 SHT11 它 将传感元件和信号处理电路集成在一块微型电路板上 输出完全标定的数字信号 传感器 采用专利的 CMOSens 技术 确保产品具有极高的可靠性与卓越的长期稳定性 传感器 包括一个电容性聚合体测湿敏感元件 一个用能隙材料制成的测温元件 并在同一芯片上 与 14 位的 A D 转换器以及串行接口电路实现无缝连接 因此 该产品具有品质卓越 响应迅速 抗干扰能力强 性价比高等优点 实物图如下 第 1 页 图 1 3 1 接口定义 注意 注意 NC 端口必须悬空 端口必须悬空 1 1 电源引脚 VDD GND SHT11 的供电电压范围为 2 4 5 5V 建议供电电压为 3 3V 在电源引脚 VDD GND 之间须加一个 100nF 的电容 用以去耦滤波 见图 1 4 SHT1x 的串行接口 在传感器信号的读取及电源损耗方面 都做了优化处理 传感器 不能按照 I2C 协议编址 但是 如果 I2C 总线上没有挂接别的元件 传感器可以连接到 I2C 总线上 但单片机必须按照传感器的协议工作 图 1 4 图 1 4 典型应用电路 包括上拉电阻 RP 和 VDD 与 GND 之间的去藕电容 第 2 页 2 1 2 串行时钟输入串行时钟输入 SCK SCK 用于微处理器与 SHT1x 之间的通讯同步 由于接口包含了完全静态逻辑 因而 不存在最小 SCK 频率 DATA 引脚为三态结构 用于读取传感器数据 当向传感器发送命令时 DATA 在 SCK 上升沿有效且在 SCK 高电平时必须保持稳定 DATA 在 SCK 下降沿之后改变 为确保通讯安全 DATA 的有效时间在 SCK 上升沿之前和下降沿之后应该分别延长至 TSU and THO 参见图 1 5 当从传感器读取数据时 DATA TV 在 SCK 变低以后有效 且维持到下一个 SCK 的下降沿 为避免信号冲突 微处理器应驱动 DATA 在低电平 需要一个外部的上拉电阻 例 如 10k 将信号提拉至高电平 上拉电阻通常已包含在微处理器的 I O 电路中 图 1 5 时序图 缩写词在表 1 1 有注释 加重的 DATA 线由传感器控制 普通的 DATA 线 由单片机控制 有效时间依据 SCK 的时序 请注意 数据读取的有效时间为前一个切 第 3 页 换的下降沿 表 1 1 SHT11 I O 信号特性 2 传感器的通讯 2 1 启动传感器 首先 选择供电电压后将传感器通电 上电速率不能低于 1V ms 通电后传感器需要 11ms 进入休眠状态 在此之前不允许对传感器发送任何命令 2 2 发送命令 用一组 启动传输 时序 来完成数据传输的初始化 它包括 当 SCK 时钟高电平 时 DATA 翻转为低电平 紧接着 SCK 变为低电平 随后是在 SCK 时钟高电平时 DATA 翻转为高电平 参见图 1 5 图 1 5 启动传输 时序 下述方式表示已正确地接收到指令 在第 8 个 SCK 时钟的下降沿之后 将 第 4 页 DATA 下拉为低电平 ACK 位 在第 9 个 SCK 时钟的下降沿之后 释放 DATA 恢复高电平 表 1 2 SHT11 命令集 2 1 3 温湿度测量温湿度测量 发布一组测量命令 表示相对湿度 RH 表示温度 T 后 控制器要等待测量 结束 这个过程需要大约 20 80 320ms 分别对应 8 12 14bit 测量 确切的时间随内部晶 振速度 最多可能有 30 的变化 SHT1x 通过下拉 DATA 至低电平并进入空闲模式 表 示测量的结束 控制器在再次 触发 SCK 时钟前 必须等待这个 数据备妥 信号来读出数据 检测数据可以先被存储 这样控制器可以继续执行其它任务在需要时再读出数据 接着传输 2 个字节的测量数据和 1 个字节的 CRC 奇偶校验 可选择读取 uC 需要 通过下拉 DATA 为低电平 以确认每个字节 所有的数据从 MSB 开 右值有效 例如 对于 12bit 数据 从第 5 个 SCK 时钟起算作 MSB 而对于 8bit 数据 首字节则无意始义 在收到 CRC 的确认位之后 表明通讯结束 如果不使用 CRC 8 校验 控制器可以在 测量值 LSB 后 通过保持 ACK 高电平终止通讯 在测量和通讯完成 后 SHT1x 自动转入休眠模式 警告警告 为确保自身温升小于 0 1 C SHT1x 的激活时间应小于测量值的 10 e g 对于 12 位测量 最多 1 秒 1 次 2 1 4 通讯复位时序通讯复位时序 如果与 SHT1x 通讯中断 可通过下列信号时序复位 当 DATA 保持高电平时 触发 SCK 时钟 9 次或更多 参阅图 1 6 接着发送一个 传输启动 时序 这些时序只复位串口 状态寄存器内容仍然保留 第 5 页 图 1 6 复位时序 2 1 5 CRC 8 Checksum 计算计算 数据传输的可靠性由 CRC 8 的校验来保证 它确保可以检测并去除所有错误数据 如上所述 用户可选择是否使用 CRC 功能 2 1 6 状态寄存器状态寄存器 SHT1x 的某些高级功能可以通过给状态寄存器发送指令来实现 如选择测量分辨率 电量不足提醒 使用 OTP 加载或启动加热功能等 下面的章节概括介绍了这些功能 详 情可参阅应用说明 状态寄存器 在读状态寄存器或写状态寄存器之后 8 位状态寄存器的内容将被读出或写入 参阅 表 1 2 通讯请阅图 1 7 和图 1 8 状态寄存器各 bit 请参阅表 1 3 图 1 7 状态寄存器写 图 1 8 状态寄存器读 图 1 9 和 1 10 描述了整个通讯过程 图 1 9 测量时序 TS 传输开始 MSB 高有效字节 LSB 低有效字节 LSb 低有效位 图 1 10 相对湿度测量时序示例 数值 0000 0100 0011 0001 1073 35 50 RH 未包含温度补偿 DATA 有效时间已标出 可参见 DATA 线 加粗 部分的 DATA 线由传感器控制 普通的 DATA 线由单片机控制 第 6 页 表 1 3 状态寄存器位描述 2 1 7 相对湿度相对湿度 湿度的非线性补偿请参阅图 1 11 为获得精确的测量数据 建议用以下公式进行信号转换 公式中的参数见表 1 4 表 1 4 湿度转换参数 99 以上的湿度已经接近饱和必须经过处理显示 100 RH13 请注意 湿度传感器对电压无依赖性 图 1 10 从 SORH 到相对湿度的转化 第 7 页 2 1 8 湿度信号的温度补偿湿度信号的温度补偿 由于实际温度与测试参考温度 25 77 的显著不同 湿度信号需要温度补偿 温 度校正粗略对应于 0 12 RH 50 RH 温度补偿系数请参阅表 1 5 表 1 5 温度补偿系数 2 1 9 温度转换系数温度转换系数 由能隙材料 PTAT 正比于绝对温度 研发的温度传感器具有极好的线性 可用如下公 式将数字输出 SOT 转换为温度值 温度转换系数请阅表 1 6 表 1 6 温度转换系数 2 1 10 露点露点 SHT1x 并不直接进行露点测量 但露点可以通过温度和湿度读数计算得到 由于温度 和湿度在同一块集成电路上测量 SHT1x 可测量露点 露点的计算方法很多 绝大多数 都很复杂 对于 40 50 C 温度范围的测量 通过下面的的公式可得到较好的精度 参数见表 1 7 表 1 7 露点 Td 计算参数 请注意公式中的 ln 表示自然对数 RH 和 T 应引用经过线性处理和补偿的数值 第 8 页 2 2 光敏传感器 模拟量 光敏传感器 模拟量 光电传感器是采用光电元件作为检测元件的传感器 它首先把被测量的变化转换成光 信号的变化 然后借助光电元件进一步将光信号转换成电信号 光电传感器一般由光源 光学通路和光电元件三部分组成 光电式传感器是以光电器件作为转换元件的传感器 光 电检测方法具有精度高 反应快 非接触等优点 而且可测参数多 传感器的结构简单 形式灵活多样 因此 光电式传感器在检测和控制中应用非常广泛 1 光敏电阻结构图 图 1 1 2 硬件连接图 图 1 2 第 9 页 2 3 可燃气体传感器 模拟量 可燃气体传感器 模拟量 MQ 2 图 1 3 应用 可用于家庭和工厂的气体泄漏监测装置 适宜于液化气 丁烷 丙烷 甲烷 酒精 氢气 烟雾等的探测 第 10 页 MQ 2 气敏元件的结构和外形如图 1 所示 结构 A or B 由微型 AL2O3 陶瓷管 SnO2 敏 感层 测量电极和加热器构成的敏感元件固定在塑料或不锈钢制成的腔体内 加热器为气敏 元件提供了必要的工作条件 封装好的气敏元件有 只针状管脚 其中 个用于信号取出 个用于提供加热电流 A A 和 B B 管脚在电路中是短接的 第 11 页 2 4 噪声传感器 模拟量 噪声传感器 模拟量 2 5 气压传感器 模拟量 气压传感器 模拟量 第 12 页 2 6 震动传感器 开关量 震动传感器 开关量 2 7 红外热释电传感器 开关量 红外热释电传感器 开关量 热释电红外线传感器主要是由一种高热电系数的材料 如锆钛酸铅系陶瓷 钽酸锂 硫酸三甘钛等制成尺寸为 2 1mm 的探测元件 在每个探测器内装入一个或两个探测元件 并将两个探测元件以反极性串联 以抑制由于自身温度升高而产生的干扰 由探测元件将 探测并接收到的红外辐射转变成微弱的电压信号 经装在探头内的场效应管放大后向外输 出 为了提高探测器的探测灵敏度以增大探测距离 一般在探测器的前方装设一个菲涅尔 透镜 该透镜用透明塑料制成 将透镜的上 下两部分各分成若干等份 制成一种具有特 殊光学系统的透镜 它和放大电路相配合 可将信号放大 70 分贝以上 这样就可以测出 10 20 米范围内人的行动 见实物图 1 11 图 1 11 红外人体感应模块 1 功能特点 全自动感应 人进入其感应范围则输出高电平 人离开感应范围则自动延时关闭高电 平 输出低电平 光敏控制 可选择 出厂时未设 可设置光敏控制 白天或光线强时不感应 温度补偿 可选择 出厂时未设 在夏天当环境温度升高至 30 32 探测距离稍变 短 温度补偿可作一定的性能补偿 第 13 页 两种触发方式 可跳线选择 a 不可重复触发方式 即感应输出高电平后 延时时间段一结束 输出将自动从高电平 变成低电平 b 可重复触发方式 即感应输出高电平后 在延时时间段内 如果有人体在其感应范围 活动 其输出将一直保持高电平 直到人离开后才延时将高电平变为低电平 感应模块检 测到人体的每一次活动后会自动顺延一个延时时间段 并且以最后一次活动的时间为延时 时间的起始点 具有感应封锁时间 默认设置 2 5S 封锁时间 感应模块在每一次感应输出后 高电平 变成低电平 可以紧跟着设置一个封锁时间段 在此时间段内感应器不接受任何感应信 号 此功能可以实现 感应输出时间 和 封锁时间 两者的间隔工作 可应用于间隔探 测产品 同时此功能可有效抑制负载切换过程中产生的各种干扰 此时间可设置在零点 几秒 几十秒钟 工作电压范围宽 默认工作电压 DC4 5V 20V 微功耗 静态电流hdr event Received when a messages is received OTA for this endpoint casecase AF INCOMING MSG CMD AF INCOMING MSG CMD SampleApp MessageMSGCB SampleApp MessageMSGCB MSGpktMSGpkt break Received whenever the device changes state in the network casecase ZDO STATE CHANGE ZDO STATE CHANGE SampleApp NwkState devStates t MSGpkt hdr status if SampleApp NwkState DEV ZB COORD 协调器建立 第 31 页 亮灯 HalLedSet HAL LED 1 HAL LED MODE ON 准备执行网络扫描 osal start timerEx SampleApp TaskID SAMPLEAPP Timeing MSG EVT SAMPLEAPP Timeing MSG TIMEOUT 计时刷新 break casecase SPI INCOMING ZTOOL PORT SPI INCOMING ZTOOL PORT 通过串口读 16 个字节 HalUARTRead MT UART DEFAULT PORT R Buffer data 16 uint8 ReadFlag uint16 SrcSaddr ReadFlag 0 if if ReadFlag 串口输出网络结构 HalLedBlink HAL LED 1 2 50 500 UartOutNetDis else 第 32 页 组装地址 准备发送数据 SrcSaddr uint16 R Buffer packet Struct Saddr 0 R Buffer packet Struct Saddr 1 8 T Buffer packet Struct foot for i 0 i 8 T Buffer packet Struct foot for i 0 i 8 i 0 T Buffer packet Struct DataBuf i JoinNode RouterCount JoinNode RfdCount memcpy i 3 memcpy 获取自身的物理地址 i 8 协调器无父地址 即父地址等于本身网络地址 memcpy i 2 第 41 页 T Buffer packet Struct DataBuf i zgConfigPANID T Buffer packet Struct DataBuf i zgConfigPANID 8 T Buffer packet Struct foot for i 0 ihdr event Received when a messages is received OTA for this endpoint case AF INCOMING MSG CMD SampleApp MessageMSGCB MSGpkt break Received whenever the device changes state in the network case ZDO STATE CHANGE SampleApp NwkState devStates t MSGpkt hdr status if SampleApp NwkState DEV ZB COORD 协调器建立 亮灯 HalLedSet HAL LED 1 HAL LED MODE ON 准备执行网络扫描 osal start timerEx SampleApp TaskID SAMPLEAPP Timeing MSG EVT SAMPLEAPP Timeing MSG TIMEOUT break case SPI INCOMING ZTOOL PORT 通过串口读 16 个字节 HalUARTRead MT UART DEFAULT PORT R Buffer data 16 第 43 页 uint8 ReadFlag uint16 SrcSaddr ReadFlag 0 if if ReadFlag 串口输出网络结构 HalLedBlink HAL LED 1 2 50 500 UartOutNetDis else 组装地址 准备发送数据 SrcSaddr uint16 R Buffer packet Struct Saddr 0 R Buffer packet Struct Saddr 1 cmd Data pkt cmd DataLength BINDING COMMAND ID EXECUTE if pkt clusterId SAMPLEAPP LIGHT CLUSTERID HalLedBlink HAL LED 2 1 50 500 if 物 理地址 memcpy 网络 地址 memcpy 父 节点物理地址 网络地址 for j 0 j JoinNode RfdCount j 根据物理地址判断有无重复加入的节点 比较物理地址 if memcmp 如果存在相同的物理地址更新网络地址 JoinNode RfdCount memcpy 网络地址 break JoinNode RfdCount else if memcmp T Buffer packet Struct DataBuf ROU 3 0 ROU 节点 memcpy 物理地 址 memcpy 网络地址 memcpy 父节点物理地址 网络地址 for j 0 jLinkQuality 从串口输出给上位机 第 46 页 HalUARTWrite MT UART DEFAULT PORT T Buffer data 32 二 二 SampleAppSlave c INCLUDES include OSAL h include ZGlobals h include AF h include ZDApp h include ZDObject h include ZDProfile h include OnBoard h include SampleApp h include OnBoard h HAL include hal led h include sensor h include exsensor h include hal adc h include hal timer h include DL645 h MT include MT UART h include string h MACROS CONSTANTS TYPEDEFS GLOBAL VARIABLES 第 47 页 簇 理解成一个应用领域下的一个特定对象 操作特定对象需要不同的命令 簇是由这些命令构成的 SampleApp ClusterList 就是一个簇 This list should be filled with Application specific Cluster IDs const cId t SampleApp ClusterList SAMPLEAPP MAX CLUSTERS SAMPLEAPP PERIODIC CLUSTERID SAMPLEAPP FLASH CLUSTERID SAMPLEAPP LIGHT CLUSTERID SAMPLEAPP SWITCH CLUSTERID ZigBee 协议简单描述符 使用简单描述符来描述一个具体的端口 相关预定义在 SampleApp h 中 端口号 8 bit 20 0 240 应用规范 ID 16 bit 0 x0f08 应用设备 ID 16 bit 0 x0001 应用设备版本号 4 bit 0 保留 4 bit 0 输入簇命令个数 16 bit 4 输入簇列表 16 bit 输入簇命令个数 SampleApp ClusterList 输出簇命令个数 16 bit 4 输出簇列表 16 bit 输出簇命令个数 SampleApp ClusterList const SimpleDescriptionFormat t SampleApp SimpleDesc SAMPLEAPP ENDPOINT SAMPLEAPP PROFID SAMPLEAPP DEVICEID SAMPLEAPP DEVICE VERSION SAMPLEAPP FLAGS SAMPLEAPP MAX CLUSTERS cId t SampleApp ClusterList SAMPLEAPP MAX CLUSTERS cId t SampleApp ClusterList ZigBee 协议栈中简单描述符的具体实现 节点描述符 添加了部分用于任务切换的参数 endPointDesc t 结构体的定义在 AF h 中 其中 latencyReq 参数在初始化时采用默认值即可 This is the Endpoint Interface description It is defined here but filled in in SampleApp Init Another way to go would be to fill in the structure here and make it a const in code space The way it s defined in this sample app it is define in RAM endPointDesc t SampleApp epDesc EXTERNAL VARIABLES EXTERNAL FUNCTIONS 第 48 页 LOCAL VARIABLES uint8 SampleApp TaskID Task ID for internal task event processing This variable will be received when SampleApp Init is called devStates t SampleApp NwkState uint8 SampleApp TransID This is the unique message ID counter define SET RFID 0 x01 define CLOSE RFID 0 x02 define SET HW 0 x01 define CLOSE HW 0 x02 define SET DB 0 x01 define CLOSE DB 0 x02 define SET SOS 0 x01 define CLOSE SOS 0 x02 uint8 WaitForRFID CLOSE RFID uint8 WaitForHW CLOSE HW uint8 WaitForDB CLOSE DB uint8 WaitForSOS CLOSE SOS union UINT8 data 32 struct UINT8 Head WSN UINT8 cmd 3 命令头 uint8 rType 状态 UINT8 Saddr 2 网络地址 UINT8 DataBuf 21 数据缓冲区 uint8 foot packet Struct T Buffer Tback Buffer 从串口发送的数据帧 union UINT8 data 16 struct UINT8 Head WSN UINT8 cmd 3 命令头 UINT8 Saddr 2 网络地址 UINT8 DataBuf 6 数据缓冲区 uint8 foot packet Struct R Buffer 从串口接收到的数据帧 UINT8 RfHaveTxData 无线有数据要发送 RFID uint8 ZTOOL RFIDBUF 11 第 49 页 电表 unsigned char MeterAddr 6 电表地址 低前高后 压缩 BCD 码 共 12 位数 高位补零 LOCAL FUNCTIONS void SampleApp MessageMSGCB afIncomingMSGPacket t pckt uint8 SendData uint8 buf UINT16 addr uint8 Leng void AddrMakePacket void 发送一组数据 uint8 SendData uint8 buf UINT16 addr uint8 Leng afAddrType t SendDataAddr afAddrType t 型变量 将目的节点的相关信息填入 afAddrType t 型变量 准备发送 SendDataAddr addrMode afAddrMode t Addr16Bit SendDataAddr endPoint SAMPLEAPP ENDPOINT 端口号设置 SendDataAddr addr shortAddr addr 短地址设置 if AF DataRequest else return 0 Error occurred in request to send NETWORK LAYER CALLBACKS PUBLIC FUNCTIONS fn SampleApp Init brief Initialization function for the Generic App Task This is called during initialization and should contain any application specific initialization ie hardware initialization setup table initialization power up notificaiton 第 50 页 param task id the ID assigned by OSAL This ID should be used to send messages and set timers return none void SampleApp Init uint8 task id SampleApp TaskID task id SampleApp NwkState DEV INIT SampleApp TransID 0 ZGlobals c uint8 zgDeviceLogicalType DEVICE LOGICAL TYPE 设备为路由 ifdef WXIT ROUTER zgDeviceLogicalType ZG DEVICETYPE ROUTER endif 设备为终端节点 ifdef WXIT RFD zgDeviceLogicalType ZG DEVICETYPE ENDDEVICE endif if defined HOLD AUTO START ZDOInitDevice 0 延时启动 endif 填充源节点的地址及相关信息 endPointDesc t SampleApp epDesc SimpleDescriptionFormat t SampleApp SimpleDesc SampleApp epDesc endPoint SAMPLEAPP ENDPOINT SampleApp epDesc task id SampleApp epDesc simpleDesc SimpleDescriptionFormat t SampleApp epDesc latencyReq noLatencyReqs 使用 afRegister 将节点描述符进行注册 只有注册以后 才可以使用 OSAL 提供的系统服务 afRegister 使用 MT UartRegisterTaskID 将 SampleApp TaskID 进行注册 只有注册以后 才可以使用相关的 Uart 服务 MT UartRegisterTaskID SampleApp TaskID 使用 halTimer RegisterTaskID 将 SampleApp TaskID 进行注册 只有注册以后 才可以使用相关的 Timer 服务 halTimer RegisterTaskID SampleApp TaskID ZDO RegisterForZDOMsg SampleApp TaskID End Device Bind rsp ZDO RegisterForZDOMsg SampleApp TaskID Match Desc rsp fn SampleApp ProcessEvent brief Generic Application Task event processor This function 第 51 页 is called to process all events for the task Events include timers messages and any other user defined events param task id The OSAL assigned task ID param events events to process This is a bit map and can contain more than one event return none uint16 SampleApp ProcessEvent uint8 task id uint16 events afIncomingMSGPacket t MSGpkt if events while MSGpkt switch MSGpkt hdr event Received when a messages is received OTA for this endpoint case AF INCOMING MSG CMD SampleApp MessageMSGCB MSGpkt break Received whenever the device changes state in the network case ZDO STATE CHANGE SampleApp NwkState devStates t MSGpkt hdr status HalLedSet HAL LED 1 HAL LED MODE ON memcpy T Buffer data T Buffer packet Struct foot 地址信息打包 AddrMakePacket 发送数据给协调器 SendData T Buffer data 0 x0000 32 break case SPI INCOMING ZTOOL PORT ifdef DLT645 DEMO if WaitForDB SET DB unsigned char DB DataBuf 42 读取电表值 HalUARTRead MT UART DEFAULT PORT DB DataBuf 42 memcpy Tback Buffer packet Struct DataBuf DB DataBuf 18 20 电表数据发送给协调器 SendData Tback Buffer data 0 x0000 32 WaitForDB CLOSE DB endif ifdef RFID 3310 if WaitForRFID SET RFID 第 52 页 const uint8 rf3310 com 0 x02 0 x00 0 x06 0 x00 HalUARTRead MT UART DEFAULT PORT ZTOOL RFIDBUF 11 RFID 返回数据 if memcmp ZTOOL RFIDBUF rf3310 com 4 0 memcpy Tback Buffer packet Struct DataBuf RFID 数据发送给协调器 SendData Tback Buffer data 0 x0000 32 触发源 osal start timerEx SampleApp TaskID SAMPLEAPP SET RFID 1000 endif break default break Release the memory osal msg deallocate uint8 MSGpkt Next if one is available MSGpkt afIncomingMSGPacket t osal msg receive SampleApp TaskID return unprocessed events return events SYS EVENT MSG 读取电表数据 if events 读取电表命令 unsigned char DataBuf 20 unsigned short TxLen 命令打包 TxLen MakePacket MeterAddr 0 x11 DB command 4 DataBuf 写入命令 等待读取 HalUARTWrite MT UART DEFAULT PORT DataBuf TxLen return events SAMPLEAPP SET DB RFID 事件 if events ZTOOL RFIDBUF i 0 x02 ZTOOL RFIDBUF i 0 x00 ZTOOL RFIDBUF i 0 x03 ZTOOL RFIDBUF i 0 x25 ZTOOL RFIDBUF i 0 x26 ZTOOL RFIDBUF i 0 x00 ZTOOL RFIDBUF i 0 x00 第 53 页 ZTOOL RFIDBUF i 0 x03 写入命令 等待读取 HalUARTWrite MT UART DEFAULT PORT ZTOOL RFIDBUF 8 endif return events SAMPLEAPP SET RFID if events P0 3 1 P0 5 1 return events SAMPLEAPP CURTAIN EVT if events P0DIR if P0 4 Tback Buffer packet Struct DataBuf 0 1 红外数据发送给协调器 SendData Tback Buffer data 0 x0000 32 触发源 osal start timerEx SampleApp TaskID SAMPLEAPP SET HW 1000 return events SAMPLEAPP SET HW if events P0DIR if P0 3 0 Tback Buffer packet Struct DataBuf 0 1 SOS 数据发送给协调器 SendData Tback Buffer data 0 x0000 32 触发源 osal start timerEx SampleApp TaskID SAMPLEAPP SET SOS 1000 return events SAMPLEAPP SET SOS Discard unknown events 第 54 页 return 0 LOCAL FUNCTIONS LOCAL FUNCTIONS fn SampleApp MessageMSGCB brief Data message processor callback This function processes any incoming data probably from other devices So based on cluster ID perform the intended action param none return none void SampleApp MessageMSGCB afIncomingMSGPacket t pkt uint16 temp16 T temp16 H value humi val temp val unsigned char error checksum 取网络传来的消息中的命令 memcpy R Buffer data pkt cmd Data pkt cmd DataLength memset T Buffer data y 32 memcpy T Buffer data R Buffer data 7 T Buffer packet Struct rType S T Buffer packet Struct Saddr 0 R Buffer packet Struct Saddr 0 T Buffer packet Struct Saddr 1 R Buffer packet Struct Saddr 1 T Buffer packet Struct foot if memcmp R Buffer packet Struct cmd RWS 3 0 sck P17 dat P01 数字量 P1DIR 0 x80 P0DIR 0 x02 P1SEL P0SEL s connectionreset error 0 error s measure unsigned char measure humidity error s measure unsigned char measure temperature if error s connectionreset in case of an error connection reset else humi val f float humi val i converts integer to float temp val f float temp val i converts integer to float calc sth11 calculate humidity temperature 第 55 页 temp16 H unsigned int humi val f 10 temp16 T unsigned int temp val f 10 温度 T Buffer packet Struct DataBuf 0 LO UINT16 temp16 T T Buffer packet Struct DataBuf 1 HI UINT16 temp16 T 湿度 T Buffer packet Struct DataBuf 2 LO UINT16 temp16 H T Buffer packet Struct DataBuf 3 HI UINT16 temp16 H RfHaveTxData 1 else if memcmp R Buffer packet Struct cmd RGM 3 0 光敏 memcmp R Buffer packet Struct cmd RYL 3 0 压力 memcmp R Buffer packet Struct cmd RYH 3 0 有害 memcmp R Buffer packet Struct cmd RZS 3 0 噪声 P04 模拟量 APCFG 0 x10 P0SEL 0 x10 P0DIR P0INP 0 x10 T Buffer packet Struct DataBuf 0 ReadSensorAdc 0 x04 P0SEL RfHaveTxData 1 else if memcmp R Buffer packet Struct cmd RHW 3 0 红外开关量 移动检测 P04 开关量 P0SEL P0DIR T Buffer packet Struct DataBuf 0 P0 4 RfHaveTxData 1 else if memcmp R Buffer packet Struct cmd RDB 3 0 读电表
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 庆阳市七下考试题及答案
- 湖北成考试题及答案本科
- 2025集团法务招聘考试真题及答案
- 2025化学教师考试真题及答案
- 难点解析人教版八年级上册物理光现象《光的直线传播》同步练习试卷(解析版含答案)
- 徐州二中考试题目及答案
- 2025年消防执业资格考试题库(消防应急救援装备)基础理论试题及答案
- 品牌维权技术路径-洞察与解读
- 技术驱动并购策略-洞察与解读
- 2025年《劳动关系协调员》考试复习题及参考答案
- 大学军事理论课教程第三章军事思想第二节外国军事思想
- 非煤矿山安全生产现场检查与执法
- 中华文明探源工程
- 旋挖钻机安全验收表
- 网络安全产品汇总介绍
- 高中日语学习宣讲+课件
- 2023年中国通用技术(集团)控股有限责任公司招聘笔试题库含答案解析
- 生物技术与农业
- GB/T 5668-2017旋耕机
- GB/T 28053-2011呼吸器用复合气瓶
- 动物资源保护与利用
评论
0/150
提交评论