无线传感器监测数据采集实验_第1页
无线传感器监测数据采集实验_第2页
无线传感器监测数据采集实验_第3页
无线传感器监测数据采集实验_第4页
无线传感器监测数据采集实验_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

姓名:谭芳亮班级:通信〔1〕班实验1:无线传感器监测数据采集实验【实验目标】在无线传感器节点的单片机驱动代码的根底上,编写传感器数据采集程序,实现对温湿度传感器的数据采集和计算。【实验设备】类别名称所需数量〔每组〕物联网设备ZIGBEE无线空气温湿度传感器1个【实验要求】〔1〕熟悉温湿度传感器工作原理;〔2)熟悉温湿度传感器接口协议;〔3〕编写温湿度传感器接口代码;〔4〕实现温湿度传感器的数据采集和计算,并验证采集结果的正确性。【实验原理】1、开发环境所需软件JDK,Precision32IDE,MDK,J-link驱动(见理工学校实验/tool).图1-1所需要的软件2、MDK的安装与注册学过51的同学对MDK都不是太陌生,sim32也是用MDK编译代码。MDK对不同的内核有不同的版本,这里用的是keilforARM4.7双击MDK进行安装,安装过程需要填写一些信息,这些可以随便填写,相信学过51单片机的同学都知道。一直点击next直到安装完成。MDK没注册代码长度有2K的限制,代码过大会报错,因此需要注册。右击MDK快捷方式图标,点击以管理员身份运行。点击file->licensemanger...,翻开注册机,将CID复制到注册机里,选择ARM版本,生成注册码,将注册面复制到licenseManagement中,点击AddLIC按钮,完成注册。具体过程见DOC/MDK的安装激活与使用。3、将SIM32官方库复制到在C盘根目录下。〔工程里的库文件用的是绝对路径〕。4、MDK的工程管理〔向工程里面添加文件〕在这里大家也许会有疑问,怎么用MDK建立工程,用MDK建立过程,设置项比拟多。容易出错,因此不建议用MDK建立工程,SIM官方提供的有Precision32IDE可以建立MDK工程,IAR工程,不过安装IDE之前需要安装JDK,配置环境变量。IDE安装之后,需要用邮箱注册,过程比拟繁琐,因此不建议大家使用。有兴趣的同学可以参考DOC/IDE的安装。我们使用建立好的工程模版,只用在使用时向工程里面添加文件即可。添加文件有两种方法。方法一:点击工具栏工程管理图标进入工程管理如图图1-2MDK工程管理方法二:在MDK主页面左边project窗口工程名上右击,点击AddGroup,添加组。在组上右击添加文件。在文件名上右击选择删除问价。5、MDK的工程设置在工程模板根本上把工程的常用设置项已经设置好了。在使用过程中只用改动少许设置。Output设置在CreateHEXFile前面打勾〔hex文件是烧写向单片机烧写的文件〕图1-3output设置C/C++点击IncludePath行尾的小按钮,点击图中的新建,点击行尾的小按钮,将新参加工程中的文件的头文件路径包含里面。〔编译器根据这个路径找到要包含的*.h文件路径,不加进去,不能顺利编译,会报错〕。图1-4c/c++设置Debug设置〔用J-link把节点和电脑相连,给节点上电〕如下图。传感器和网关全部用的是J-link转SW〕图1-5Debug设置Utilities设置如图。图1-6Utilities设置6、J-link转SWD的制作图1-7是J-Link和SWD的示意图,用杜邦线把相应的引脚连接。图1-7J-link转SWD7、通用IO口输入输出控制通用IO口实验通常是单片机的第一个实验这里简单介绍几个函数单片机IO设置为上拉输出函数SI32_PBSTD_A_set_pins_push_pull_output(SI32_PBSTD_1,0x0020)参数解释,SI32_PBSTD_1代表的是P1端口0x0020代表的是第5个引脚。0x0020写成二进制是0000000000100000,第5位是1,因此表示的是第5个引脚。单片机IO输出高电平SI32_PBSTD_A_write_pins_high(SI32_PBSTD_1,0x0020)单片机IO输出低电平SI32_PBSTD_A_write_pins_low(SI32_PBSTD_1,0x0020)单片机IO设置为输入SI32_PBSTD_A_set_pins_digital_input(SI32_PBSTD_1,0x0010)读取引脚电平SI32_PBSTD_A_read_pin(SI32_PBSTD_1,2)参数解释2表示的是第二个引脚,这里的定义和上面不一样,在使用时要注意。8、温湿度传感器和单片机的接口温湿度传感器和单片机采用的是类似IIC的串行通信,和单片机相连如图1-8所示VDD和GND是传感器供电引脚。SCK是时钟引脚,在通信这个过程中,SCK信号都是有单片机控制的。DATA是数据线,和单片机IO口相连。用于向传感器发送指令和从单片机读走数据。数据在时钟的上升沿生效在时钟是高电平时保持不变。在时钟是低电平时准备数据。接口如下图。图1-8温湿度接口图1-9开始信号单片机先向传感器发送开始命令,然后开始通信,开始命令时序图如下图。在SCK高电平时,将数据线拉低,在下一个时钟高电平期间,将数据线拉高。开始信号发送完毕。再开始信号后是命令信号,命令信号包含3位地址位〔只支持000〕和5位命令位组成。传感器在接收到1byte数据时〔即第八个时钟下降沿〕将数据线拉低,表示数据正确接收。在九个下降沿被释放。命令如下表。单片机在发送完命令信号后,等待温湿度传感器测量完成。传感器在转换完成后将数据线拉低。单片机产生时钟信号,从温湿度传感器读数据。数据包含2bytes的测量结果和1bytes的校验。单片机在收到每字节数据都要将数据线拉低给出应答信号。数据高位在前,低位在后。传感器在测量结束和通信完毕后自动进入休眠。具体操作见数据手册。时序图如图1-10所示。图1-10传感器工作时序图计算公式温度计算公式:湿度计算公式:【实验步骤】1、建立开发工程;用MDK翻开工程模板。把similar_i2C.c和similar_i2C.h参加到工程。将similar_i2c文件夹拷贝到工程模板目录中。添加过程见前面工程管理在工程设置里面将头文件路径参加。调用similar_i2C.c中函数,编写温度采集和湿度采集代码在工程模板根目录下建立sht1xx_sensor,在里面新建sht1xx.c和sht1xx.h空文件,将c参加到工程,将h文件参加到工程设置中编写c文件。将c函数中可以被调用的函数在h文件中声明。代码见例程。数据采集流程图:开启传感器式开始调用温、湿度采集函数延时式计算温度、开启传感器式开始调用温、湿度采集函数延时式计算温度、湿度值式写写存放器,设置精度重新开启传感器重新开启传感器式设置存放设置存放器温〔湿〕度测量模式循环循环式延时延时式读存放读存放器,并转换成对应精度的测量值式温度采集:floatSHT15_temp_samp(){ uint8_ttemp_data[3]; floattemp=0; simliar_i2c_transstart();//开启传感器 similar_i2c_write_byte(0x06); //设置存放器写模式 similar_i2c_write_byte(0x01);//写存放器,设置精度8bitRH/12bitTemp simliar_i2c_transstart();//开启传感器 similar_i2c_write_byte(0x03); //设置写存放器温度测量模式 SIMILAR_I2C_DATA_IN; delay_us(100000); //延时 SIMILAR_I2C_DATA_OUT; temp_data[0]=similar_i2c_read_byte(SIMILAR_I2C_ACK);//读第一个字节〔高位〕 temp_data[1]=similar_i2c_read_byte(SIMILAR_I2C_ACK);//读第二个字节〔低位〕 temp_data[2]=similar_i2c_read_byte(SIMILAR_I2C_NOACK); //读校验码 temp=temp_data[0]*256+temp_data[1]; //12位温度测量值 returntemp;}湿度测量:floatSHT15_rh_samp(){ uint8_tRH_data[3]; floatrh=0; simliar_i2c_transstart();//开启传感器 similar_i2c_write_byte(0x06); //设置存放器写模式 similar_i2c_write_byte(0x00);//写存放器,设置精度12bitRH/14bitTemp simliar_i2c_transstart();//开启传感器 similar_i2c_write_byte(0x05); //设置写存放器湿度测量模式 SIMILAR_I2C_DATA_IN; delay_us(100000); //延时 SIMILAR_I2C_DATA_OUT; RH_data[0]=similar_i2c_read_byte(SIMILAR_I2C_ACK);//读第一个字节〔高位〕 RH_data[1]=similar_i2c_read_byte(SIMILAR_I2C_ACK);//读第二个字节〔低位〕 RH_data[2]=similar_i2c_read_byte(SIMILAR_I2C_NOACK);//读校验码 rh=RH_data[0]*256+RH_data[1]; //12位湿度测量值 returnrh;}编写main()调用温度采集和湿度采集函数,并对原始数据进行处理。temp_value=SHT15_temp_samp();//调用温度采集函数g_temp=-39.7+0.04*temp_value;//计算温度值 rh_value=SHT15_rh_samp();//调用湿度采集函数g_rh=-4+0.0405*rh_value+rh_value*rh_value*(-2.8)/1000000+(g_temp-25)*(0.01+0.00008*rh_value);//计算湿度值5、将翻开调试界面,调试程序,读取温度和湿度的数值,并用手按压传感器改变温度看温度数值的变化。向传感器慢慢吹气,看湿度的变化。并在表格里记录。第一次第二次第三次第四次第五次温度原始值0X05D10X

温馨提示

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

评论

0/150

提交评论