空气质量函数,wifi连接10s延时(还是不行),几个开关,风扇用PWM还是不行

This commit is contained in:
dgjames 2025-03-15 08:42:45 +08:00
parent d7a066996a
commit 2c8d632faf

View File

@ -8,6 +8,7 @@
#include <rtdevice.h> #include <rtdevice.h>
#include <drv_gpio.h> #include <drv_gpio.h>
#include "status.h" #include "status.h"
#include "math.h"
rt_thread_t Sensor_Thread = RT_NULL; rt_thread_t Sensor_Thread = RT_NULL;
@ -35,6 +36,7 @@ float ADC_air;
float ADC_PM25; float ADC_PM25;
float ADC_pressure; float ADC_pressure;
#define MQ2_READ_TIMES 10
float Air_Read() float Air_Read()
{ {
rt_adc_device_t adc_dev; /* ADC 设备句柄 */ rt_adc_device_t adc_dev; /* ADC 设备句柄 */
@ -48,6 +50,28 @@ float Air_Read()
return value; return value;
} }
float MQ2_GetData_PPM(void)
{
float tempData = 0;
for (uint8_t i = 0; i < MQ2_READ_TIMES; i++)
{
tempData += Air_Read();;
rt_thread_mdelay(5);;
}
tempData /= MQ2_READ_TIMES;
float Vol = (tempData*5/4096);
float RS = (5-Vol)/(Vol*0.5);
float R0=6.64;
float ppm = pow(11.5428*R0/RS, 0.6549f);
return ppm;
}
float PM25_Read() float PM25_Read()
{ {
rt_adc_device_t adc_dev; /* ADC 设备句柄 */ rt_adc_device_t adc_dev; /* ADC 设备句柄 */
@ -138,7 +162,7 @@ static void sensor_thread(void *parameter)
{ {
while (1) while (1)
{ {
ADC_air = Air_Read(); // 空气质量传感器数值 0-4095 表示从差到优秀 ADC_air = MQ2_GetData_PPM(); // 空气质量传感器数值 0-4095 表示从差到优秀
ADC_PM25 = Get_PM25_Average_Data(); // PM2.5传感器数值0-500 表示从优秀到查差 ADC_PM25 = Get_PM25_Average_Data(); // PM2.5传感器数值0-500 表示从优秀到查差
ADC_pressure = Pressure_Read(); // 压力传感器数值 0-4095 表示从差到优秀 ADC_pressure = Pressure_Read(); // 压力传感器数值 0-4095 表示从差到优秀
LOG5("ADC_air:%f,ADC_PM25:%f,ADC_pressure:%f", ADC_air, ADC_PM25, ADC_pressure); LOG5("ADC_air:%f,ADC_PM25:%f,ADC_pressure:%f", ADC_air, ADC_PM25, ADC_pressure);