STM32与DHT22温湿度传感器的完美融合:实战代码分享

温湿度的测量原理:

温度:通过热敏电阻来检测温度,电阻值随着温度的变化而变化。

湿度:DHT22 通过测量空气中的水分含量,利用电容变化来检测湿度。湿度的变化会导致电容值的变化,传感器将其转换为数字信号。

【注】:DHT11的湿度也是通过电阻来测量的。

结构:DHT22 内部包括一个温湿度感应元件和一个用于处理数据的电路模块。它使用电容式湿度感应和热敏电阻来测量温度和湿度。

void THI_ReadData(float *temp,float *humi)    
{        
    if(!thiStr.enable)  //传感器未使能
        return;
    
 	uint8_t buf[5];       // 用于存储从传感器读取的数据
	uint8_t i;            // 循环索引
	uint8_t sum;          // 用于校验
    
	*humi=0;              // 传入的湿度和温度指针指向的值初始化为 0
	*temp=0;              //
	THI_Reset();
	if(THI_Check()==0)    // 调用 THI_Check() 函数检查传感器是否正常工作。如果返回 0,表示正常,可以继续读取数据。
	{
		for(i=0;i<5;i++)
		{
			buf[i]=THI_ReadByte();
		}
		sum = buf[0]+buf[1]+buf[2]+buf[3]; // 校验和验证
		if(sum == buf[4])
		{
			*humi=(float)((buf[0]<<8)+buf[1])/10; // 提取湿度和温度
			*temp=(float)((buf[2]<<8)+buf[3])/10;
		}
		else
		{
			*humi=(float)((buf[0]<<8)+buf[1])/10; // 处理校验失败的情况
			*temp=(float)((buf[2]<<8)+buf[3])/10;
		}
	}
	else //自检失败
	{
		return;
	}
	    
}

作者:摸鱼呀᭄

物联沃分享整理
物联沃-IOTWORD物联网 » STM32与DHT22温湿度传感器的完美融合:实战代码分享

发表回复