作者: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、功能
程序可以通过串口显示当前环境温湿度。
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、运行结果
即当前环境湿度为51%左右,温度为15℃
五、用途
1、节水农业灌溉
2、温室大棚等等
六、拓展
通过一番努力,单片机已经终于可以正常工作获取温湿度信息了,可是单单在电脑上显示一下怎么称得上智能呢?而且又不可能天天把电脑打开,难道作者是在挂羊头卖狗肉?要是不是,那么问题来了,数据可不可以在手机上显示呢?可以在手机上显示固然很方便,可是如果现在我不想知道,我可不可以控制单片机不收集数据呢?
答案当然是可以,请关注下一篇《DIY智能温湿度计(下)——APP控制温湿度计》
参考来源:
========
3.奥松机器人官网
推荐阅读
定期更新,更多AIoT相关技术知识请关注动手学AIoT专栏。