所有分类
主题 主题
平台 平台
我的工作台
userHead
注册时间 [[userInfo.create_time]]
创造力 [[userInfo.creativity]]
[[userInfo.remark]]
[[d.project_title]]
articleThumb
[[d.material_name]]
timelineThumb
进入工作台
折叠
所有分类 我的工作台
展开

智能温度检测仪

风隐 风隐 2022-04-30 08:59:48

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

 

projectImage

一、DHT20简介:

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

projectImage

1、DHT20参数:

电路板尺寸:22mm*33mm

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

工作电压: 3.3~5.5V DC

工作电流:

projectImage

2、DHT20接口

D     I2C数据线SDA

C     I2C时钟线SCL

-      GND电源负极

+     电源正极

 

               

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

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

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

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

4、I2C1602液晶屏清除显示。

projectImage

三、环境

1、硬件:

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

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

2、软件:

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

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

projectImage
projectImage

四、程序编写

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

projectImage
projectImage
projectImage
projectImage

2、拖曳积木编写程序

projectImage

       代码第二行为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();
	}
}
	                    				

五、接线图

projectImage

六、程序测试

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

projectImage
projectImage

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

projectImage
projectImage

扫描出的I2C地址为0x38.

projectImage
Makelog作者原创文章,未经授权禁止转载。
3
0
评论
[[c.user_name]] [[c.create_time]]
[[c.parent_comment.count]]
|
[[c.comment_content]]