DHT顾名思义,11是一种温湿度传感器,用于测量特定环境或封闭空间中的大气温湿度。该传感器通常用于监测许多应用程序中的环境参数,如农业、食品工业、医院、汽车和气象站。
传感器可以测量0°C到50°C精度为1的温度°C。通常用于控制热通风系统、恒温室等环境,监测温度,采取纠正措施。
湿度测量范围为20%至90%,精度为1%。湿度是指空气中的水蒸气含量。在许多情况下,湿度值必须保持在控制范围内。例如,在茶粉的制造和储存过程中,必须保持室内所需的湿度,否则会影响茶叶的味道和气味。客厅的湿度水平也应保持在舒适范围内,理想的舒适湿度值在50%至65%之间。
今天,我们学习如何流行 DHT11传感器与 STM32检测环境温度和湿度。我们以前已经学会了STM32 以及如何使用板的基本知识 Arduino IDE 对它编程。
DHT11温湿度传感器
如前所述,DHT11传感器用于测量温度和湿度。该传感器配有专用内置传感器NTC测量温度。它有一个8位微控制器,通过单线协议输出温度和湿度值作为串行数据。传感器只有一个数据管脚,可以读取温度和湿度值,从而节省微控制器端的管脚。传感器也经过工厂校准,因此很容易与其他微控制器连接。
§ 工作电压:3.5V 至 5.5V
§ 工作电流:0.3mA(测量)60uA(待机)
§ 输出:串行数据
§ 温度范围:0°C 至 50°C
§ 湿度范围:20% 至 90%
§ 分辨率:温湿度均为 16 位
§ 准确度:±1°C 和 ±1%
电路连接
将DHT11 与 STM32连接的电路图如下所示。使用电路 Fritzing 绘制软件。
如你所见,我们用I2C 接口模块将 LCD 模块连接到 STM32.这使得连接变得简单,并进一步减少了控制器端引脚的数量。如下图所示
同样,STM32F103C8 和 DHT11 传感器之间的电路连接如下表所示。
电脑的整个电路 USB 端口供电。现在我们的硬件已经准备好了,让我们进入编码部分。
配置Arduino IDE
从 DHT11 传感器中读取温度和湿度值并将其显示在 LCD 在模块上LCD显示器通过I2C因此,我们必须首先找到适配器I2C地址来与LCD通信。
1.在Arduino IDE安装STM32开发包
2. 提供扫描连接的示例 I2C 设备程序(在 Arduino IDE 中:文件->示例->Wire->I2C scanner_wire)。如下所示。
3.上传代码 STM32F103C8.打开串行监视器。STM32F103C8上电开机。
在串口监视器中,我们可以看到,I2C的地址为“0x27”。
安装相关库文件
导入I2C LCD库,以便STM32F103C8通过 I2C 与 LCD 通信显示器。
安装好DHT包好后,就可以开始编程了。
程序
#include <Wire.h> // I2C 库 #include <LiquidCrystal_I2C.h> // I2C LCD 库 #include <DHT.h> //DHT库 #define DHTPIN PA1 //定义与STM32F103C8的PA1相连的DHT11(OUT引脚)引脚名称 #define DHTTYPE DHT11 LiquidCrystal_I2C lcd(0x27, 16, 2); //初始化lcd,I2C地址0x27,16*2 类型LCD DHT dht(DHTPIN, DHTTYPE); // 初始化dht,stm连接DHT的引脚,类型为DHT11 void setup() { lcd.begin(); dht.begin(); //开始接收温度和湿度值。 lcd.backlight(); lcd.setCursor(0,0); lcd.print("Hello World"); lcd.setCursor(0,1); lcd.print("DHT11 with STM32"); delay(3000); lcd.clear(); } void loop() { float h = dht.readHumidity(); //获得湿度值 float t = dht.readTemperature(); //获得温度值 lcd.setCursor(0,0); lcd.print("Temp: "); lcd.print(t); lcd.print(" C"); lcd.setCursor(0,1); lcd.print("Humid: "); lcd.print(h); lcd.print(" %"); }