温湿度检测实验-物联网

举报
泽宇-Li 发表于 2022/11/28 22:19:59 2022/11/28
【摘要】 本次实验主要以温湿度检测为主要 用到了cc2500 zigbee 温湿度传感器等仿真工具来模拟 采集温湿度数据并传输到仿真工具show。

简介:(可以使用android自行完成 也需要用到maven的api)

本次实验主要以温湿度检测为主要 用到了cc2500 zigbee 温湿度传感器等仿真工具来模拟 采集温湿度数据并传输到仿真工具show。

什么是温湿度传感器?

温湿度传感器多以温湿度一体式的探头作为测温元件,将温度湿度信号采集出来,经过稳压滤波、运算放大、非线性校正、V/I转换、恒流及反向保护等电路处理后,转换成与温度和湿度成线性关系的电流信号或电压信号输出,也可以直接通过主控芯片进行485或232等接口输出。

1.   实验目的

  • 学习CC2530基于Z-Stack协议栈的IIC驱动编程
  • 学习TI ZStack2007协议栈内容,掌握CC2530模块无线组网原理及过程

2.   实验环境

  • 硬件:ZigBee(CC2530)模块两个,温湿度传感器,UART下载调试板,CCDebugger仿真器,PC
  • 软件:IAR Embedded Workbench for 8051 ZStack-2.3.0-1.4.0协议栈
  • 实验目录:Src\ZigBee\Components\CC2530无线传感网实验\实验05 无线温湿度检测实验

3.   实验原理

  • 传感器原理及应用

AM2322 数字温湿度传感器是一款含有己校准数字信号输出的温湿度复合型传感器。采用专用的温湿度采集技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电容式感湿元件和一个高精度集成测温元件,并与一个高性能微处理器相连接。该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。

典型应用: 暖通空调 、除湿器、测试及检测设备、消费品、汽车 、自动控制、数据记录器、气象站、家电、湿度调节、医疗及其他相关湿度检测控制。

  • 硬件原理图分析

本实验使用平台配套的温湿度传感器,传感器与ZigBee采用IIC总线通讯,传感器硬件原理如下:

3.1 AM2322硬件原理图

传感器与通讯模块通过两排20Pin的排针相连接,ZigBee模块接口电路图如下:

3.2 ZigBee接口原理图

4.   实验步骤

1)将CC Debugger仿真器、温湿度传感器、ZigBee通讯模块、UART调试板、仿真器转接板按照下图方式连接(图片中传感器仅供参考)。

4.1 终端节点

4.2 协调器节点

2)用IAR for 8051打开实验工程,目录在:Src\ZigBee\Components\CC2530无线传感网实验\实验05 温湿度检测实验\Projects\zstack\Samples\SampleApp\CC2530DB,之后打开后缀名为(.eww)的工程文件。

3)编译程序,菜单栏Project->Rebuild All

4)编译通过之后下载CoordinatorEBEndDevices程序到两个ZigBee模块,点击按钮如图:

注意:本工程需要编译两次,一次编译为协调器,一次编译为终端,通过在Workspace中工程选择单元来选择不同的源码,当选择为CoordinatorEB时为协调器,当选择为EndDevices时为终端,如下图:

5.   实验结果

依次烧写协调器和终端节点,当协调器组建网络成功过后RED灯保持常亮,终端节点加入网络过后RED灯常亮(若网络未连接则RED灯闪烁),打开串口调试软件,配置串口参数连接到协调器的端口,此时串口终端显示温湿度传感器的值,如下图:

部分代码展示:

/*
* @name   Run
* @brief  系统运行
* @param  None
* @retval None   
*/
static void Run()
{
  float   Temp_float = 0;
  uint16_t Temp_uint  = 0;
  //调用SHT30周期检测函数
  SHT30.Measure_Period_Mode();

  //串口打印温湿度
  printf("温度:%.1f度\r\n",SHT30.fTemperature);
  printf("湿度:%d%%RH\r\n\r\n",SHT30.ucHumidity);

  //判断温度正负
  if(SHT30.fTemperature < 0)
  {
    Temp_float = 0 - SHT30.fTemperature;
    Display.Disp_Other(Disp_NUM_4,0x40,Disp_DP_OFF);
  }
  else
  {
    Temp_float = SHT30.fTemperature;
    Display.Disp_Other(Disp_NUM_4,0x00,Disp_DP_OFF);
  }

  //显示温度
  Temp_uint = (uint16_t)(Temp_float*10); //将温度值乘以10,显示小数点后一位
  Display.Disp_Hex(Disp_NUM_3,Temp_uint/100,Disp_DP_OFF);   //显示十位
  Display.Disp_Hex(Disp_NUM_2,Temp_uint%100/10,Disp_DP_ON);  //显示个位,开启小数点
  Display.Disp_Hex(Disp_NUM_1,Temp_uint%10,Disp_DP_OFF);    //显示小数点后一位

  //显示湿度
  Display.Disp_Hex(Disp_NUM_6,SHT30.ucHumidity/10,Disp_DP_OFF);
  Display.Disp_Hex(Disp_NUM_5,SHT30.ucHumidity%10,Disp_DP_OFF);

  //延时
  HAL_Delay(500);
}

作者:泽宇-Li

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。