如何将DHT11湿度和温度传感器与STM32F103C8T6连接
干货下载:添加微信好友“5834434”(必须备注“单片机:学校/公司+研究方向”,否则无法通过验证),获取海量单片机教程及其他学习资料!合作或投稿请发邮件到:rebaby@qq.com
在本教程中,我将介绍如何将DHT11湿度和温度传感器与基于STM32F103C8T6 MCU的STM32 Blue Pill Board接口。DHT11传感器的值由STM32读取,并显示在I2C LCD显示屏上。
介绍
传感器是很小的设备,可以弥合原始模拟世界与MCU的数字世界之间的鸿沟。传感器可以非常简单,例如非常著名的LM35温度传感器,也可以是一些复杂的数学单元,例如MPU6050陀螺仪和加速度计组合传感器。
简单或复杂,传感器是许多消费,汽车,机器人和工业应用中的关键部分,如果不集成适当的传感器就无法完成某些应用。
让我们从工业应用程序扩展到日常项目和业余爱好者。气象站是一个非常普遍且受欢迎的项目,无论是物联网应用还是常规字符LCD应用。
此类气象站项目的关键组成部分是能够检测与天气相关的参数(如温度,湿度等)。DHT11湿度和温度传感器就是这些类型项目的设备。
我已经在一个名为“ Arduino上的DHT11湿度传感器?”的Arduino项目中使用了DHT11传感器(第一条推文)。在该项目中,我已将DHT11传感器与Arduino接口,计算了温度和湿度值,并将其显示在16×2 LCD显示器上。我在这里也会做同样的事情,但是这次我将把DHT11湿度和温度传感器连接到STM32F103C8T6 MCU的接口上。
DHT11温湿度传感器
DHT11及其兄弟DHT22是便宜但高度可靠的湿度和温度传感器。DHT22的范围和精度略优于DHT11,但这种扩展范围和更严格的精度是有代价的。除此之外,两个传感器的外观相似,且引脚和连接性相同。因此,从现在开始,我们将专注于该项目的传感器,即DHT11。
它是一种超低成本传感器,具有电阻型湿度测量组件,NTC型温度测量组件和8位微控制器,可将两个测量组件的数据转换为数字值。
在Arduino – DHT11教程中,我谈到了传感器的工作原理以及如何解释来自串行的数据。我建议您参考该项目以获取有关此传感器的更多信息。
另外,在该项目中,我没有为DHT11湿度和温度传感器使用任何专用的库,而是尝试了自己的代码。仅作更改,我将使用Adafruit开发的DHT库。
将DHT11湿度和温度传感器与STM32F103C8T6连接
在继续进行操作之前,我必须提醒您DHT11传感器数据表中的某些内容。它表示,必须借助5KΩ电阻将DHT11传感器与微控制器(在这种情况下为STM32)之间的单条数据线拉高。
因此,在购买DHT11传感器时,请尝试购买包含所述上拉电阻器(甚至是一些通电LED)的模块。由于不需要任何其他组件,因此使DHT11湿度和温度传感器与STM32F103C8T6的连接变得更加容易。
要记住的另一件事是,我使用了I2C LCD,即基于PCF8574模块的I2C GPIO扩展器模块,具有良好的旧16×2 LCD显示屏。我已经在专用项目“将I2C LCD与STM32F103C8T6接口”中实现了相同的功能。有关更多信息,请参考该项目。
所需组件
基于STM32F103C8T6 MCU的STM32蓝色药丸板
DHT11温湿度传感器
16×2液晶显示器
PCF8574 I2C液晶模块
5KΩ电阻器(可选,如果DHT11模块上有电阻,则不需要)
连接线
USB转UART转换器(仅当通过UART编程时才需要)
电路图
下图显示了将DHT11湿度和温度传感器与基于STM32F103C8T6 MCU的STM32蓝色药丸板接口的电路图。
?
连接说明
首先,将DHT11 Sensor的VCC和GND引脚分别连接到+ 5V和GND。然后将传感器的数据引脚连接到STM32板的引脚PA1。
来到LCD时,将PCF8574 I2C LCD模块插入LCD的背面,并将PCF8574模块的SDA和SCL引脚分别连接到STM32板的PB7和PB6引脚。同样,将I2C LCD模块的VCC和GND引脚连接到+ 5V和GND。
编程STM32以连接DHT11
在继续之前,请确保您已经确定了I2C LCD教程中提到的PCF8574模块的从站地址。您可以将以下代码用于相同的代码。
#include
void setup()
{
Wire.begin();
Serial.begin(9600);
while (!Serial);
}
void loop()
{
byte error, address;
int I2CDevices;
Serial.println(“Scanning for I2C Devices…”);
I2CDevices = 0;
for (address = 1; address < 127; address++ )
{
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print(“I2C device found at address 0x”);
if (address < 16)
Serial.print(“0″);
Serial.print(address, HEX);
Serial.println(” !”);
I2CDevices++;
}
else if (error == 4)
{
Serial.print(“Unknown error at address 0x”);
if (address < 16)
Serial.print(“0”);
Serial.println(address, HEX);
}
}
if (I2CDevices == 0)
Serial.println(“No I2C devices found\n”);
else
Serial.println(“****\n”);
delay(5000);
}
现在,未来的实际程序,首先从下载DHT库这个链接。解压缩zip文件并将其内容复制到本地Arduino安装的library文件夹中。该路径通常是“ C:\ Program Files(x86)\ Arduino \ libraries”。
然后,在程序中,将DHT的数据引脚定义为PA1,并将DHT传感器的类型定义为DHT11或DHT22。通过提及从机地址,列数和行数来声明具有LiquidCrystal_I2C库功能的I2C LCD。现在,您可以使用各自的“开始”功能初始化LCD和DHT11传感器。
现在,获取两个浮点值,并从传感器获取湿度和温度读数。最后,在LCD上打印这些值。
源代码
#include
#include
#include
#define DHTPIN PA1
#define DHTTYPE DHT11
LiquidCrystal_I2C lcd(0x27, 16, 2);
DHT dht(DHTPIN, DHTTYPE);
byte degree_symbol[8] =
{
0b00111,
0b00101,
0b00111,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000
};
void setup()
{
lcd.begin();
dht.begin();
lcd.backlight();
lcd.setCursor(0,0);
lcd.print(“Electronics Hub”);
lcd.setCursor(0,1);
lcd.print(“DHT11 with STM32”);
delay(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“Temp = “);
lcd.setCursor(0,1);
lcd.print(“Humid = “);
lcd.createChar(0, degree_symbol);
lcd.setCursor(12,0);
lcd.write(0);
lcd.print(“C”);
lcd.setCursor(14,1);
lcd.print(“%”);
}
void loop()
{
float hum = dht.readHumidity();
float tem = dht.readTemperature();
lcd.setCursor(7,0);
lcd.print(tem);
lcd.setCursor(8,1);
lcd.print(hum);
}
结论
此处实现了一个简单的项目,用以演示DHT11湿度和温度传感器与基于STM32F103C8T6 MCU的STM32 Blue Pill Board的接口。
原文:https://www.electronicshub.org/interfacing-dht11-humidity-and-temperature-sensor-with-stm32f103c8t6/
干货下载:添加微信好友“5834434”(必须备注“单片机:学校/公司+研究方向”,否则无法通过验证),获取海量单片机教程及其他学习资料,合作/投稿请发邮件到rebaby@qq.com!
热门文章推荐:直接点击进入
001:《单片机初学者必看》
002:《周立功写给学单片机的年轻人的话》
003:《牛人谈:软件与硬件的入门难度与精通时间跨度》
004:《学习51单片机有感;学习用书推荐;必写的几个程序》
005:《几种使用过的单片机比较》
006:《ARM+LINUX学习路线(学习顺序,知识点及书籍推荐)》
007:《ARM/DSP/FPGA/CPLD/SOPC/SOC区别和联系》
008:《趣味电子制作:艺术家手中的食品发电-电子diy》
009:《我的经历: 从一名产线工人到单片机工程师》
010:《硬件工程师要学习的东西》
011:《学习51单片机的感悟:一通则百通》
012:《各种传感器工作原理动态图,这也太全了吧!》
013:《小心!这几项都符合说明你的手机已被监控》
014:《这小东西其实是个发电机?自己动手做个就不用怕停电了》
015:《国外的DIY网站和电子类的网站收集(各种奇怪高能项目)》
016:《电子工程师们都在用哪些APP?》
017:《一张图看懂程序员的职业规划》
018:《10个轻松上手制作的Arduino项目》
019:《手机在充电时到底是先插手机还先插电源?》
020:《学习模电的真谛》
021:《男生必学的撩妹搭讪的7个机械原理实验》