0 卖盘信息
BOM询价
您现在的位置: 首页 > 技术方案 >工业控制 > 基于STM32F103C8T6 MCU+DHT11温度传感器+PCF8574模块的STM32 Blue Pill Board接口设计方案

基于STM32F103C8T6 MCU+DHT11温度传感器+PCF8574模块的STM32 Blue Pill Board接口设计方案

来源: elecfans
2021-07-22
类别:工业控制
eye 16
文章创建人 拍明

原标题:基于STM32F103C8T6 MCU+DHT11温度传感器的STM32 Blue Pill Board接口设计方案

  在本教程中,我将介绍如何将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 ”);

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


责任编辑:David

【免责声明】

1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。

2、本文的引用仅供读者交流学习使用,不涉及商业目的。

3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。

4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。

拍明芯城拥有对此声明的最终解释权。

相关资讯

方案推荐
基于MC33771主控芯片的新能源锂电池管理系统解决方案

基于MC33771主控芯片的新能源锂电池管理系统解决方案

AMIC110 32位Sitara ARM MCU开发方案

AMIC110 32位Sitara ARM MCU开发方案

基于AMIC110多协议可编程工业通信处理器的32位Sitara ARM MCU开发方案

基于AMIC110多协议可编程工业通信处理器的32位Sitara ARM MCU开发方案

基于展讯SC9820超低成本LTE芯片平台的儿童智能手表解决方案

基于展讯SC9820超低成本LTE芯片平台的儿童智能手表解决方案

基于TI公司的AM437x双照相机参考设计

基于TI公司的AM437x双照相机参考设计

基于MTK6580芯片的W2智能手表解决方案

基于MTK6580芯片的W2智能手表解决方案