DIY智能温湿度计(上)——数据获取

最近天气越来越冷了,今早起床的时候,就想要是不出门又不用打开天气预报就知道外面现在的温湿度就好了,于是拿起手中的Arduino板,开始了一场DIY之旅。

一、工具

1、Arduino UNO

DIY智能温湿度计(上)——数据获取_第1张图片
图片来自网络

2、DHT11温湿度传感器

DHT11数字温湿度传感器模块,含有已校准数字信号输出的温湿度复合传感器,每个DHT11传感器都在极为精确的湿度校验室中进行校准,校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。

DIY智能温湿度计(上)——数据获取_第2张图片
图片来自网络

二、参数(数据来自奥松机器人官网)

1、DHT11参数

工作电压:3.3V~5V

数据类型:数字输出

尺寸:35mm x 25mm

工作温度:-40~85℃

引脚定义

S:信号接口

+:电源正极

-:电源地

2、名词解释

湿度很久以前就与生活存在着密切的关系,但用数量来进行表示较为困难。日常生活中最常用的表示湿度的物理量是空气的相对湿度。用%RH表示。在物理量的导出上相对湿度与温度有着密切的关系。一定体积的密闭气体,其温度越高相对湿度越低,温度越低,其相对湿度越高。其中涉及到复杂的热力工程学知识。

三、连线

dht11的S、+、-接口分别接Arduino的引脚4(可以根据自己的需要选择其他引脚)、5V、GND,然后通过专用数据线将arduino与电脑连接在一起打开Arduino IDE开始编程

DIY智能温湿度计(上)——数据获取_第3张图片
接线(OUT=S)

四、编程

1、功能

程序可以通过串口显示当前环境温湿度。

2、代码

//初始化

#include

dht DHT;

#define DHT11_PIN 4//定义dht11信号线S为引脚4

void setup()

{

Serial.begin(9600);//初始化端口

//在串口输出湿度和温度的单位分别是%和C(摄氏度)

Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)");

}

//循环

void loop()

{

// 表明程序已经开始运行

Serial.print("DHT11, \t");

int chk = DHT.read11(DHT11_PIN);//读取传感器获取的数据

switch (chk)//检验传感器此时状态

{

  //如果反馈0,表明传感器正常工作

case 0:  Serial.print("OK,\t"); break;

 //如果反馈-1,表明传感器校验和出错

case -1: Serial.print("Checksum error,\t"); break;

//如果反馈-2,表明获取传感器数据超时

case -2: Serial.print("Time out error,\t"); break;

//如果其它,表明传感器发生未知错误

default: Serial.print("Unknown error,\t"); break;

}

//通过串口分别显示测量湿度、温度值

Serial.print(DHT.humidity,1);

Serial.print(",\t");

Serial.println(DHT.temperature,1);

delay(1000);//延时1s

}

3、运行结果


DIY智能温湿度计(上)——数据获取_第4张图片
result

即当前环境湿度为51%左右,温度为15C

五、用途

1、节水农业灌溉

2、温室大棚等等

六、拓展

通过一番努力,单片机已经终于可以正常工作获取温湿度信息了,可是单单在电脑上显示一下怎么称得上智能呢?而且又不可能天天把电脑打开,难道作者是在挂羊头卖狗肉?要是不是,那么问题来了,数据可不可以在手机上显示呢?可以在手机上显示固然很方便,可是如果现在我不想知道,我可不可以控制单片机不收集数据呢?

答案当然是可以,请关注下一篇《DIY智能温湿度计(下)——APP控制温湿度计》


参考来源:

1.Arduino官方网站

2.Arduino中文社区

3.奥松机器人官网

你可能感兴趣的:(DIY智能温湿度计(上)——数据获取)