认识DHT11温湿度传感器并制作温度报警器

GIF.gif

  • Arduino UNO

    图片.png

  • Arduino IDE开发环境

    图片.png

  • Arduino DHT11温湿度传感器

    图片.png

一、认识Arduino的DHT11温度湿度传感器

DHT传感器由电容式湿度传感器和热敏电阻两部分组成。除此之外,模块内部还有一些模拟信号到数字信号的转换,将温度湿度以数字信号的方式输出。

DHT11湿度温度传感器特性如下:

  • 成本较低,更适合DIY
  • 供电3.3-5V
  • 2.5ma最大电流
  • 20-80%读数精度在5%之内
  • 0-50°C温度读数精度为±2°C
  • 频率不超过1赫兹,现场每一次集中
  • 模块尺寸较小,15.5mm x 12mm x 5.5mm

DHT11模块有三个引脚加一个LED

  • VCC :连接供电电源的主板
  • DAT :将数字信号输出
  • GND :连接供电电源的规格
  • 电源指示:模块正常供电时会亮

二、编写程序获取温湿度传感器的数值

  • 连接Arudino UNO与DHT11温度湿度传感器

    Arduino UNODHT11湿度温度传感器
    GNDGND
    5VVCC
    D8DAT

    图片.png

  • 编写程序获取DHT11温湿度传感器的数字信号

    • 下载DHT11的库文件

    • 解压文件并添加至arudino安装路径下的库

      图片.png

    • 导入DHT11库文件

      #include <dht11.h>  
        
      dht11 DHT11;  
      

    • 定义指标

       #define PIN_DHT11 8 
       float temp,humi;
      
    • setup()初始化。

      这里大家可能会有疑问,但是为什么要获取DHT11模块的数字信号,不用初始化设定该引脚为输入模式呢?

      本质上是需要的,但是已经在库文件中定义了设置,所以这里不一定重复设置

      void setup() {
        Serial.begin(9600);  
        temp=0;
        humi=0;
      }
      
      
    • Loop()写入主体函数

      void loop() {
        DHT11.read(PIN_DHT11);  
        humi = (float)DHT11.humidity;
        temp = (float)DHT11.temperature;
        Serial.println(humi, 2);  
        Serial.println(temp, 2);  
      }
      
      
  • 连接Arduino UNO至电脑

  • 编译并上传程序至Arduino UNO

  • 测试效果

    • 接上USB运行Arduino程序的时候,可以看到DHT11模块的LED是亮着的,说明模块正常供电

    • 向模块哈气,以增加温度可以与湿度测试看数据的变化输出

      GIF.gif

三、制作温度报警器

  • 基于步骤二,连接LED与Arduino UNO

    引领Arduino UNO
    短脚GND
    长脚D10

    图片.png

  • 步骤基础二的程序整合上LED程序

    分析需求,这里我们仅使用DHT11提供的温度

    • 当温度大于23的时候,点亮LED
    • 当温度小于23的时候,马上LED

    定义指标

    #define PIN_DHT11 8 
    float temp,humi;
    

    setup() 初始化

    void setup() {
      Serial.begin(9600);  
      pinMode(10,OUTPUT);
      temp=0;
      humi=0;
    }
    

    Loop()函数主体

    void loop() {
      DHT11.read(PIN_DHT11);  
      Serial.print("湿度 (%): ");  
      humi = (float)DHT11.humidity;
      Serial.println(humi, 2);  
      Serial.print("温度 (oC): ");  
      temp = (float)DHT11.temperature;
      Serial.println(temp, 2);  
      if(temp > 23)
        digitalWrite(10,HIGH);
      else
        digitalWrite(10,LOW);
      delay(500); 
    }
    

    整合全部程序:

    #include <dht11.h>  
      
    dht11 DHT11;  
    #define PIN_DHT11 8 
    float temp,humi;
    void setup()  
    {  
      Serial.begin(9600);  
      pinMode(10,OUTPUT);
      temp=0;
      humi=0;
    }  
      
    void loop()  
    {  
      DHT11.read(PIN_DHT11);  
      Serial.print("湿度(%): ");  
      humi = (float)DHT11.humidity;
      Serial.println(humi, 2);  
      Serial.print("温度(oC): ");  
      temp = (float)DHT11.temperature;
      Serial.println(temp, 2);  
      if(temp > 23)
        digitalWrite(10,HIGH);
      else
        digitalWrite(10,LOW);
      delay(500);  
    }  
    
  • 编译并上传程序测试效果

    GIF.gif

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值