打印
[STM32F1]

使用STM32 MCU实现温湿度监测系统

[复制链接]
2348|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Pulitzer|  楼主 | 2024-9-29 07:53 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
大家好!今天我想分享一下我最近在使用STM32微控制器时做的一个小项目——温湿度监测系统。这个项目不仅简单易懂,而且非常实用,适合入门学习STM32的朋友们。
项目背景在日常生活中,温湿度监测对我们的健康和环境管理至关重要。为了实现这个功能,我选择了STM32F103系列微控制器,并结合DHT11温湿度传感器来获取数据。以下是我实现这个项目的详细步骤和代码示例。
硬件连接
  • STM32F103开发板
  • DHT11传感器
  • 面包板和跳线
DHT11的连接方式如下:
  • VCC接3.3V
  • GND接地
  • 数据引脚接到STM32的某个GPIO口(例如PA0)
代码实现这里是我用HAL库编写的代码示例:
#include "stm32f1xx_hal.h"
#include "dht11.h"

DHT11_HandleTypeDef DHT11;

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();

    while (1) {
        float temperature, humidity;
        if (DHT11_Read(&DHT11, &temperature, &humidity) == DHT11_OK) {
            char buffer[50];
            snprintf(buffer, sizeof(buffer), "Temp: %.1f C, Hum: %.1f %%\r\n", temperature, humidity);
            HAL_UART_Transmit(&huart1, (uint8_t*)buffer, strlen(buffer), HAL_MAX_DELAY);
        }
        HAL_Delay(2000); // 每2秒读取一次数据
    }
}

static void MX_GPIO_Init(void) {
    // GPIO初始化代码
}

static void MX_USART1_UART_Init(void) {
    // UART初始化代码
}

void SystemClock_Config(void) {
    // 时钟配置代码
}
代码说明
  • 初始化:在main()函数中,首先初始化HAL库,然后设置时钟和GPIO。
  • 读取数据:使用DHT11_Read()函数从传感器获取温度和湿度值。
  • UART输出:将读取到的数据通过串口输出,便于观察。
项目扩展
  • 数据存储:可以将数据存储到SD卡或通过Wi-Fi模块发送到云端。
  • 图形界面:结合LCD屏幕或OLED显示屏,实时显示温湿度数据。
  • 报警功能:当温湿度超出设定范围时,通过蜂鸣器或LED进行报警。
希望这个小项目能给大家提供一些灵感,让我们一起在STM32的世界中探索更多可能性!如果有任何问题或建议,欢迎在评论区讨论。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

41

主题

4232

帖子

0

粉丝