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

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

3天内不再提示

基于stm32温湿度传感器实验

基于stm32温湿度传感器实验

分享:

以下是基于STM32的温湿度传感器实验的详细步骤和代码示例(以 DHT11 传感器为例),使用 HAL库 开发,适合初学者快速上手:


实验器材

  1. STM32开发板(如STM32F103C8T6)
  2. DHT11温湿度传感器
  3. 杜邦线若干
  4. USB转TTL模块(用于串口通信)
  5. Keil MDK-ARM开发环境

硬件连接

DHT11引脚 STM32引脚
VCC 3.3V
GND GND
DATA PB9(或其他GPIO)

注意:DATA引脚需接 4.7KΩ上拉电阻 到VCC。


代码实现

1. 配置GPIO和串口(用于调试输出)

// main.c
#include "stm32f1xx_hal.h"
#include "dht11.h"  // 自定义DHT11驱动头文件

UART_HandleTypeDef huart1;

void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_USART1_UART_Init(void);

int main(void) {
    HAL_Init();
    SystemClock_Config();
    MX_GPIO_Init();
    MX_USART1_UART_Init();

    DHT11_Data dht11;
    char msg[50];

    while (1) {
        if (DHT11_Read(&dht11) == DHT11_OK) {
            sprintf(msg, "Temp: %d°C, Humi: %d%%\r\n", dht11.temperature, dht11.humidity);
            HAL_UART_Transmit(&huart1, (uint8_t*)msg, strlen(msg), HAL_MAX_DELAY);
        } else {
            HAL_UART_Transmit(&huart1, (uint8_t*)"Error!\r\n", 8, HAL_MAX_DELAY);
        }
        HAL_Delay(2000); // 每2秒读取一次
    }
}

2. DHT11驱动 (dht11.cdht11.h)

// dht11.h
typedef struct {
    uint8_t humidity;
    uint8_t temperature;
} DHT11_Data;

typedef enum {
    DHT11_OK,
    DHT11_ERROR
} DHT11_Status;

DHT11_Status DHT11_Read(DHT11_Data *data);
// dht11.c
#include "dht11.h"
#include "stm32f1xx_hal.h"

#define DHT11_PORT GPIOB
#define DHT11_PIN  GPIO_PIN_9

static void DHT11_Delay(uint16_t time_us) {
    __HAL_TIM_SET_COUNTER(&htim1, 0);
    while (__HAL_TIM_GET_COUNTER(&htim1) < time_us);
}

DHT11_Status DHT11_Read(DHT11_Data *data) {
    uint8_t bytes[5] = {0};
    uint8_t cnt = 7, idx = 0;

    // 主机发送开始信号(拉低18ms)
    HAL_GPIO_WritePin(DHT11_PORT, DHT11_PIN, GPIO_PIN_RESET);
    HAL_Delay(18);
    HAL_GPIO_WritePin(DHT11_PORT, DHT11_PIN, GPIO_PIN_SET);
    DHT11_Delay(30); // 等待20-40us

    // 切换为输入模式等待响应
    GPIO_InitTypeDef gpio = {0};
    gpio.Pin = DHT11_PIN;
    gpio.Mode = GPIO_MODE_INPUT;
    gpio.Pull = GPIO_PULLUP;
    HAL_GPIO_Init(DHT11_PORT, &gpio);

    // 检查传感器响应(低电平80us + 高电平80us)
    if (HAL_GPIO_ReadPin(DHT11_PORT, DHT11_PIN)) return DHT11_ERROR;
    while (!HAL_GPIO_ReadPin(DHT11_PORT, DHT11_PIN));
    while (HAL_GPIO_ReadPin(DHT11_PORT, DHT11_PIN));

    // 接收40位数据(湿度整数+小数+温度整数+小数+校验和)
    for (int i = 0; i < 40; i++) {
        while (!HAL_GPIO_ReadPin(DHT11_PORT, DHT11_PIN));   // 等待高电平开始
        DHT11_Delay(40);                                   // 跳过50us低电平
        if (HAL_GPIO_ReadPin(DHT11_PORT, DHT11_PIN)) {     // 高电平>30us表示"1"
            bytes[idx] |= (1 << cnt);
            while (HAL_GPIO_ReadPin(DHT11_PORT, DHT11_PIN));
        }
        if (cnt-- == 0) { cnt = 7; idx++; } // 下一个字节
    }

    // 校验数据(前4字节和 = 第5字节)
    if (bytes[4] != (bytes[0] + bytes[1] + bytes[2] + bytes[3])) 
        return DHT11_ERROR;

    data->humidity = bytes[0];
    data->temperature = bytes[2];
    return DHT11_OK;
}

关键步骤说明

  1. 初始化定时器:用于精确延时(在dht11.c中需配置一个基本定时器,如TIM1)。
  2. 发送开始信号:主机拉低DATA线至少18ms后释放。
  3. 传感器响应:DHT11拉低80us,再拉高80us表示准备发送数据。
  4. 数据解析
    • 每个数据位以50us低电平开始。
    • 高电平26~28us表示“0”,70us表示“1”。
  5. 校验和:确保数据正确性。

常见问题排查

  1. 无响应
    • 检查接线(VCC、GND、DATA)。
    • DATA引脚必须接上拉电阻。
    • 确保GPIO配置正确(开始时为输出,读取时为输入)。
  2. 数据错误
    • 调整延时函数精度(不同主频需修改DHT11_Delay)。
    • 检查传感器供电电压(DHT11工作范围3~5.5V)。
  3. 时序不稳定
    • 关闭全局中断(__disable_irq())确保时序严格。

实验结果

通过串口调试助手(如PuTTY)查看输出:

Temp: 25°C, Humi: 50%
Temp: 26°C, Humi: 48%
...

提示:实际项目中可加入LCD显示、蓝牙传输或MQTT上传云端功能扩展。

温湿度传感器工作原理 温湿度传感器的接线方法

温湿度传感器是一种用于测量环境温度和相对湿度的装置。它通常用于工业、农业、气象、室内空调等领域。本文将详细介绍温湿度传感器的工作原理和接线方法。 一、温湿度传感器的工作原理 温湿度传感器主要基于物质

2024-02-14 18:00:00

温湿度传感器的原理

温湿度传感器是指能将温度量和湿度量转换成容易被测量处理的电信号的设备或装置。市场上的温湿度传感器一般是测量温度量和相对湿度量。金鸽科技研发生产无线温湿度传感器可实现在不方便布线的所有场景下的温湿度在线监测,以下是温湿度的简单原理介绍。

2020-05-11 14:59:32

什么是温湿度传感器_温湿度传感器如何安装

 很多的人们对于温湿度传感器的安装是不了解的,不知道该怎么样安装,其实安装温湿度传感器是比较方便的。要注意安装的细节问题和安装的技巧,那么温湿度传感器安装方式有哪些?我们来看看小编的相关介绍与讲述吧。

2020-05-26 09:24:08

温湿度传感器的三大安装事项

为了更加精准的监测到生活中的温湿度,我们的人工达不到大家对温湿度的准确性的要求,这个时候就需要用到温湿度传感器了,温湿度传感器的应用可以极大的满足大家对温湿度的精确度,得到大家的一致喜欢,那么,在

2020-02-21 19:43:01

使用STM32来读取DHT11数字温湿度传感器

基于STM32 -DHT11 数字温湿度传感器实验实验目的:这个实验的目的使用 STM32来读取DHT11 数字温湿度传感器,从而得到环境温度和湿度等信息,并把从温湿度值显示在串口打印助手上。实验

香奈儿苦苦奶茶 2021-11-10 08:58:25

如何使用STM32F4来读取DHT11数字温湿度传感器

数字温湿度传感器实验上一章,我们介绍了数字温度传感器 DS18B20 的使用,本章我们将介绍数字温湿度传感器DHT11 的使用,该传感器不但能测温度,还能测湿度。本章我们将向大家介绍如何使用 STM32...

储蓄叛逆 2022-02-09 07:50:32

温湿度变送器or温湿度传感器,我们应该如何选择

在我们需要检测一项数据时,往往需要传感器的帮助。比如需要测量温度、湿度、压力、光照、气体等,便会需要传感器的支持。在这些传感器中,使用较为广泛的便是温湿度传感器。 但是,当我们在网络搜索“温湿度

2022-05-13 17:10:06

霍尼韦尔温湿度传感器的类型

温湿度传感器是一种在图书馆等温湿度要求较高的地方广泛使用的,温湿度传感器对于温度和湿度的检测有着非常重要的作用,而今天小编就来为大家介绍下霍尼韦尔温湿度传感器的一些类型及选购的方法供大家了解。

2020-05-23 09:19:11

想要准确地测量环境温湿度温湿度传感器是关键!

温湿度是生产生活中最重要的环境指标之一,不仅人需要在适宜的温湿度条件下保持良好的精神状态和敏捷的思维,食品、药品、各种仪器设备等都对环境温湿度有特殊的要求。基于对环境温湿度的要求,温湿度传感器

2024-07-04 08:48:07

温湿度采集实验

实验采用三种方式来获取温湿度值,一种是STM32芯片内部自带的温度传感器,一种是基于单总线协议的DS18B20温度传感器,还有一种就是温湿度传感器DHT11或者DHT22,但是在成本上DHT22比较高,所以实验仅使用DHT11,DS18B20和内部温度传感器进行。

2023-03-01 15:52:45

dfrobotDHT22温湿度传感器介绍

DHT22数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器

2019-11-28 22:56:43

如何挑选一款温湿度传感器

温湿度传感器指把空气中的温湿度值通过检测装置,测量的温湿度值按一定规律变换成电信号或其他所需形式的信号输出,用来满足用户需求。市场上的温湿度传感器一般是测量温度值和相对湿度值。

2023-03-24 15:01:33

STM32温湿度传感器如何读取温湿度数据并显示到PC端串口助手?

STM32温湿度传感器如何读取温湿度数据并显示到PC端串口助手?

lalajie 2021-12-16 06:42:00

AHT20温湿度传感器简介

目录一、AHT20温湿度传感器简介二、AHT20 封装设计三、AHT20 元件设计四、原理图设计五、总结博客内容:学习温湿度传感器原理,阅读国产温湿度采集芯片AHT20数据手册,在之前stm32最小

飞翔的贝壳 2022-02-14 07:29:13

温湿度传感器的优势包括哪些

温湿度传感器是一种装有湿敏和热敏元件,能够用来测量温度和湿度传感器装置。如今温湿度传感器已广泛应用于各行各业。那么温湿度传感器具有哪些优势呢?接下来就给大家分享一下。

2021-09-19 17:43:00

工业级温湿度传感器相比普通传感器的优势是什么

工业级温湿度传感器比普通传感器好在哪? 温湿度产品在现代的应用非常广泛,机房、工业、农业,仓储等都离不开温湿度管理,特别是在实时记 录温湿度变化的工作中最为广泛,温湿度传感器可以根据所记录的数据

2021-01-29 16:37:16

DHT11温湿度传感器

一、实验目的采用ARM结构中最为代表的Cortex-M4系列的芯片,选用STM32F407ZGT6开发板进行项目开发,选用的传感器为常见通用的DHT11温湿度传感器传感器将采集到的数据传输到STM32(MCU)主控进行数据处理,最后通过串口打印出来。...

zhhx1985 2021-08-10 07:36:20

温湿度传感器有哪些应用场景?

温湿度传感器在众多领域,特别是在实时记录温湿度变化的工作中最为广泛。温湿度传感器可以根据所记录的内容,对其进行科学有效的管理、分析和归纳。下面我们就温湿度传感器在不同场景中的应用做下介绍:温湿度

2024-02-19 16:28:01

西门子温湿度传感器如何选择

对于温度传感器或者是湿度传感器,我们大家肯定不会感到陌生,但是温湿度传感器大家肯定陌生!温湿度传感器是应用在一些保存图书,档案,以及一些需要保证温度湿度恒定的场所的,其中西门子就是很不错的一款温湿度传感器品牌。

2020-05-26 09:27:14

基于STM32温湿度采集系统设计

①利用stm32对DHT11模块进行数据采集②将采集到的温湿度数据上云(本次实验并未成功上云)二、实验环境硬件:STM32F407ZGT6、DHT11温湿度传感器、杜邦线等软件:Keil5、STM32f407固件库、STM32CudeMx、STM32CudeMx的f407软件包接线:DHT11 S

从未拥有 2021-08-10 08:17:55

温湿度传感器怎么调试

温湿度传感器是一种广泛应用于工业、农业、气象、科研等领域的传感器,用于测量环境的温度和湿度。在实际应用中,温湿度传感器的调试是非常重要的,它直接影响到测量结果的准确性和稳定性。 一、温湿度传感器

2024-08-19 15:04:48

工业级温湿度传感器与日常温湿度计的区别

温湿度产品在现代的应用非常广泛,机房、工业、农业,仓储等都离不开温湿度管理,特别是在实时记录温湿度变化的工作中最为广泛,温湿度传感器可以根据所记录的数据,对各个不同的领域进行科学有效的分析、管理

2020-06-12 16:29:21

温湿度传感器是什么类型的传感器

温湿度传感器是一种能够实时监测和记录环境中温度和湿度变化的设备或装置。这类传感器广泛应用于环境监测、气象观测、农业、工业生产、仓储管理、智能家居、医疗健康等多个领域,为相关领域的研究、生产和管理提供

2024-10-21 14:53:52

如何选择温湿度传感器

温湿度传感器在各种领域中起着至关重要的作用,无论是室内环境监测还是工业自动化控制,然而市场上存在各种类型和品牌的温湿度传感器,如何选择适合自己需求的传感器成为一个重要问题。本文将为您提供一份全面指南,帮助您快速选择适合需求的温湿度传感器的关键因素。

2023-06-18 11:06:23

DHT11数字温湿度传感器的相关资料推荐

STM32采集DHT11温湿度关于DHT11相关参数代码篇接线和实验结果总结关于DHT11DHT11是一款数字温湿度传感器,DHT11是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字

麻酱 2022-02-21 07:34:05

温湿度传感器校准原理及校准步骤

温湿度传感器是一种重要的设备,用于监测环境中的温度和湿度变化。然而,由于环境和时间的影响,温湿度传感器可能会出现漂移或失准的情况。为了确保传感器的准确性和可靠性,校准和维护是必不可少的。本文将介绍温湿度传感器校准的基本原理和步骤,以及维护过程中需要注意的要点。

2023-06-29 16:30:11

RS485型温湿度传感器和模拟量型温湿度传感器的接线说明

随着现代社会的高速发展,温湿度传感器越来越多的应用到我们的工作和生活中,食品行业、档案管理、温室大棚、动物养殖、药品存储等行业都有温湿度传感器的身影。传感器在使用之前,避免不了安装接线的过程,今天

2020-09-23 14:34:45

基于STM32开发板实现传感数据采集-DHT11温湿度采集

STM32F407ZGT6开发板进行项目开发,选用的传感器为常见通用的DHT11温湿度传感器传感器将采集到的数据传输到STM32(MCU)主控进行数据处理,最后通过串口打印出来。软硬件环境:硬件:stm32开发板、DHT11温湿度传感器软件:keil5、stm32固体库以及软件包实验步骤:1、BS

djfldsthtr 2021-08-10 07:41:37

DHT11温湿度传感器简介

DHT11温湿度传感器1、DHT11简介DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期

jackhui 2022-02-16 06:55:05

微雪电子温湿度传感器简介

DHT11 温湿度传感器 标准单总线接口 用于检测环境温湿度 型号 DHT11 Temperature-Humidity Sensor

2020-01-02 15:51:47

加载更多