辜渝傧

13037102709

027-87870986

新闻动态

您当前的位置:首页 > 新闻动态 > 行业动态 >

物联网技术区||传感控制器的应用之温湿度的获取

发布者:    布时间:2020-09-16 16:33:54    点击量:

      任务描述
      通过编程实现温湿度数据的读取,在节点模块的液晶屏幕上进行显示,当用手接触温湿度传感器时,获取值会产生实时变化。
      知识引入
      温湿度传感器在生活中应用广泛,常用于温室大棚的检测,仓库、智能家居中的监控,工厂里机器工作的温湿度监控等。现在大多数市面上的温度传感器可检测的范围大概是-20℃到+200℃。湿度传感器根据工艺和材料略有不同。
      温度传感器是指能感受温度并转换成可用输出信号的传感器。按测量方式可分为接触式和非接触式两大类,按照传感器材料及电子元件特性分为热电阻和热电偶两类。
      常见的湿度传感器有碳膜湿度传感器,金属氧化物陶瓷式湿度传感器,电解质湿度传感器(氯化锂湿敏电阻),高分子湿度传感器(高分子湿敏电阻),高分子湿度传感器(高分子湿敏电容(流行)),红外湿度传感器,微波湿度传感器,超声波湿度传感器等。

  1. 实验电路图
       本项目中引脚接口的功能定义相同,如图4-1所示,后期任务中将不再介绍。
引脚接口与功能定义
图4-1 引脚接口与功能定义
       SHT3X读取的温度误差率较低,精度较准,通过IIC总线直接接入单片机,STC15通过P00和P01与SHT3X进行连接,原理图如下:
温湿度传感器原理图
图4-2 温湿度传感器原理图
       本任务实现需要节点板、slink通信模块、温湿度传感器模块各一个。
  1. 关键代码的分析
       此处给出完整的温湿度传感器数据获取、显示、发送代码,在后期任务实施的代码书写部分可以直接使用,也可以根据实际需求进行举一反三,修改利用。
       源码中与项目三相关的知识这里简单注释,不再展开分析。代码中关键知识点部分以注释形式进行分析,请仔细阅读分析,在任务实施过程中可根据实际情况决定是否书写。
//*文 件 名:    main.c
#include "WZ01_BR13_A_V1.0.h"
#include "DHT11.h"
#include "Uart3.h"
/*-源码分析-----------------
以上三个头文件功能描述如下:
WZ01_BR13_A_V1.0.h:设备厂家单片机定义的头文件;
DHT11.h:读取DHT11温湿度传感器的数据的头文件;
Uart3.h:串口3收发以及端口的映射的头文件。
------------------*/
ulong System1MsCnt = 0;             //系统1ms计数器
ulong SystemSecond = 0;
void Timer0Init()      
//*功能描述:    定时器0初始化函数
{
    AUXR |= 0x80;                   //定时器0为1T模式
//  AUXR &= 0x7f;                   //定时器0为12T模式
    TMOD = 0x00;                    //设置定时器为模式0(16位自动重装载)
    TL0 = T1MS;                     //初始化计时值
    TH0 = T1MS >> 8;
    TR0 = 1;                        //定时器0开始计时
    ET0 = 1;                        //使能定时器0中断
    EA = 1;
}
void Timer0_ISR() interrupt 1 using 1
//*功能描述:    定时器0中断服务函数(启动后每1MS进入一次)
{
    static uint counter0=0;
    counter0++;
    System1MsCnt++;
    if(System1MsCnt%1000==0)
    {          
//      BUZZER = !BUZZER;//可根据功能自定义代码。
    }
}
void main(void)
//*功能描述:    主函数
{
    uint  i=0;
    uint  value=0;
    uint  temp16=0;
    uchar buff[20]={0};  //定义字符数组存储串口发送字符串
    uint temp = 0;  //定义整型变量存储温度值
    uint humi = 0;  //定义整型变量存储湿度值
    BUZZER_INIT();
    Timer0Init();     //定时器0初始化
    Uart1Init();    //串口1初始化
    Uart3Init();    //串口3初始化
    OledInit(); //节点底板led屏初始化
    OledClear();
    OledDispString(1,1,"   DHT11温湿度  ");
//在OLED液晶显示屏上的第一行第一列的位置显示“DHT11温湿度”文字信息
/*源码分析------------------
以上OledDispString()函数功能如下:
1.OledDispString(uchar page,uchar column,uchar *text):以OLED液晶显示屏上的第page行、column列的位置开始,显示*text文字信息;注意,中文字符为双字节,所以当要显示含有中文字符的信息,应占2行。
如有第一行“当前温湿度”、第二行“温度25,湿度30”两行字符显示,对应代码如下:
OledDispString(1,1,"  当前温湿度  ");
OledDispString(3,1,"温度25,湿度30");
------------------*/
    while(1)
    {      
        temp16 = DHT11();                           //获取温湿度
        temp = temp16>>8; 
        humi = temp16&0x00FF;
/*源码分析------------------
以上三行代码功能分析如下:
1.temp16 :通过DHT11()函数获取16位温湿度值,高八位存放温度值,低八位存放湿度值,参见第三章DHT11数字湿温度传感器数据格式;
2.temp16>>8:右移八位,只保留高八位,获取温度值;
3.temp16&0x00FF:通过按位与运算,只保留低八位,获取湿度值。
------------------*/
        sprintf(buff,"温度:%d 湿度:%d",temp,humi); 
        OledClearHalf(2);
        OledDispString(3,1,buff);                  
        sprintf(buff,"#var 1 %d\r",temp);
        Send3String(buff); 
/*源码分析------------------
以上两行代码功能分析如下:
1.sprintf(buff,"#var 1 %d\r",temp):把temp温度变量值代入前面第二个参数字符串中的“%d”位置,存储到buff字符数组中。例如temp=25;那么buff字符数组中最后存储的是”#var 1 25\r”字符串,是向物联网网关发送信息的数据格式,此字符串格式含义在上位机开发中会详细叙述。
2.Send3String(buff):通过串口3向网关发送buff字符数组中的信息。
------------------*/
 
        DelayMs(100);  //延时100毫秒
        sprintf(buff,"#var 2 %d\r",humi);
        Send3String(buff);
        DelayMs(1000); 
    }
}
 
任务实现
1. 将无线模块插到节点底板上,注意天线朝左,将DHT11温湿度传感器插到节点底板,有白色丝印的角朝右。如图4-3温湿度节点模块所示。
温湿度节点模块
图4-3 温湿度节点模块
  1. 连接节点模块电源,为节点底板通电,此时led1灯点亮状态。
  2. 在Keil软件打开随书资源中“源代码\项目四\任务1\WZ01_CZ_A_V1.0.uvproj”温湿度工程文件,工程目录如图4-4所示。
                        温湿度工程目录结构
图4-4 温湿度工程目录结构
 
  1. 在主程序main.c中编辑前面关键代码分析中的源码,完成后保存。
  2. 依据本教材项目二中任务二的操作,进行编译选项的设置。
  3. 点击编译按钮,成功编译后,在工程目录下output文件夹中生成了”温湿度采集实验.hex”可执行文件。
提示:在编译过程中,编译与C语言编译器类似,可以双击错误提示,跳转到错误地方,改正错误。
需要对函数或变量的定义进行查看,鼠标移动到所要查看的内容上,单击右键,在弹出的快捷菜单中点击”Go To Definition ‘’ 菜单项转到定义部分进行查看,如图4-4所示。
          Go To Definition
图4-5 Go To Definition
 
       上述内容在后面项目中不再重复讲述。
  1. 打开STC-ISP软件,将USB-TTL下载器插上电脑(需要安装驱动),依据本教材项目二中任务三中的操作,选择下载器端口号和刚刚生成的HEX文件。
  2. 查看运行结果
       程序下载完毕,OLED 屏幕将显示“温度:27 湿度:69”,如果认为的改变传感器周边的温度或者湿度,OLED上的温湿度数据也将随之改变。
       任务小结
       本任务通过编程实现温湿度数据的读取,让初学者熟悉传感器编程的思路,进一步加强开发环境的使用和配置,本任务中主要知识点为温湿度读取DHT11()函数、节点底板液晶屏幕显示,同时要注意向网关发送数据的格式。

唯众物联网工程应用实训装置带你快速掌握物联网关键技术

唯众物联网实训室工程应用装置
一、产品名称:物联网工程应用实训装置
二、产品型号和技术规格
1.  产品型号:WZ-IOT-ATP
2.  外型尺寸:
桌面式操作台1个操作台底座1个
3.  电压/功率:220V
4.  配套设备
实训台:
温湿度传感器1个
人体红外监测器1个
高频RFID阅读器1个
光照强度检测器1个
可燃气体监测器1个
RGB三色灯执行器1个
LED显示屏2个
智能语音播放设备1个
继电器1个
 
       物联网教学实训主要用于对物联网核心课程的知识点学习,能够服务于相关课程的实验和实训需求。
       核心课程主要针对学科基础技术的培养,掌握物联网概论,传感器和RFID 等感知设备认知和开发,ZigBee/Wi-Fi/蓝牙等无线网络的配置、维护和开发,物联网互联接入及存储,物联网应用层软件开发,物联网产品整合等基本知识。
       核心课程采用全模块化的实验箱教学产品进行实验,具备优良的教学实验特性:全模块化的设计、开放式的硬件接口、开源的实验代码、完整的教学资源、贴心的售后服务。
       基于ARM Cortex-M4核心的通信网关,支持无线节点模块的双向连接及组网,与配套“可视化编辑器”和“可视化控制器”进行配置和控制。物联网关可以管理不同协议的无线节点模块,并能将多个无线节点模块视作不同设备,将无线节点模块的数据转换为TCP网络通信进行传输,网关同无线节点模块可以互通互联,轻松构建物联网络,共同构成物联应用开发平台。通过本物联网平台,可以迅速降低物联网应用的开发成本和开发时间,开发者即便不会编程,也可以在一两天之内,就迅速使用本平台开发搭建出自己的物联网应用。
       通过电脑PC端可直接以“可见即可得”的方式在此工具上生成不同的设备操作界面,支持指示灯、按键、图片集合、变量视窗、图文链接等五种可视化控件。所有控件的动作都可以直接反应到实际的物联设备(即无线节点模块)上。界面生成后,可以直接导入App使用,而不需要重新编译或安装App。
       通过物联网关、可视化控制器、可视化界面生成器编辑器、万纳模组、物联网传感器/执行器以及配套物联网连件连接件,师生不仅可以完成出基于物联网、远程访问、设备联动等功能的物联网实训项目,还可以迅速开发物联网商业产品\项目,如空气监测仪、电气设备在线监测器等等,并随时实现不同设备间的联动,而这些开发过程,基于本系统的可视化开发工具,可以做到零编程实现物联网应用系统。
       支持家庭常用的各种无线协议(红外、射频),兼容市面绝大多数品牌的空调、电视机、灯光、安防、窗帘等等家电设备,因此可以直接当做一套完备的智能家居系统进行使用,并集成了摄像头功能,可以直接在App中使用摄像头。
       平台所有设备采用模块化、集散化、工业化的设计模式,每个模块都为独立工作单元;模块均接近实际应用系统,能够容纳2-3个学生同时实训,可完成工程项目应用开发系统中硬件设备的安装、布线与调试,完成设备间的无线组网,既具有展示型又具有实操性。能够组建具有行业特色的物联网智能家居实训项目,确保学生可利用设备搭建真实工程项目。
 


上一篇:物联网技术区|| STC15单片机应用开发之外部信号采集

下一篇:物联网技术区||传感控制器的应用之光照强度的采集