物联网应用技术实训指导书HD.doc_第1页
物联网应用技术实训指导书HD.doc_第2页
物联网应用技术实训指导书HD.doc_第3页
物联网应用技术实训指导书HD.doc_第4页
物联网应用技术实训指导书HD.doc_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

淮安信息职业技术学院电子工程学院 “物联网应用技术”项目实训指导书2013年05月前言 智能家居最早是在20世纪80年代兴起于日本和美国,并在20世纪90年代进入我国,经过十几年的发展,特别是随着我国的住宅产业发展而迅速发展起来。而且在我国智能家居引起越来越多的关注,随着人民生活水平的提高,人们对于居住环境智能化、舒适程度等要求会越来越高,这给智能家居的发展提供了很大的市场空间。然而由于我国的居住模式和发达国家存在很大的差别,我国人口众多,城市多以密集型住宅为主,这造成了国内外在智能家居的发展和技术上存在了很大的差别。国内智能化更多地注重于整个小区智能化的建设。最早从做对系统开始,并且逐渐由过去的非可视对讲过渡到目前的以黑白可视对讲为主流,同时一些集成了安防功能、抄表功能,短信息等功能的对讲产品出现并在一些地区应用。由于可视对讲的发展迅速,一些厂家的宣传,给人造成了一种错误的观念,小区只要做可视对讲或者综合布线就称得上智能化小区。随着对智能家居的认识越来越深入,人们逐渐意识到智能化的真正主体是家居的智能化,更多地体现在家庭内部自动化。所以20世纪90年代后期,一些企业开始引入国外的智能家居技术和产品在国内推广,还有一些大的集团公司也看好该领域,通过各种途径介入,促进整个行业迅速发展。正如当今如火如荼的家电行业,无论是白色家电,还是黑色家电,以及其他一些日用家电无不嵌入了自动化控制,其智能化程度已远是以前的普通家电所不及了。目录目录1准备知识1:11.1模块认识1准备知识2:12.1传感器认识12.1.1温湿度传感器(数字量)12.1.2 串行时钟输入(SCK)32.1.3 温湿度测量52.1.4 通讯复位时序52.1.5 CRC-8 Checksum 计算62.1.6状态寄存器62.1.7相对湿度72.1.8 湿度信号的温度补偿82.1.9 温度转换系数82.1.10 露点82.2光敏传感器(模拟量)92.3可燃气体传感器(模拟量)102.4噪声传感器(模拟量)122.5气压传感器(模拟量)122.6震动传感器(开关量)132.7 红外热释电传感器(开关量)132.8 RFID射频识别装置15准备知识3:15 3.1 Flash Programmer下载程序快速入门15项目一:应用设备的安装与调试17一:硬件实物介绍17二:硬件设备的安装与调试26实训硬件提供:26目标:26要求:261.1 工作任务26(1)感知节点的设置27(2)完善感知节点ZigBee协议栈代码(代码已给出,见附录1)27项目二: 程序的编写与调试282.1 初始操作:282.1.1 协议栈中网络结构类型修改:282.1.2 修改信道及网络编号(PANID)292.1.3 生成Hex文件操作:292.2 程序重点292.2.1 消息处理流程29附录1:36一、SampleAppMaster.c36二、SampleAppSlave.c47附录2:参考接线图60准备知识1:1.1模块认识应用设备包括:环境监测模块、家居安防模块、家居三表模块、家居电子支付模块、开关动作电路、模拟电压控制电路、总线型控制电路、网络 USB型控制电路。硬件设备主要包含各类传感器和执行器、安防监测设备、三表设备等。准备知识2:2.1传感器认识传感器类型包括:开关量传感器、数字量传感器、模拟量传感器。开关量传感器:热释电红外传感器数字量传感器:温湿度传感器模拟量传感器:光敏、可燃气体、气压、噪声、震动、烟雾传感器2.1.1温湿度传感器(数字量)我们这里选用的的是属于Sensirion温湿度传感器家族中的贴片封装系列的SHT11。它将传感元件和信号处理电路集成在一块微型电路板上,输出完全标定的数字信号。传感器采用专利的CMOSens 技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电容性聚合体测湿敏感元件、一个用能隙材料制成的测温元件,并在同一芯片上,与14 位的A/D 转换器以及串行接口电路实现无缝连接。因此,该产品具有品质卓越、响应迅速、抗干扰能力强、性价比高等优点。实物图如下: 图 1-31.接口定义(注意: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.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的时序。请注意 数据读取的有效时间为前一个切换的下降沿。表 1-1: SHT11 I/O 信号特性2 传感器的通讯2.1启动传感器首先,选择供电电压后将传感器通电,上电速率不能低于1V/ms。通电后传感器需要11ms 进入休眠状态,在此之前不允许对传感器发送任何命令。2.2发送命令用一组“ 启动传输”时序,来完成数据传输的初始化。它包括:当SCK 时钟高电平时DATA 翻转为低电平,紧接着SCK 变为低电平,随后是在SCK 时钟高电平时DATA 翻转为高电平。参见图 1-5。图 1-5: 启动传输 时序下述方式表示已正确地接收到指令:在第8 个SCK 时钟的下降沿之后,将DATA 下拉为低电平(ACK 位)。在第9 个SCK 时钟的下降沿之后,释放DATA(恢复高电平)。表 1-2 SHT11命令集2.1.3 温湿度测量发布一组测量命令(00000101表示相对湿度RH,00000011表示温度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.1C, SHT1x 的激活时间应小于测量值的10% e.g. 对于 12位测量,最多 1秒 1次。2.1.4 通讯复位时序如果与SHT1x 通讯中断,可通过下列信号时序复位:当DATA 保持高电平时,触发SCK 时钟9 次或更多,参阅图1-6。接着发送一个“传输启动”时序。这些时序只复位串口,状态寄存器内容仍然保留。图 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: 相对湿度测量时序示例,数值“0000010000110001”=1073=35.50%RH(未包含温度补偿)。DATA 有效时间已标出,可参见DATA 线。加粗部分的DATA 线由传感器控制,普通的DATA 线由单片机控制。表 1-3: 状态寄存器位描述2.1.7相对湿度湿度的非线性补偿请参阅图 1-11 为获得精确的测量数据,建议用以下公式进行信号转换。公式中的参数见表 1-4:表 1-4: 湿度转换参数99%以上的湿度已经接近饱和必须经过处理显示100%RH13. 请注意 湿度传感器对电压无依赖性。图 1-10: 从 SORH 到相对湿度的转化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 50C 温度范围的测量,通过下面的的公式可得到较好的精度,参数见表 1-7:表 1-7: 露点(Td)计算参数请注意公式中的 “ln()” 表示自然对数. RH 和 T 应引用经过线性处理和补偿的数值。2.2光敏传感器(模拟量)光电传感器是采用光电元件作为检测元件的传感器。它首先把被测量的变化转换成光信号的变化,然后借助光电元件进一步将光信号转换成电信号。光电传感器一般由光源、光学通路和光电元件三部分组成。光电式传感器是以光电器件作为转换元件的传感器,光电检测方法具有精度高、反应快、非接触等优点,而且可测参数多,传感器的结构简单,形式灵活多样,因此,光电式传感器在检测和控制中应用非常广泛。1.光敏电阻结构图:图1-12. 硬件连接图图1-22.3可燃气体传感器(模拟量) MQ-2图1-3应用可用于家庭和工厂的气体泄漏监测装置, 适宜于液化气、丁烷、丙烷、甲烷、酒精、氢气、烟雾等的探测。MQ-2 气敏元件的结构和外形如图 1 所示(结构 A or B), 由微型 AL2O3陶瓷管、SnO2 敏感层,测量电极和加热器构成的敏感元件固定在塑料或不锈钢制成的腔体内,加热器为气敏元件提供了必要的工作条件。封装好的气敏元件有只针状管脚,其中个用于信号取出,个用于提供加热电流。A-A 和 B-B 管脚在电路中是短接的。2.4噪声传感器(模拟量)2.5气压传感器(模拟量)2.6震动传感器(开关量)2.7 红外热释电传感器(开关量)热释电红外线传感器主要是由一种高热电系数的材料,如锆钛酸铅系陶瓷、钽酸锂、硫酸三甘钛等制成尺寸为 2*1mm 的探测元件。在每个探测器内装入一个或两个探测元件,并将两个探测元件以反极性串联,以抑制由于自身温度升高而产生的干扰。由探测元件将探测并接收到的红外辐射转变成微弱的电压信号,经装在探头内的场效应管放大后向外输出。为了提高探测器的探测灵敏度以增大探测距离,一般在探测器的前方装设一个菲涅尔透镜,该透镜用透明塑料制成,将透镜的上、下两部分各分成若干等份,制成一种具有特殊光学系统的透镜,它和放大电路相配合,可将信号放大70 分贝以上,这样就可以测出 1020 米范围内人的行动。见实物图1-11。图 1-11 红外人体感应模块1.功能特点 全自动感应:人进入其感应范围则输出高电平, 人离开感应范围则自动延时关闭高电平,输出低电平。 光敏控制(可选择,出厂时未设)可设置光敏控制,白天或光线强时不感应。 温度补偿(可选择,出厂时未设):在夏天当环境温度升高至 3032,探测距离稍变短,温度补偿可作一定的性能补偿。 两种触发方式:(可跳线选择)a、不可重复触发方式:即感应输出高电平后,延时时间段一结束,输出将自动从高电平变成低电平;b、可重复触发方式:即感应输出高电平后,在延时时间段内,如果有人体在其感应范围活动,其输出将一直保持高电平,直到人离开后才延时将高电平变为低电平(感应模块检测到人体的每一次活动后会自动顺延一个延时时间段,并且以最后一次活动的时间为延时时间的起始点)。 具有感应封锁时间(默认设置:2.5S 封锁时间):感应模块在每一次感应输出后(高电平变成低电平),可以紧跟着设置一个封锁时间段,在此时间段内感应器不接受任何感应信号。此功能可以实现“感应输出时间”和“封锁时间”两者的间隔工作,可应用于间隔探测产品;同时此功能可有效抑制负载切换过程中产生的各种干扰。(此时间可设置在零点几秒几十秒钟)。 工作电压范围宽:默认工作电压 DC4.5V-20V。 微功耗:静态电流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); 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 ); uint8 ReadFlag; uint16 SrcSaddr; ReadFlag=0; if(& = R_Buffer.data0) /RNW,读取网络信息 /此时网络信息已经存储在协调器上,因此“读自己” if(memcmp(R_Buffer.packet_Struct.cmd,RNW,3)=0) ReadFlag = 1; if(ReadFlag) /串口输出网络结构 HalLedBlink(HAL_LED_1,2,50,500); UartOutNetDis(); else /组装地址,准备发送数据 SrcSaddr=(uint16)(R_Buffer.packet_Struct.Saddr0|R_Buffer.packet_Struct.Saddr18); /发送数据失败串口输出消息 /发送成功等待AF_INCOMING_MSG_CMD if(SendData(R_Buffer.data, SrcSaddr, 16) = 0) HalLedBlink(HAL_LED_2,2,50,500); memset(T_Buffer.data,y,32); memcpy(T_Buffer.data,&WSNRNWF,8); T_Buffer.packet_Struct.Saddr0=R_Buffer.packet_Struct.Saddr0; T_Buffer.packet_Struct.Saddr1=R_Buffer.packet_Struct.Saddr1; T_Buffer.packet_Struct.foot=*; HalUARTWrite ( MT_UART_DEFAULT_PORT, T_Buffer.data, 32);/从串口输出 else HalLedBlink(HAL_LED_2,2,50,500); 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 (events SYS_EVENT_MSG); / 周期事件 / 撤销任务,去除掩码 if (events & SAMPLEAPP_Timeing_MSG_EVT) /60s刷新网络 /清除节点表 JoinNode.RfdCount=0; JoinNode.RouterCount=0; / 广播扫描 memset(R_Buffer.data,y,16); memcpy(R_Buffer.data,&WSNJON,7); R_Buffer.packet_Struct.Saddr0=0xFF; R_Buffer.packet_Struct.Saddr1=0xFF; R_Buffer.packet_Struct.foot=*; SendData(R_Buffer.data, 0xFFFF, 16); osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_Timeing_MSG_EVT, SAMPLEAPP_Timeing_MSG_TIMEOUT ); / 清除处理完的事件(利用异或运算的特性) return (events SAMPLEAPP_Timeing_MSG_EVT); / Discard unknown events return 0;解析:uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events )内部包含:if ( events & SYS_EVENT_MSG ) /系统事件1、case AF_INCOMING_MSG_CMD: SampleApp_MessageMSGCB( MSGpkt ); /消息处理 2、case ZDO_STATE_CHANGE: /状态改变需做出的动作,协调器与节 点做出的动作不一样,节点中,需将自身 的设备类型和JOIN加入信息暴露给协调器。3、case SPI_INCOMING_ZTOOL_PORT:/串口来访消息需作出的动作4、if (events & SAMPLEAPP_Timeing_MSG_EVT) /协调器还负责定时刷新网络5、终端中,此函数uint16 SampleApp_ProcessEvent负责判断事件类型终端中也包含以上几个大函数,但是它们处理的消息跟协调器不一样,终端负责采集传感器信息,或使用串口进行串口数据采集,有时,它还需要对协调器发来的指令进行处理,如对相应的IO口给出高低电平,从而可以控制继电器。附录1: * 相关设置都在这里进入。一、SampleAppMaster.c/* * INCLUDES */#include OSAL.h#include ZGlobals.h#include AF.h#include ZDApp.h#include ZDObject.h#include ZDProfile.h#include SampleApp.h#include OnBoard.h/* HAL */#include hal_led.h/*MT*/#include MT_UART.h#include string.h/* * MACROS */* * CONSTANTS */* * TYPEDEFS */* * GLOBAL VARIABLES */ 簇,理解成一个应用领域下的一个特定对象/ 操作特定对象需要不同的命令,簇是由这些命令构成的/ SampleApp_ClusterList就是一个簇/ This list should be filled with Application specific Cluster IDs.const cId_t SampleApp_ClusterListSAMPLEAPP_MAX_CLUSTERS = SAMPLEAPP_PERIODIC_CLUSTERID, SAMPLEAPP_FLASH_CLUSTERID, SAMPLEAPP_LIGHT_CLUSTERID, SAMPLEAPP_SWITCH_CLUSTERID;/ ZigBee协议简单描述符/ 使用简单描述符来描述一个具体的端口/ 相关预定义在SampleApp.h中/ 端口号 8 bit 20(0240)/ 应用规范ID 16 bit 0x0f08/ 应用设备ID 16 bit 0x0001/ 应用设备版本号 4 bit 0/ 保留 4 bit 0/ 输入簇命令个数 16 bit 4/ 输入簇列表 16 bit*输入簇命令个数 Sample

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论