温湿度检测
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
控制功能实现---温度湿度检测
一、用途
环境对人有着极其重要的影响,研究表明温、湿度对人思维活动有影响,最适宜的温湿度应是人的精神状态好,思维最敏捷,工作效率高。最宜人的室内温湿度是:1、冬天温度为18至25℃,湿度为30%至80%;2、夏天温度为23至28℃,湿度为30%至60%,在此范围内感到舒适的人占95%以上。因此本节我们就来探讨一下如何时时了解你家中的温湿度。
二、原理
DHT11采用单总线方式与cpu进行数据传输,与DS18B20相似,对时序的要求比较高,不同之处在于写程序的时候数据的采集必须间隔1s以上,不然采集会失败。传感器通过数字线连接Arduino。将采集到的数据通过单总线传递给arduino,经过处理就可以将数据输出。
三、器材介绍
本节中我们实验需要的器材包括:arduino板、DHT11、1602显示屏、面包板、杜邦线、电阻。我们主要来介绍一下DHT11数字传感器。
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。产品为4针单排引脚封装,连接方便。四、代码
我们首先将各个器材连接起来,其中将LCD 的RS, E, D4, D5, D6, D7 依序接到12, 11, 5, 4, 3, 2 引脚上,将LCD 的GND及RW接到GND,Vdd接到+5V,电阻1K引脚接到LCD 的Vo,剩下引脚,一支接到GND,DHT11接数字口8.arduino 5v和GND分别接到面包板上的+,-两极。
源代码如下:
#include
#include
#include
dht11 DHT;
#define DHT11_PIN 4
LiquidCrystal_I2C lcd(0x20,16,2); //设置LCD的地址为0x20,每行16个字符,共2行void setup(){
lcd.init();
lcd.backlight();
}
void loop(){
int chk;
Serial.print("DHT11, \t");
chk = DHT.read(DHT11_PIN); // READ DATA
switch (chk){
case DHTLIB_OK:
Serial.print("OK,\t");
break;
case DHTLIB_ERROR_CHECKSUM:
Serial.print("Checksum error,\t");
break;
case DHTLIB_ERROR_TIMEOUT:
Serial.print("Time out error,\t");
break;
default:
Serial.print("Unknown error,\t");
break;
}
// DISPLAT DATA
lcd.home();
lcd.print("shidu:");
lcd.print(DHT.humidity); //输出湿度数值
lcd.setCursor(0, 1);
lcd.print("wendu:"); //输出温度数值
lcd.print(DHT.temperature);
delay(1000);
}
五、应用拓展
在上面的程序中我们对DTH11一个初步的了解,并尝试使用来检测环境的温湿
度,但这显然不是一个完整的智能家居产品,因此有必要行进一步的探究,我们可以添加一个继电器模块,通过与空调连接,当温湿度超过我们规定的范围的时候,自动启动空调来调节,在控制家电这块中我们讨论了这一方法,所以在本节中就不再进行探案。我们也可以通过与网络连接,可以随时随地了解室内情况,在下面的例子中我们就来探讨这个情况。
接下来的例子中,我们将温湿度传感器与网络连接起来,将DHT11传感器探测的温度与湿度数据传送到网络上,我们可以很方便的通过网络查看当前家里的温度与湿度,使用器材中我们添加了一个网络模块,这里是W5100。
我们首先将w5100插到arduino板上,然后将DTH11接到w5100的接口上。
示例代码如下:
#include
#include
#include
dht11DHT;
#define DHT11_PIN13 //设置传感器端口
byte mac[]={
0xDE,0xAD,0xBE,0xEF,0xFE,0xED
}; //设置w5100模块的MAC地址
IPAddress ip(192,168,1,177); //设置w5100模块的IP地址
EthernetServer server(80);
void setup(){
//打开串口通信
Serial.begin(9600);
while(!Serial){
;//等待连接串口,只有Leonardo需要
}
//start the Ethernet connection and the server:
Ethernet.begin(mac,ip);
server.begin();
Serial.print("server is at");
Serial.println(Ethernet.localIP());
}
void loop(){
//监听客户端
EthernetClient client=server.available();
if(client){
Serial.println("new client");
//an http request ends with a blank line
boolean currentLineIsBlank=true;