资源描述
基于单片机环境温湿度监测系统设计
院(系)别 信息工程学院
专 业 物联网工程
班 级 131
姓 名 李建昊,黄佳佳,吴世谱
学 号 20131554103,20131554120
20131554102
指导教师 王建平,白林峰
远程温湿度监控系统
吴世谱,黄佳佳,李建昊
(河南科技学院,河南 新乡 453003)
摘要:随着人们生活质量的逐渐提高,人们越来越关注自己的生活环境,尤其是室内环境的舒适度,如何实时的监控居住环境的各种环境指标,并实时的把这些信息传递给用户,并实现室内环境的自动调节,达到智能控制的目的,成为智能家居的重要组成部分和研究问题。本文介绍了通过嵌入式系统,以C语言和C#为开发基础的下位机和上位机的软件开发任务。主要应用15F单片机为控制芯片,DH11温湿度传感器采集室内的温湿度,实现温湿度的检测,用网络模块实现数据向网络传输的功能,在windows窗体的界面上显示出来,并实现网络与单片机的双工通信功能。
关键字:智能控制,温湿度检测,双工通信。
目录
1 引言 4
1.1研究背景及意义 4
1.2主要解决的问题 6
2. 基于单片机的温湿度网络远程采集器 7
2.1温湿度网络远程采集器的组成和工作原理 7
2.2温度传感器概述 8
2.3STC15F60S2单片机简介 10
2.3.1单片机的特点 11
4.2 单片机的特点: 11
3. 程序介绍和实物展示 12
3.1硬件设计和基于控制系统的编程 12
3.2基于C#的windows窗体上位机编程 17
4.0总结与展望 20
参考文献 21
1 引言
1.1研究背景及意义
集中供暖是我国北方地区冬季的采暖的主要方式。据统计,每年需要采暖的区域遍布全国个省、市、自治区,占全国总面积的以上,采暖涉及人口达7亿以上,初步估算每年冬季单纯用于采暖所消耗的能源折合人民币近亿元,占全国能源总消耗的四分之一左右,其中集中供暖占全国整体采暖能耗的以上。
由此可见,冬季的集中供暖是关系到国计民生的大事,但传统的、盲目的、不考虑室外温度的集中供暖方式造成了大量的能源消费,所以降低集中供暖过程中的浪费,在我国的节能减排、能源高效利用的过程中有着重要的意义,与我国低碳环保,发展绿色经济的理念相一致。
在我国,集中供暖费用基本都是供暖季始前预先一次交清,现在考虑的是大部分居民在整个冬季每天小时都要采暖,空置浪费现象严重,表现在以下三个方面:
(1)人多城市卜班族的家庭:一天在家里的吋间只有晚上六点到第二天早晨的七点左,即一大有近11小吋在家,采暖空置比例约为45%。
(2)写字楼、企事业单位和工厂等:平均每天晚上八点至第二天早晨八点左右无人上班,采暖空置比例也约为45%。
(3)当供暖温度过热时(户外天气热或水温过热),幵门开窗而导致的热量浪费现象时有出现。
综合以上三个方面,集中供暖模式造成采暖空置及过热浪费比例约为50%。由次可以估算出,我国每年冬季集中供暖造成无效采暖所浪费的能源折合人民币约350亿元。
针对以上的三个方面,有的地区采取了分户独立汁量、独立采暖形式,从一定程度上避免了上述两个问题。但对于供暖温度过热问题造成的能源浪费仍然未能解决。
具有五千年悠久历史的中国,与古埃及、古印度和古巴比伦并称为世界上的四
大文明古国。在这五千年里,我们勤劳智慧的祖先给我们留下了许多珍贵的精神
财富和物质财富。精神财富是博大精深的中国文化,而物质财富就是流传至今的
文物。这些珍贵的文物对于我们现代人来说是不可再生的财富,如何保护好这些
财富是我们需要考虑的问题。
据全国政协委员、故宫博物院院长单雾翔介绍,在我国首次进行的“全国馆藏
文物腐蚀损失调查”中显示,全国约有半数的馆藏文物存在不同程度的腐烛损害。
调查显示,“全国馆藏文物腐烛损失调查”项目组对全国家各类国有文物收
藏单位的余万件馆藏文物进行了调查,共有的馆藏文物存在不同程度
的腐烛损害。其中约有的馆藏文物处于颜危腐烛程度,达万件;约有
的馆藏文物处于重度腐烛程度,多达万件。
全国馆藏文物腐烛损失调查”项目研究结果显示,在全国所有国有文物博物
馆收藏文物中,尤其是对环境因素作用敏感的纺织品、纸质、竹木漆器等有机质
地文物,中度以上病害发生率占半数以上,文物腐烛损失状况触目惊心,并存在
円益严重的趋势。博物馆文物保护中亟待解决的首要问题,就应该从减少腐烛损
失入手。
对于文物在保存过程中为什么会出现腐烛损失,主要有以下三点原因:一是环
境因素影响已经成为博物馆藏品损害的主要原因;二是馆藏文物保存环境的关于
安全性和可靠性等基础应用技术研究欠深入;三是馆藏文物保存的环境管理机制
和监控平台建设工作滞后。
温度和湿度是对馆藏文物保存环境影响较大两个因素,温湿度的异常变化往往
会对馆藏文物造成无法恢复的损害,必须对其加以严格的控制。对于温度指标,
虽然在低温环境下,有利于降低化学反应速率,延缓文物的自然老化,但低温环
境也会导致有的文物因为收缩不均勻而造成损害,并且达到低温环境耗能比较大,
不太经济。对于湿度指标,馆藏文物处于过分干燥或者过分潮湿的保存环境中,
都揚造成损害,并且不同材质的文物对环境湿度也有不同的要求,而且还应当充
分考虑博物馆所在地区的气候特性。温度和湿度的异常变化,会引发文物材料在
短时间内频繁地热胀冷缩和湿涨干缩而造成损害。由于在展柜等相对密闭的环境
中,温度和湿度之间存在着稱合效应,文物保存的环境中相对湿度将随着温度的
变化而发生明显的变化,。同时,湿度对于馆藏文物的影响相比温度更加强烈。
所以,监控馆藏文物环境中的温度和湿度是非常重要的。
因此,本论文研究内容主要针对我国北方地区的集中供暖和我国博物馆、图书
馆以及档案馆馆藏物保护这两个问题,设计和实现了基于的单片机温湿度网络远程监控系统,旨在集中供暖和馆藏物保护的过程中能降低能源消耗,更高效地实现节能减排、低碳环保,实现可持续发展的目标。
虽然国内外有类似的技术和产品出现,但是大多具有以下几个问题:一是不
够经济实惠,产品费用高昂,造成了对新的节能措施的投入的费用反倒大于能源
消耗的奇怪现象;二是系统功能不够全面,例如只能监测当前的温度和湿度,但
是无法实时地显示和反馈给用户或者操作者,无法让用户或者操作者及时进行调
整;三是系统安装复杂,不能简便使用,考虑到产品使用者身份的多样性,系统
设计应该简洁易用,方便操作;四是系统专用性过强,导致扩展性差,兼容性低,
不能方便移植,或者对系统进行升级等。
所以,本文设计的这样一套温湿度网络远程监控系统可以给供暖部门和管理部门提供方便的、实时的监控区域内的温湿度信息,对于温湿度的异常,可采取相应调控措施,以达到高效供暖,节能减排、发展绿色经济的目标和实现长久保存、妥善保管的馆藏物的目的。通过模块化的设计,在不远的未来,我们还可以使用更多类型的传感器,利用本文设计的系统监控其他需要的物理量,使得物理空间和先进的信息技术更好地结合,从而使人们的生活变得更加方便,更加低碳环保。
1.2主要解决的问题
论文的提出主要是为解决我国北方地区集中供暖过程中存在大量的供暖浪费以及我国博物馆、档案馆和图书馆等馆藏物保存的环境中存在的问题,从而设计一套可以远程采集温度和湿度,并可以通过网络将采集到的温度和湿度数据返回给服务器,然后通过浏览器或者客户端等方式实时地呈现给用户和管理者。
主要的切入点是:
一、对于供暖浪费的问题,通过在供暖终端设置监测点,布置若干个温湿度网络采集器节点,实时监测区域内的温度和湿度,并通过以太网返回给服务器。管理者和操作者或者普通用户均可以在各自的终端或者其他客户端访问服务器,观测当前的温湿度值。管理者可以对不同的监控区域设置不同的湿度上限、监控吋段,以及设置特定的告警信息等。操作者根据管理者预先设定的上下限以及当实时的温度,对集中供暖系统的出水温度进行实时地调控。
第二、对于馆藏物保护问题,通过在馆藏物保存环境内设置监测点,布置若干个温湿度网络采集器节点,实时监测馆藏物所在微环境内的温度和湿度,并通过以太网返回给服务器。管理者可以通过终端或者其他客户端访问服务器,观测当前的温湿度值。管理者可以通过预先设定监控的温湿度上下限,以及设置特定的告警信息,对温湿度的异常变化进行及时的调控。
2. 基于单片机的温湿度网络远程采集器
2.1温湿度网络远程采集器的组成和工作原理
2.1.1温湿度网络远程采集器的组成
温湿度络远程采集器是一个可以远程动采集监测区域内的温湿度信号,并通过以太网络发送至服务器,温湿度传感器模块、以太网通信模块、电源模块等组成。温湿度网络远程采集器原理图见2—1。
控制模块
上位机软件
5v电源
网络模块
温湿度传感器
图2—1
本文中设计的温湿度网络远程釆集器的控制模块选用15F单片机,DH11温湿度传感器模块,单片机网络通信模块。
2.1.2温湿度网络远程采集器的工作原理
DH11温湿度网络远程采集器的温湿度传感器模块主要组成部分是个温湿度传感器。传感器是一种检测装置,能感受到被测量的信息,并能将检测感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。我们这里用到的温湿度传感器就是可以监控传感器所在区域内的温度和湿度等模拟信息,转化成数字也信兮输出给控制模块进行接下来的信息处理。
控制模块将传感器送来的温湿度信息按照设定的要求进行处理,打包成温湿度数据包,经过处理的温湿度数据包在网络畅通的情况下,通过以太网通信的方式发送给服务器。
网络模块把15F单片机串口的数据路由到PC端上位机上。
2.2温度传感器概述
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为4针单排引脚封装。连接方便,特殊封装形式可根据用户需求而提供。
传感器参数表如表2-2
参数
条件
Min
Typ
Max
单位
湿度
分辨率
1
1
1
%RH
8
Bit
重复性
±1
%RH
精度
25℃
±4
%RH
0-50℃
±5
%RH
互换性
可完全互换
量程范围
0℃
30
90
%RH
25℃
20
90
%RH
50℃
20
80
%RH
响应时间
1/e(63%)25℃,
1m/s 空气
6
10
15
S
迟滞
±1
%RH
长期稳定性
典型值
±1
%RH/yr
温度
分辨率
1
1
1
℃
8
8
8
Bit
重复性
±1
℃
精度
±1
±2
℃
量程范围
0
50
℃
响应时间
1/e(63%)
6
30
S
表2-2
4、串行接口 (单线双向)
DATA 用于微处理器与 DHT11之间的通讯和同步,采用单总线数据格式,一次 通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当前小数 部分用于以后扩展,现读出为零.操作流程如下:
一次完整的数据传输为40bit,高位先出。 数据格式:
8bit湿度整数数据 +8bit湿度小数数据
+8bi温度整数数据+8bit温度小数数据
+8bit校验和 数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据
1. 通讯过程如图2-3所示
图2-3时序图
2-4温湿度检测电路
2.3STC15F60S2单片机简介
15f单片机是基于89c51的内核,下面简单介绍一下宏晶系列下的89C51单片机。
AT89C51是一种低功耗/低电压、高性能的8位单片机,片内带有一个4K字节的Flash可编程可擦除制度存储器(PEROM),它采用了CMOS工艺和ATMEL公司的高密度非易失性存储器(NURAM)技术,而且其输出引脚和指令系统都与MC-51兼容。片内的FLASH存储器允许在系统内可改变程序或常规的非易失性存储器编程来编程。
2.3.1单片机的特点
4.2 单片机的特点:
(1)性价比高,开发周期短,易于产品化,
(2)集成度高,可靠性好,抗干扰性强,
(3)功能完善,接口多样,
(4)低功耗、低电压
一般电源供电电压在5~3V范围内单片机都能正常工作,供电的下限可达1~2V。
(5)总线多样,易于扩展
单片机外部的典型三总线结构,方便系统构扩展,构成各种规模的应用系统。外部总线增加了I2C及SPI等串行总线方式, 可根据需要进行并行或者串行扩展。
·与MCS-51 兼容
·4K字节可编程闪烁存储器
·寿命:1000写/擦循环
·数据保留时间:10年
·全静态工作:0Hz-24MHz
·三级程序存储器锁定
·128×8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路
2-5单片机最小系统
3. 程序介绍和实物展示
3.1硬件设计和基于控制系统的编程
下面为DH11的驱动程序,根据图2-3的时序图。
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit DATA_PIN=P1^0;
uchar iii,xianshi[2] = {0},xian1shi[4];
uchar ucharFLAG,uchartemp;
uchar shidu_shi,shidu_ge,wendu_shi,wendu_ge;
uchar ucharT_data_H,ucharT_data_L,ucharRH_data_H,ucharRH_data_L,ucharcheckdata;
uchar ucharT_data_H_temp,ucharT_data_L_temp,ucharRH_data_H_temp,ucharRH_data_L_temp,ucharcheckdata_temp;
uchar ucharcomdata;
//***************延时函数*************************************//
void delay_2us()
{
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
void delay_ms(uchar x)
{
uint j,i;
for(j = 0;j < x;j++)
{
for(i =0;i <= 853 ;i++) //853 1MS
{
_nop_(); //2us
}
}
}
//**************************dht11测试某块*************************************//
void COM(void)
{
uchar i;
for(i=0;i<8;i++)
{
ucharFLAG=2;
while((!DATA_PIN)&&ucharFLAG++);
delay_2us();delay_2us();delay_2us();delay_2us();delay_2us();
delay_2us();delay_2us();delay_2us();delay_2us();delay_2us();
delay_2us();delay_2us();delay_2us();delay_2us();delay_2us();
uchartemp=0;
if(DATA_PIN) uchartemp=1;
ucharFLAG=2;
while((DATA_PIN)&&ucharFLAG++);
if(ucharFLAG==1) break;
ucharcomdata<<=1;
ucharcomdata|=uchartemp;
}
}
void DHT11(void)
{
DATA_PIN = 0;
delay_ms(19);
DATA_PIN = 1;
delay_2us();delay_2us();delay_2us();delay_2us();delay_2us();
delay_2us();delay_2us();delay_2us();delay_2us();delay_2us();
delay_2us();delay_2us();delay_2us();delay_2us();delay_2us();
delay_2us();delay_2us();delay_2us();delay_2us();delay_2us();
if(!DATA_PIN) //如果为0就进入
{
ucharFLAG=2;
while((!DATA_PIN)&&ucharFLAG++);//等待高电平
ucharFLAG=2;
while((DATA_PIN)&&ucharFLAG++);
COM();
ucharRH_data_H_temp=ucharcomdata;
COM();
ucharRH_data_L_temp=ucharcomdata;
COM();
ucharT_data_H_temp=ucharcomdata;
COM();
ucharT_data_L_temp=ucharcomdata;
COM();
ucharcheckdata_temp=ucharcomdata;
DATA_PIN=1;
uchartemp=(ucharT_data_H_temp+ucharT_data_L_temp+ucharRH_data_H_temp+ucharRH_data_L_temp);
if(uchartemp==ucharcheckdata_temp)
{
ucharRH_data_H=ucharRH_data_H_temp;
ucharRH_data_L=ucharRH_data_L_temp;
ucharT_data_H=ucharT_data_H_temp;
ucharT_data_L=ucharT_data_L_temp;
ucharcheckdata=ucharcheckdata_temp;
}
wendu_shi=ucharT_data_H/10;
wendu_ge=ucharT_data_H%10;
shidu_shi=ucharRH_data_H/10;
shidu_ge=ucharRH_data_H%10;
}
else //没用成功读取,返回0
{
wendu_shi=0;
wendu_ge=0;
shidu_shi=0;
shidu_ge=0;
}
xianshi[0] = wendu_shi * 10 + wendu_ge;
xianshi[1] = shidu_shi * 10 + shidu_ge;
}
下面为程序主程序:
#include<15F2K60S2.C>
#include<intrins.h>
#include<DHT11.c>
#include<display.c>
uint cp1;
sbit LED = P0^3;
sbit LED1 = P0^4;
void timer0_isr() interrupt 1
{
TH0 = (65536 - 2000) / 256;
TL0 = (65536 - 2000) % 256;
cp1++;//display();
}
void delay(uint x)
{
while(x--);
}
void timer0_init() // 中断初始化程序
{
TMOD = 0X01;
TH0 = (65536 - 2000) / 256;
TL0 = (65536 - 2000) % 256;
EA = 1;
ET0 = 1;
PT0 = 1;
TR0 = 1;
}
void serial_init(void) //串口通信初始化函数
{
SCON = 0x50;
AUXR |= 0x40;
AUXR &= 0xFE;
TMOD &= 0x0F;
TL1 = 0xE0;
TH1 = 0xFE;
ET1 = 0;
TR1 = 1;
ES=1;
}
uchar i,control;
void main()
{
timer0_init(); //中断初始化
serial_init(); //串口初始化
P0 = 0X00; //拉低P0口
while(1)
{
if(cp1 >= 500) //控制每1S读取一次DHT11数据
{
cp1 = 0;
DHT11();
}
for(i=0;i <= 1;i++) //将读取到的数据通过串口发送出
{
SBUF = xianshi[i];
while(!TI);
TI = 0;
delay(10000);
}
control = SBUF; //串口接收程序
RI = 0;
if(control == 1) //模拟控制程序
{
LED = 1;
}
else if(control == 2)
{
LED = 0;
}
else if(control == 3)
{
LED1 = 1;
}
if(xianshi[1] >= 60)
LED1 = 0;
}
}
实物如图3-1
图3-1
3.2基于C#的windows窗体上位机编程
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace 远程温湿度系统
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private IPAddress severIP;
private int severPort;
private IPEndPoint severIPEndPoint;
private Socket clientSocket;
private Thread threadReceive;
delegate void showMessageCallback(string message);
int k = 5;
String s1;
String s2;
void showMessage(string message)
{
if (this.InvokeRequired) this.Invoke(new showMessageCallback(showMessage), new object[] { message });
else
{
s1 = message.Substring(0, 1); //截取地字符串的首个字符
s2 = message.Substring(1); //截取字符串首个字符后面的字符
if (s1 == "1") //如果首个字符串为1就是温度
textBox3.Text = s2;
}
if (s1 == "2") //如果首个字符串为2就是湿度
{
textBox4.Text = s2;
}
}
// else textBox3.AppendText(message /*+ "\n"*/);
}
private void ReceiveThread() //接收线程
{
if (clientSocket.Connected)
{
while (true)
{
Byte[] receiveByte = new Byte[1]; //定1字节的接收数组
clientSocket.Receive(receiveByte, receiveByte.Length, 0);//接收数据
string receiveString = receiveByte[0].ToString();//把接收到的数据转化 //为字符型
showMessage(receiveString); //显示接收到的数据
}
}
}
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
severIP = IPAddress.Parse(textBox1.Text); // 获得文本框输入的IP地址
severPort = Int32.Parse(textBox2.Text); //获得输入的端口号
severIPEndPoint = new IPEndPoint(severIP, severPort); //实例化IP地址和端口
clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //实例化Socket
clientSocket.Connect(severIPEndPoint); // 建立Socket连接
threadReceive = new Thread(new ThreadStart(ReceiveThread)); //创建接收线程
threadReceive.Start();
}
private void textBox3_TextChanged(object sender, EventArgs e)
{
}
private void textBox4_TextChanged(object sender, EventArgs e)
{
}
Byte[] sendByte = new Byte[1];
private void button3_Click(object sender, EventArgs e)
{
if (clientSocket != null && clientSocket.Connected)
{
sendByte[0] = 1;
clientSocket.Send(sendByte, sendByte.Length, 0);
}
}
private void button4_Click(object sender, EventArgs e)
{
if (clientSocket != null && clientSocket.Connected)
{
sendByte[0] = 2;
clientSocket.Send(sendByte, sendByte.Length, 0);
}
}
private void button6_Click(object sender, EventArgs e)
{
if (clientSocket != null && clientSocket.Connected)
{
sendByte[0] = 3;
clientSocket.Send(sendByte, sendByte.Length, 0);
}
}
}
}
4.0总结与展望
智能家居曾几何时只是一个遥不可及、纯粹想象中的概念,而如今,随着科技的发展、人们生活水平的提高以及一波搞过一波的智能热潮,智能家居行业已经取得了迅猛的发展并日益渗透到平常百姓的生活中。
智能家居在美国、德国、日本、新加坡、日本已经实现了广泛的运用。美国是家居智能与自动化系统与设备最大的市场,谷歌、苹果、微软而这些行业巨头更是在智能家居领域领跑全球。根据相关数据显示,2011年美国智能家居市场规模已经达到34亿美元,预计2016年这一数据将达到55亿美元。日本也是家居智能化发展较快的区域,除了家庭电器联网自动化,它还通过生物认证技术实现了自动门禁识别系统,即使家庭用户双手提着东西,站在安装于入口处的摄像机前,摄像机仅需要大约1秒钟的时间进行生物认证,如果确定为该户户主,门禁便会立即打开。其智能硬件设备可以用无孔不入来形容,拿卫生间来说,马桶垫圈上安装有智能血压计,当人坐在马桶上智能血压计便能检测血压并记录,马桶池还配有血糖检测装置,户主方便后能截流尿样并测出血糖值……
智能家居引入中国,由于诸多原因,其发展步伐相对缓慢,作为一个新生产业,目前国内正处于一个成长期的临界点,市场消费观念还未形成,创业者所推出的相关智能硬件产品一直处于争议状态。但随着智能家居市场推广普及的进一步落实,培育起消费者的使用习惯,智能家居市场的消费潜力必然是巨大的;国家政策扶持与规范引导、智慧城市建设的逐步深入与完善也为智能家居的发展注入了原动力,加之物联网技术的发展与兴盛更是给传统智能家居指明了发展变革之路,家居大智能化时代已经到来,智能家居产业前景十分广阔。我们所做的只是这冰山一角。
由于水平有限,设计中难免会有一些不合理的部分
展开阅读全文