义务教育阶段八年级物理《物态变化》一章温度计的测温原理和使用是教学的一个重点。学生在学习了温度计知识后,会用温度计测液体温度。温度计在生活里很常见,学生从小就接触到并会使用,教师教学起来总是缺少新鲜感。Arduino主控板匹配DHT20温湿度传感器,可以制作智能温度检测仪做为教材的创新实验。
一、DHT20简介:
DHT20是DHT11的全新升级温湿度传感器模块,内配置一颗全新设计的ASIC专用芯片、经过改进的MEMS半导体电容式湿度传感元件和一个标准的温度传感元件,在测量精度、供电电压、测量范围、响应时间、稳定性等方面的性能参数相交DHT11都有大幅提升。
1、DHT20参数:
电路板尺寸:22mm*33mm
安装孔尺寸:内径3.1mm/外径6mm
工作电压: 3.3~5.5V DC
工作电流:
2、DHT20接口
D I2C数据线SDA
C I2C时钟线SCL
- GND电源负极
+ 电源正极
二、智能温湿度检测仪思路:
1、按下按键,DHT20检测一次温度、湿度;
2、I2C1602液晶屏显示温度、湿度;
3、语音合成模块说出温度、湿度;
4、I2C1602液晶屏清除显示。
三、环境
1、硬件:
Arduino UNO主控板、I2C温湿度传感器DHT20、I2C-1602显示屏、中英文语音合成模块、按键。
四、程序编写
1、添加Arduino UNO主控板、DHT20、语音合成模块、1602液晶显示屏。DHT20和语音合成模块Mind+扩展卡没有,要在用户库搜索添加。Mind+的最新版本为V1.7.1 RC2.0,能够搜到DHT20,版本过低搜不到DHT20。
2、拖曳积木编写程序
代码第二行为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();
}
}
五、接线图
六、程序测试
按下按键时,DHT20迅速测出温度和湿度,非常灵敏。电脑串口、液晶屏显示温度和湿度,语音合成模块说出温度和湿度数据。不足之处是电脑串口、液晶屏、语音合成模块三者的数据不同步,有微小差别。下图串口显示温度20.78℃、湿度51.12%RT,液晶显示温度20.94℃,湿度51.17%RT,语音合成模块说出温度20.95℃,湿度51.18%RT。造成三者数据不同步的原因是按下按键,硬件模块有3秒钟的工作时间,DHT20在持续测量,程序顺序执行三者显示有延时,造成数据有微弱变化。
DHT20编程有一个贴心的设计,语句不需要I2C地址。如下为扫描出的DHT20地址,扫描出的地址为0x38。实际编程时DHT20只需拖曳积木块。
扫描出的I2C地址为0x38.
三春牛-创客2023.08.23
赞赞赞
三春牛-创客2023.08.23
厉害厉害