大家好,今天给大家介绍基于STM32的温湿度监控系统,内含代码,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。
基于STM32的温湿度监控系统通常会涉及到STM32微控制器、温湿度传感器(如DHT11、DHT22或SHT30等)、以及可能的显示模块(如LCD或OLED)和通信接口(如UART、I2C或SPI)。以下是一个简化的项目概述和示例代码,假设我们使用的是DHT11温湿度传感器和STM32F103C8T6微控制器。
所需硬件
- STM32F103C8T6 开发板
- DHT11 温湿度传感器
- 连接线若干
- 可选:LCD显示屏
- 开发环境(如Keil uVision, STM32CubeIDE等)
接线说明
- DHT11的VCC连接到STM32的3.3V或5V(DHT11支持3.3V和5V供电)
- DHT11的GND连接到STM32的GND
- DHT11的DATA连接到STM32的一个GPIO引脚(假设为PA0)
软件实现
这里提供一个基本的DHT11读取代码示例,假设你已经在STM32CubeIDE中创建了一个新项目,并配置了PA0作为GPIO输入。
#include "stm32f1xx_hal.h"
#include <stdio.h>
#define DHT11_GPIO_Port GPIOA
#define DHT11_Pin GPIO_PIN_0
void DHT11_Start(void) {
HAL_GPIO_WritePin(DHT11_GPIO_Port, DHT11_Pin, GPIO_PIN_RESET);
HAL_Delay(18); // 至少18ms
HAL_GPIO_WritePin(DHT11_GPIO_Port, DHT11_Pin, GPIO_PIN_SET);
HAL_Delay(40); // 等待DHT11响应
}
uint8_t DHT11_ReadBit(void) {
uint8_t bit = 0;
HAL_Delay(30); // 等待50us
if (HAL_GPIO_ReadPin(DHT11_GPIO_Port, DHT11_Pin) == GPIO_PIN_SET) {
bit = 1;
}
HAL_Delay(80); // 等待高电平或低电平剩余时间
return bit;
}
uint8_t DHT11_ReadByte(void) {
uint8_t byte = 0;
for (int i = 0; i < 8; i++) {
byte <<= 1;
byte |= DHT11_ReadBit();
}
return byte;
}
void DHT11_ReadData(uint8_t *humidity, uint8_t *temperature) {
uint8_t data[5];
DHT11_Start();
if (DHT11_ReadByte() == 0x00 && DHT11_ReadByte() == 0x00 && DHT11_ReadByte() == 0x55 && DHT11_ReadByte() == 0xAA) {
data[0] = DHT11_ReadByte(); // 湿度整数部分
data[1] = DHT11_ReadByte(); // 湿度小数部分
data[2] = DHT11_ReadByte(); // 温度整数部分
data[3] = DHT11_ReadByte(); // 温度小数部分
data[4] = DHT11_ReadByte(); // 校验和
*humidity = data[0];
*temperature = data[2];
}
}
int main(void) {
HAL_Init();
// 初始化GPIO等(略)
uint8_t humidity, temperature;
while (1) {
DHT11_ReadData(&humidity, &temperature);
printf("Humidity: %d%%, Temperature: %d°C\n", humidity, temperature);
HAL_Delay(2000); // 每2秒读取一次
}
}
注意
- 上述代码示例简化了初始化过程,实际项目中需要根据STM32CubeMX或HAL库进行GPIO等硬件的详细初始化。
- DHT11的时序控制(如启动信号、数据读取的延时)需要严格遵循其数据手册。
- 如果使用LCD显示屏显示数据,还需要额外编写LCD驱动代码。
- 示例中使用了
printf
进行调试,实际项目中可能需要通过USART或其他通信接口输出数据。 -
嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!
分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!
点击找小助理免费领取资料
扫码进群领资料
https://ad.pdb2.com/l/16QijNiGb32IFIn