mlbo · 2020年04月30日

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

作者:iotsharer
首发:Arduino通讯篇

一、工具

1、Arduino UNO

2、DHT11温湿度传感器

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

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

====================

1、DHT11参数

工作电压:3.3V~5V

数据类型:数字输出

尺寸:35mm x 25mm

工作温度:-40~85℃

引脚定义

S:信号接口

+:电源正极

-:电源地

2、名词解释

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

三、连线

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

1.jpg

四、编程

1、功能

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

2、代码

//初始化

include<dht.h>

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、运行结果

2.png

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

五、用途

1、节水农业灌溉

2、温室大棚等等

六、拓展

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

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

参考来源:

========

1.Arduino官方网站

2.Arduino中文社区

3.奥松机器人官网

推荐阅读

定期更新,更多AIoT相关技术知识请关注动手学AIoT专栏。
推荐阅读
关注数
1215
内容数
19
关于AIoT相关的技术文章以及相关资源。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息