ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:264.86KB ,
资源ID:4299733      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4299733.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于zigbee的温度采集系统.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于zigbee的温度采集系统.docx

1、基于zigbee的温度采集系统基于zigbee的温度采集实验作者:姚志强一般而言,无线传感网络具有采集点众多,分布面积广;网络节点间的位置关系不定,节点动态加入或脱离网络等特性。Z-Stack2007协议栈具有这些实验功能特性。5.3.1 实验目的与器材1)实验目的本实验将利用Z-Stack2007协议栈构建一个具有实际意义的无线传感器网络。该网络中具有采集节点和传感节点。传感节点连接各种传感器,利用传感器获取环境温度、光照等外界信息。采集节点负责接收该zigbee网络里传感节点的信息,并通过串口上传至PC端的串口助手进行显示。采集节点,上电启动后负责建立网络,并开启允许绑定功能;传感节点,上

2、电启动后加入网络,并自动发起绑定请求,待采集节点建立绑定后,将传感器节点的外界温度信息和光照信息发送到采集节点上。为了实验简单,只有一个采集节点收集这些信息,处理后通过串口上传到计算机,可以在串口调试工具上看到,为了提高网络的负载能力,可以增加中心收集节点。所以我们可以建立星形拓扑网络,协调器是采集节点,终端节点是传感节点。为了实现上述实验目的,应该做到: 自动形成一个网络; 传感器设备必须能自动加入网络,并自动完成绑定; 如果传感器设备没有从中心节点收到应答,它将自动移除到该中心节点的绑定。然后它将自动的去发现新的中心节点绑定。 本实验中传感节点具有获取节点内部温度信息、外界温度信息、外界光

3、照信息等功能。2)实验器材 4个CC2530开发模块(1个采集器节点,1个路由器,2个传感器节点); 2个DS18B20温度传感器; 2个光敏电阻;5.3.2 实验原理与步骤1)硬件介绍1 温度传感器DS18b20DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种数字化单总线器件。属于新一代适配微处理器的改进型智能温度传感器。它能够直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式。可以分别在93.75ms和750ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写。其测量温度

4、范围为-55+125。现场温度直接以“一线总线”的数字方式传输,用符号扩展的16位数字方式串行输出,大大提高了系统的抗干扰性。广泛用于工业、民用、军事等领域的温度测量及控制仪器、测控系统和大型设备中。DS18B20的性能特点如下: 采用DALLAS公司独特的单线接口方式:DS18B20与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯; 在使用中不需要任何外围元件; 可用数据线供电,供电电压范围:+3.0V+5.5V; 测温范围:-55+125。固有测温分辨率为0.5。当在-10+85范围内,可确保测量误差不超过0.5,在-55+125范围内,测量误差也不超过2; 通过编

5、程可实现912位的数字读数方式; 用户可自设定非易失性的报警上下限值; 支持多点的组网功能,多个DS18B20可以并联在唯一的三线上,实现多点测温 负压特性,即具有电源反接保护电路。当电源电压的极性反接时,能保护DS18B20不会因发热而烧毁,但此时芯片无法正常工作; DS18B20的转换速率比较高,进行9位的温度值转换只需93.75ms; 适配各种单片机或系统; 内含64位激光修正的只读存储ROM,扣除8位产品系列号和8位循环冗余校验码(CRC)之后,产品序号占48位。出厂前产品序号存入其ROM中。在构成大型温控系统时,允许在单线总线上挂接多片DS18B20。 DS18b20温度传感器实物如

6、图 所示。图 DS18b20温度传感器实物图Zigbee实验板与温度传感器18b20的连接如图 所示图 Zigbee实验板与温度传感器18b20的连接 ZigBee芯片通过P6_2管脚读取DS18b20所产生的温度数据。2 光敏电阻器光敏电阻器是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;入射光强,电阻减小,入射光弱,电阻增大。光敏电阻器一般用于光的测量、光的控制和光电转换(将光的变化转换为电的变化)。常用的光敏电阻器硫化镉光敏电阻器,它是由半导体材料制成的。光敏电阻器的阻值随入射光线(可见光)的强弱变化而变化,在黑暗条件下,它的阻值(暗阻)可达110M欧,在强光条件(1

7、00LX)下,它阻值(亮阻)仅有几百至数千欧姆。光敏电阻器对光的敏感性(即光谱特性)与人眼对可见光(0.40.76)m的响应很接近,只要人眼可感受的光,都会引起它的阻值变化。光敏电阻的主要参数:光敏电阻的主要参数是: 光敏电阻的实验图 光电流、亮电阻。光敏电阻器在一定的外加电压下,当有光照射时,流过的电流称为光电流,外加电压与光电流之比称为亮电阻,常用“100LX”表示。 暗电流、暗电阻。光敏电阻在一定的外加电压下,当没有光照射的时候,流过的电流称为暗电流。外加电压与暗电流之比称为暗电阻,常用“0LX”表示。 灵敏度。灵敏度是指光敏电阻不受光照射时的电阻值(暗电阻)与受光照射时的电阻值(亮电阻

8、)的相对变化值。 光谱响应。光谱响应又称光谱灵敏度,是指光敏电阻在不同波长的单色光照射下的灵敏度。若将不同波长下的灵敏度画成曲线,就可以得到光谱响应的曲线。 光照特性。光照特性指光敏电阻输出的电信号随光照度而变化的特性。从光敏电阻的光照特性曲线可以看出,随着的光照强度的增加,光敏电阻的阻值开始迅速下降。若进一步增大光照强度,则电阻值变化减小,然后逐渐趋向平缓。在大多数情况下,该特性为非线性。 伏安特性曲线。伏安特性曲线用来描述光敏电阻的外加电压与光电流的关系,对于光敏器件来说,其光电流随外加电压的增大而增大。 温度系数。光敏电阻的光电效应受温度影响较大,部分光敏电阻在低温下的光电灵敏较高,而在

9、高温下的灵敏度则较低。 额定功率。额定功率是指光敏电阻用于某种线路中所允许消耗的功率,当温度升高时,其消耗的功率就降低。光照传感器实物如图 所示图 光照传感器实物图Zigbee实验板与光敏电阻的连接如图 所示图 Zigbee实验板与光敏电阻的连接 将ZigBee芯片的P04引脚设置为AD采样的模拟输入引脚,这样由光敏电阻阻值变换所引起的电压的变化量就会反映在芯片的模拟输入引脚上,芯片根据电压的变化量可以判断出当前的光照强度。2)程序流程1 传感节点发送数据流程 在节点成功加入网络并且同协调器绑定成功后,通过SimpleSensor.c文件中的zb_BindConfirm()函数来调用myApp

10、_StartReporting()函数 1.void zb_BindConfirm( uint16 commandId, uint8 status ) (void)commandId; if ( ( status = ZB_SUCCESS ) & ( myAppState = APP_START ) ) myAppState = APP_BOUND; myApp_StartReporting(); else osal_start_timerEx( sapi_TaskID, MY_FIND_COLLECTOR_EVT, myBindRetryDelay ); 2.在myApp_StartRepo

11、rting()函数中触发测量温度事件。void myApp_StartReporting( void ) osal_start_timerEx( sapi_TaskID, MY_REPORT_TEMP_EVT, myTempReportPeriod ); osal_start_timerEx( sapi_TaskID, MY_REPORT_BATT_EVT, myBatteryCheckPeriod ); 3.在函数zb_HandleOsalEvent()中对该事件进行响应。void zb_HandleOsalEvent( uint16 event ) uint8 pData2; if ( e

12、vent & MY_REPORT_EXTEMP_EVT ) pExTemp0 = EXTEMP_REPORT; myApp_ReadExTemperature(); osal_memcpy( pExTemp+1, ch, 8 ); zb_SendDataRequest( 0xFFFF, SENSOR_REPORT_CMD_ID, 9, pExTemp, 0, AF_ACK_REQUEST, 0 ); 4.事件响应函数通过调用myApp_ReadExTemperature()函数读取当前温度值。void myApp_ReadExTemperature( void ) UINT8 temh,tem

13、l; UINT16 num; UINT8 i; uint8 Temp_channel; P0DIR=0x00; P1DIR |= 0x0d; / 设置P1.0,P1.2,P1.3为输出方式 P2DIR |= 0x01; / 同上 read_data();/ 读取温度 Temp_channel=0x31; teml=sensor_data_value0; temh=sensor_data_value1; i=(Temp_channel-0x31)*2; ch0=Temp_channel;/当前显示的传感器的编号 ch1= ; num=teml*625; /小数部分的取值每位代表0.0625(精度

14、) if(flag=1) /判断正负温度 ch2=-; /+0x2d 为变-ASCII码 else ch2=+; if(temh/100=0) ch3= ; else ch3=temh/100+0x30; /+0x30 为变 09 ASCII码 if(temh/10%10=0)&(temh/100=0) ch4= ; else ch4=temh/10%10+0x30; ch5=temh%10+0x30; ch6=.; ch7=num/1000+0x30;/忽略小数点后1位的数 read_data()是负责从DS18b20中读取当前温度的函数,其中涉及到对DS18b20器件单总线结构的操作函数,

15、该函数位于DS18B20.c文件中,详细操作流程请结合DS18b20相关数据手册参看附录中的程序清单,在此就不详细列出。5.事件响应函数通过调用zb_SendDataRequest()函数将得到的温度值发送至协调器节点。2 汇聚节点接收数据流程 程序接收数据函数void zb_ReceiveDataIndication( uint16 source, uint16 command, uint16 len, uint8 *pData ) . uint8 sensorReading; uint8 tmpBuf32; uint8 *outputBuf; if (command = SENSOR_RE

16、PORT_CMD_ID) sensorReading = pData1; outputBuf =tmpBuf; switch( pData0 ) case EXTEMP_REPORT: tmpBuf1=7; tmpBuf6 = *; while(i右键-下键,此时四个灯都一直亮,表明该采集器建立了网络,并可以让其他模块加入到该网络中。第三步:启动另一个采集器,按键上键即可,此时四个灯都一直亮。第四步:分别启动两个传感器,按下模块的下键,此时传感器模块的绿灯、红灯、黄灯一起快速闪烁,采集器的红灯在慢速闪烁,表明传感器的数据在不停的向采集器发送数据。第五步:采集数据,分析数据。传感器每隔2秒一次上

17、传至采集器。4)程序清单清单5.1 读取传感器测出的外界温度信息/* * 函数名 myApp_ReadExTemperature * 描述 读取传感器测出的外界温度信息 AD采样使用P07管脚 * 参数 无 * 返回值 返回环境的温度信息,只保留了整数部分 */static uint8 myApp_ReadExTemperature( void ) UINT8 temh,teml; read_data(); / 读取温度 teml=sensor_data_value0;/小数部分 temh=sensor_data_value1;/整数部分 return temh;清单5.2 把读取的温度数据转

18、换为真实的温度信息/* * 函数名 read_data * 描述 利用read_1820函数读取温度数据之后,把温度数据转换为温度信息 * 参数 无 * 返回值 无 */void read_data(void) UINT8 temh,teml; UINT8 a,b,c; init_1820(); /复位18b20 write_1820(0xcc); / 发出转换命令 搜索器件 write_1820(0x44); /启动 Delay_nus(50000); init_1820(); write_1820(0xcc); write_1820(0xbe); teml=read_1820(); /读数

19、据 temh=read_1820(); if(temh&0x80)/判断正负 flag=1; c=0; c=c|temh; c=c&0x00ff; c=c4; else flag=0; /为正 a=temh4; /得到高位的值 b=teml&0x0f; temh=a; teml=b&0x00ff; sensor_data_value0=teml; sensor_data_value1=temh;清单5.3 利用DS18B20读取温度数据函数/* * 函数名 read_1820 * 描述 利用DS18B20读取温度数据的底层函数 * 参数 无 * 返回值 返回读取的温度数据 */UINT8 re

20、ad_1820(void) UINT8 temp,k,n; temp=0; for(n=0;n8;n+) CL_DQ; SET_DQ; SET_IN; k=IN_DQ; /读数据,从低位开始 if(k) temp|=(1n); else temp&=(1n); Delay_nus(70); /60120us SET_OUT; return (temp); 清单5.4 传感器读取外部光照强度的函数/* * 函数名 myApp_ReadLight* 描述 读取传感器测出的外界光度强度信息 AD采样使用P04管脚 * 参数 无 * 返回值 返回环境的光照强度信息,范围在0100之间,100最亮 */

21、static uint8 myApp_ReadLight( void ) INT8 adc_value; P0DIR &= (0x014); /设置P04为输入模式,采集P04的电压 ADCCFG |= (0x01 0 ? adc_value : 0); v = (float)adc_value / (float)0x7F); v *= VDD; return (INT8)(100-v*100/VDD);/光敏亮度0100.0为最暗,100为最亮 5.3.3 实验结果利用TI公司提供的ZigBee Sensor Monitor(1.2.0)工具可以看到节点的拓扑数据信息图。如图 是该工具的界面

22、,如图 是我们实验结果的拓扑数据信息图。图 zigbee Sensor Monitor (1.2.0)界面展示图 实验拓扑数据信息我们用串口助手v3.1,可以看到数据的输出结果,如图 所示。图 串口调试助手显示采集的数据信息问题1:在该实验代码中,协调器通过什么样的方式来区分上传上来的不同类型的环境信息?问题2:本套实验模块,最多可以添加几个外部环境传感器器件?问题3:当协调器接收上来的数据量很大时,协调器怎样避免这种问题的发生?问题4:为了节约传感器模块的电池电量,能否实现传感器模块的省电模式?即,每个传感器模块在不发送数据的时候,进行睡眠;发送数据时就被立即唤醒。问题5:该实验能否实现MESH网?如果能,怎样保证数据的可靠传输?如果不能,为什么?

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1