用STM32F103C8T6接口DHT11湿度和温度传感器

在本教程中,我将如何使用STM32F103C8T6基于STM32蓝丸板接口DHT11湿度和温度传感器。STM32读取DHT11传感器的值,并在I2C LCD显示器上显示。

介绍

传感器是弥合了原始的差距的巨大矮小装置模拟世界与微控制器的数字世界。传感器可以非常简单,如非常着名的LM35温度传感器,或者它们可以是一些复杂的数学单位,如MPU6050陀螺仪和加速度计组合传感器。

简单或复杂,传感器是许多消费者,汽车,机器人,工业应用的关键部分,并且在不整合适当的传感器的情况下无法完成几种应用。

让我们从工业应用中缩小到日常项目和爱好者。一个非常常见和流行的项目,是IOT应用程序或只是常规字符LCD应用程序,是气象站。

这种气象站项目的关键组成部分是能够检测温度,湿度等等天气相关参数的能力.DHT11湿度和温度传感器只是这些类型的项目的装置。

我已经在Arduino项目中使用了DHT11传感器,称为“Arduino上的DHT11湿度传感器“。在该项目中,我与Arduino连接了DHT11传感器,计算了温度和湿度值,并在16×2 LCD显示屏上显示。我也会在这里做同样的事情,但这一次我将用STM32F103C8T6 MCU接口DHT11湿度和温度传感器。

DHT11湿度和温度传感器

DHT11及其大兄弟DHT22是便宜但高度可靠的湿度和温度传感器。DHT22的范围和精度略高于DHT11,但这种延长范围和更严格的准确性以价格为例。除此之外,传感器都是类似的寻找,具有相同的引脚出和连接。所以,从现在开始,我们将专注于该项目的传感器,即DHT11。

它是一种超低成本传感器,可容纳电阻式湿度测量部件,NTC型温度测量部件和8位微控制器,以将来自测量组件的数据转换为数字值。

DHT11传感器

在Arduino - DHT11教程中,我对传感器的工作以及如何解释来自单行的数据来说,我已经说过了很多。我请您参考该项目有关此传感器的其他信息。

此外,在该项目中,我还没有为DHT11湿度和温度传感器使用任何专用图书馆,并尝试了我自己的代码。只是为了改变,我将使用Adafruit开发的DHT库。

用STM32F103C8T6接口DHT11湿度和温度传感器

在继续进一步之前,我必须从DHT11传感器的数据表提醒您一些东西。它说DHT11传感器和微控制器之间的单个数据线在这种情况下,必须在5kΩ电阻的帮助下拉高。

因此,在购买DHT11传感器时,尝试购买包括所述上拉电阻(甚至一些上电LED)的模块。这使得在您不需要任何其他组件时,可以更轻松地接口DHT11湿度和温度传感器。

DHT11引脚声

要记住的另一件事是我使用了基于I2C LCD I.E.CCF8574模块的I2C GPIO扩展器模块,具有良好的16×2 LCD显示屏。我已经在专用项目中实现了相同的“与STM32F103C8T6连接I2C LCD”。有关其他信息,请参阅该项目。

所需的组件

  • STM32F103C8T6基于MCU的STM32蓝丸板
  • DHT11湿度和温度传感器
  • 16×2 LCD显示屏
  • PCF8574 I2C LCD模块
  • 5kΩ电阻(可选,如果在DHT11模块上存在,则不需要)
  • 连接电线
  • USB到uart.转换器(仅在通过UART编程时才需要)

电路原理图

下图显示了具有STM32F103C8T6基于STM32蓝丸板的DHT11湿度和温度传感器的接口DHT11湿度和温度传感器的电路图。

具有STM32F103C8T6电路图的DHT11湿度和温度传感器

连接解释了

首先,将DHT11传感器的VCC和GND引脚连接到+ 5V和GND。然后将传感器的数据引脚连接到STM32板的引脚PA1。

将LCD插入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);
而(!序列);
}

void循环()
{
字节错误,地址;
int i2cdevices;

serial.println(“扫描i2c设备......”);

i2cdevices = 0;
for(地址= 1;地址<127;地址++)
{
Wire.Begintroansmission(地址);
ERROR = WIE.endTransmission();

如果(错误== 0)
{
serial.print(“在地址0x处找到的i2c设备”);
如果(地址<16)
serial.print(“0”);
serial.print(地址,十六进制);
serial.println(“!”);

i2cdevices ++;
}
否则if(错误== 4)
{
serial.print(“地址0x的”未知错误“);
如果(地址<16)
serial.print(“0”);
serial.println(地址,十六进制);
}
}
if(i2cdevices == 0)
serial.println(“找不到i2c设备\ n”);
别的
serial.println(“**** \ n”);

延迟(5000);
}

现在,来到实际计划,首先从中下载DHT库关联。提取zip文件并将内容复制到本地的库文件夹Arduino安装。此路径通常为“C:\程序文件(x86)\ arduino \ libraries”。

然后,在程序中,将DHT的数据引脚定义为PA1和DHT传感器的类型I. DHT11或DHT22。通过提及从地址,列和行数,将I2C LCD声明使用LiquidCryStal_i2c库函数。您现在可以使用相应的“开始”功能初始化LCD和DHT11传感器。

现在,采取两个浮点值并捕获湿度以及传感器的温度读数。最后,在LCD上打印这些值。

代码

#include
#include
#include

#define dhtpin pa1.
#define dhttype dht11

Liquidcrystal_I2C LCD(0x27,16,2);
DHT DHT(DHTPIN,DHTTYPE);
字节度_symbol [8] =
{
0b00111,
0B00101,
0b00111,
0b00000,
0b00000,
0b00000,
0b00000,
0B00000
};

void setup()
{

lcd.begin();
dht.begin();
lcd.Backlight();
lcd.setCursor(0,0);
lcd.print(“伟德亚洲会玩假吗电子设备中心”);
lcd.setCursor(0,1);
lcd.print(“DHT11带STM32”);
延迟(2000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“temp =”);
lcd.setCursor(0,1);
lcd.print(“Humid =”);
LCD.CreateChar(0,STOUT_SYMBOL);
lcd.setcursor(12,0);
lcd.write(0);
lcd.print(“c”);
lcd.setCursor(14,1);
lcd.print(“%”);
}

void循环()
{
float hum = dht.readhumity();
float tem = dht.readtemperatucte();
lcd.setcursor(7,0);
lcd.print(TEM);
lcd.setcursor(8,1);
lcd.print(嗡嗡声);
}

结论

在此实现了一个简单的项目,用于演示DHT11湿度和温度传感器与STM32F103C8T6基于STM32蓝色丸板的接口。

发表评论

您的电子邮件地址不会被公开。必需的地方已做标记*

电子机器Favicon.
<\/i>","library":""}}" data-widget_type="nav-menu.default">
Baidu
map