0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何将DHT11湿度和温度传感器与基于STM32F103C8T6 MCU的STM32 Blue Pill Board接口

单片机 来源:单片机 2020-05-14 10:47 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在本教程中,我将介绍如何将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模块上有电阻,则不需要)

连接线

USBUART转换器(仅当通过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 ”);
else
Serial.println(“**** ”);

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的接口。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2577

    文章

    55483

    浏览量

    793835
  • 温度传感器
    +关注

    关注

    48

    文章

    3253

    浏览量

    163361
  • STM32
    +关注

    关注

    2313

    文章

    11191

    浏览量

    374582

原文标题:如何将DHT11湿度和温度传感器与STM32F103C8T6连接

文章出处:【微信号:aidanpianji,微信公众号:单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【RA-Eco-RA4M2开发板评测】+ OLED显示DHT11数据

    的温湿度复合传感器,内部由一个 8 位单片机控制一个电阻式感湿元件和一个 NTC 测温元件。DHT11 虽然也是采用单总线协议,但是该协议与 DS18B20 的单总线协议稍微有些不同之
    发表于 03-29 19:49

    使用STM32F103ZET6采集DHT11湿度串口显示

    DHT11是一款数字温湿度传感器DHT11是一款含有已校准数字信号输出的温湿度复合传感器。它应
    的头像 发表于 03-18 17:06 3583次阅读
    使用<b class='flag-5'>STM32F103ZET6</b>采集<b class='flag-5'>DHT11</b>温<b class='flag-5'>湿度</b>串口显示

    【CW32F030CxTx StartKit测评】驱动OLED和DHT11

    ? 已经实现了OLED的驱动,这里测试一下如何读取温湿度传感器DHT11。具体怎么读取温湿度这里就不再赘述了。 看看如何在程序里面实现吧。 首选是要定义使用的
    发表于 01-30 07:55

    【瑞萨FPB-RA6E2试用】【瑞萨FPB-RA6E2】Zephyr-驱动-DHT11-温湿度传感器及设备树理解

    DHT11DHT22)周期性地读取环境温度和相对湿度数据。该示例采用轮询(polling)方式获取传感器数据。 主要功能 初始化
    发表于 01-13 14:54

    【瑞萨RA6E2地奇星开发板试用】串口通信+DHT11测量温湿度

    实现效果如上视频。 首先先要了解DHT11湿度传感器的原理。 DHT11湿度传感器
    发表于 12-26 18:23

    【瑞萨RA6E2地奇星开发板试用】DHT11 测量温湿度

    使用瑞萨 RA6E2 微控制,实现 DHT11湿度传感器的数据采集,并通过 I2C
    发表于 12-19 18:50

    CherryUSB +STM32F103C8 example usb cdc device不识别是怎么回事?

    stm32f103c8t6 配置cdc,使用cubeMX 配置生成xxx_msp.c 为什么 放开 CONFIG_USBDEV_SETUP_LOG_PRINT 发现 usb 中断 一直未能进入 ____usbd_event_ep0_setup_complete_hand
    发表于 09-10 07:03

    【RA-Eco-RA6M4开发板评测】DHT11湿度传感器获取+OLED 屏幕显示

    图形引擎。RA6T1 系列器件带有用于电机控制的增强型外 设,如高分辨率 PWM 定时或高级模拟模块。 RA8 系列 – 更高性能、人机界面、物联网和边缘计算 【温湿度模块】
    发表于 08-26 00:10

    零知开源——STM32F407VET6驱动SHT41温湿度传感器完整教程

    摘要:本项目基于STM32F407VET6零知增强板驱动SHT41高精度温湿度传感器,实现±0.2℃温度精度和±1.8%RH湿度精度的数据采
    的头像 发表于 07-09 18:53 1874次阅读
    零知开源——<b class='flag-5'>STM32F407VET6</b>驱动SHT41温<b class='flag-5'>湿度</b><b class='flag-5'>传感器</b>完整教程

    常见的温湿度传感器类型?

    DHT11湿度传感器 DHT11是一种常见的数字温湿度传感器,具有价格低廉、简单易用的优点
    发表于 06-24 09:24

    【RA4L1-SENSOR】DHT11测温湿度OLED显示

    为I2C接口,开漏输出 P107 设置为 DHT11 单总线接口 OLED 驱动代码如下: void OLED_SSD1306_Init(void) { u
    发表于 06-12 11:02

    STM32F103C6T6 DCAC逆变器原理图

    STM32F103C6T6 DCAC逆变器原理图
    发表于 05-19 17:48 2次下载

    stm32f103c8t6主控芯片无人机原理图

    stm32f103c8t6主控芯片无人机原理图
    发表于 04-29 17:02 3次下载

    STM32F103C8T6无法选择外部晶振怎么解决?

    我从网上购入了STM32F103C8T6的核心板,板上有外部晶振。但我使用STM32CubeMX生成项目时,却无法选择外部晶振(如下图)。请问要在哪里设置才能选择外部晶振呀?
    发表于 04-28 07:03

    基于STM32F103C8T6控制多路VL53L0X激光测距传感器

    使用STM32F103C8T6的一条IIC总线控制4个激光测距传感器,我使用的激光测距传感器是亚博智能的 地址相同改不了,我要怎么控制多路,求指点
    发表于 04-23 18:23