回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

智能温度检测仪 简单

头像 风隐 2022.04.29 1291 2

义务教育阶段八年级物理《物态变化》一章温度计的测温原理和使用是教学的一个重点。学生在学习了温度计知识后,会用温度计测液体温度。温度计在生活里很常见,学生从小就接触到并会使用,教师教学起来总是缺少新鲜感。Arduino主控板匹配DHT20温湿度传感器,可以制作智能温度检测仪做为教材的创新实验。

project-image

一、DHT20简介:

DHT20是DHT11的全新升级温湿度传感器模块,内配置一颗全新设计的ASIC专用芯片、经过改进的MEMS半导体电容式湿度传感元件和一个标准的温度传感元件,在测量精度、供电电压、测量范围、响应时间、稳定性等方面的性能参数相交DHT11都有大幅提升。

project-image

1、DHT20参数:

电路板尺寸:22mm*33mm

安装孔尺寸:内径3.1mm/外径6mm

工作电压: 3.3~5.5V DC

工作电流:

project-image

2、DHT20接口

D I2C数据线SDA

C I2C时钟线SCL

- GND电源负极

+ 电源正极

二、智能温湿度检测仪思路:

1、按下按键,DHT20检测一次温度、湿度;

2、I2C1602液晶屏显示温度、湿度;

3、语音合成模块说出温度、湿度;

4、I2C1602液晶屏清除显示。

project-image

三、环境

1、硬件:

Arduino UNO主控板、I2C温湿度传感器DHT20、I2C-1602显示屏、中英文语音合成模块、按键。

材料清单

  • DFRduino UNO R3(含USB线|传感器扩展板) X1 链接
  • Gravity:I2C温湿度传感器-DHT20 X1 链接
  • Gravity:中英文语音合成模块V2.0 X1 链接
  • Gravity: I2C LCD1602 液晶显示屏 (蓝底) X1 链接
  • Gravity: 数字大按钮模块 黄色 X1 链接

2、软件:

①操作系统:基于windows 7操作系统;

②软件:Mind+最新版本,下载地址:https://mindplus.cc/

project-image
project-image

四、程序编写

1、添加Arduino UNO主控板、DHT20、语音合成模块、1602液晶显示屏。DHT20和语音合成模块Mind+扩展卡没有,要在用户库搜索添加。Mind+的最新版本为V1.7.1 RC2.0,能够搜到DHT20,版本过低搜不到DHT20。

project-image
project-image
project-image
project-image

2、拖曳积木编写程序

project-image

代码第二行为DHT20温湿度传感器初始化,第三行为I2C1602液晶屏初始化,第四、五行为语音合成模块初始化。代码第7行作用检测按键是否按下,按下时检测一次温度。代码第8行为按键去抖,第9、10、11电脑是串口显示温度和湿度数据。代码第12、13行液晶显示温度、湿度数据,第14行作用是语音合成模块说出温度和湿度数据,第16行液晶屏清屏。

代码
Arduino C代码:
/*!
 * MindPlus
 * uno
 *
 */
#include<DFRobot_DHT20.h>
#include<DFRobot_SpeechSynthesis.h>
#include <DFRobot_LiquidCrystal_I2C.h>
// 创建对象
DFRobot_DHT20               dht20;
DFRobot_LiquidCrystal_I2C   lcd1602;
DFRobot_SpeechSynthesis_I2C sstts;


// 主程序开始
void setup() {
	Serial.begin(9600);
	sstts.begin();
	sstts.setVolume(8);
	sstts.setSpeed(5);
	sstts.setSoundType(sstts.FEMALE1);
	sstts.setTone(5);
	// I2C温湿度传感器DHT20初始化
	while(dht20.begin()){delay(1000);}
	// 1602液晶屏初始化
	lcd1602.begin(0x3E);
}
void loop() {
	// 按下按键时开始检测温度、湿度
	if (digitalRead(2)) {
		delay(200);
		// 串口显示温度和湿度
		Serial.println((dht20.getTemperature()));
		Serial.println(",");
		Serial.println((dht20.getHumidity()*100));
		// 1602液晶屏显示温度
		lcd1602.printLine(uint32_t(1), (String((String((dht20.getTemperature())) + String((String("     ") + String((String(char(0xdf)))))))) + String("C")));
		lcd1602.printLine(uint32_t(2), (String((String((dht20.getHumidity()*100)) + String("    "))) + String("%RH")));
		sstts.speak((String("温度") + String((String((String((dht20.getTemperature())) + String("摄氏度"))) + String((String("相对湿度百分之") + String((dht20.getHumidity()*100))))))));
		delay(3000);
		lcd1602.clear();
	}
}

五、接线图

project-image

六、程序测试

按下按键时,DHT20迅速测出温度和湿度,非常灵敏。电脑串口、液晶屏显示温度和湿度,语音合成模块说出温度和湿度数据。不足之处是电脑串口、液晶屏、语音合成模块三者的数据不同步,有微小差别。下图串口显示温度20.78℃、湿度51.12%RT,液晶显示温度20.94℃,湿度51.17%RT,语音合成模块说出温度20.95℃,湿度51.18%RT。造成三者数据不同步的原因是按下按键,硬件模块有3秒钟的工作时间,DHT20在持续测量,程序顺序执行三者显示有延时,造成数据有微弱变化。

project-image
project-image

DHT20编程有一个贴心的设计,语句不需要I2C地址。如下为扫描出的DHT20地址,扫描出的地址为0x38。实际编程时DHT20只需拖曳积木块。

project-image
project-image

扫描出的I2C地址为0x38.

project-image

评论

user-avatar
  • 三春牛-创客

    三春牛-创客2023.08.23

    赞赞赞

    0
    • 三春牛-创客

      三春牛-创客2023.08.23

      厉害厉害

      0