1. 项目概述:STM32室内空气净化监测系统设计
室内空气质量直接影响人体健康和工作效率,尤其在现代建筑密闭性增强的背景下,甲醛、PM2.5、CO2等污染物浓度超标问题日益突出。本项目基于STM32微控制器构建了一套集成化的空气质量监测与自动调节系统,通过多传感器协同采集、实时数据分析、自适应控制算法,实现了对温湿度、颗粒物、有害气体的全面监控和自动净化。
系统采用模块化设计架构,包含传感器采集层(温湿度、甲醛、PM2.5、CO)、主控处理层(STM32F103)、执行控制层(PWM调速风机)和人机交互层(OLED+手机APP)。相比市售单一功能检测设备,本方案具有三大核心优势:一是采用工业级传感器保证数据准确性(如SHT11温湿度传感器精度±2%RH);二是通过PWM多级调速实现能耗优化;三是支持WiFi远程监控,符合物联网发展趋势。
2. 硬件系统设计详解
2.1 主控芯片选型与电路设计
选用STM32F103CBT6作为主控芯片,其核心优势包括:
- 72MHz Cortex-M3内核提供充足算力
- 内置12位ADC(1μs转换时间)满足多通道传感器采样
- 4个通用定时器支持PWM波形生成
- USART接口方便扩展WiFi模块
最小系统电路设计要点:
c复制// 时钟电路示例
void SystemClock_Config(void) {
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;
HAL_RCC_OscConfig(&RCC_OscInitStruct);
}
2.2 传感器模块配置
系统集成五类环境传感器:
| 传感器类型 | 型号 | 检测范围 | 通信方式 | 采样周期 |
|---|---|---|---|---|
| 温湿度 | SHT11 | -40~123.8℃, 0~100%RH | I2C | 2s |
| 甲醛 | DS-HCHO | 0~5ppm | UART | 30s |
| PM2.5 | AS-AQM101 | 0~1000μg/m³ | PWM输出 | 1min |
| CO | ZE07-CO | 0~1000ppm | UART | 5min |
| 烟雾 | CP2Y1010AU0F | 0.1~10mg/m³ | 模拟量 | 实时 |
关键提示:甲醛传感器需预热30分钟才能稳定工作,程序设计时应加入预热状态检测
2.3 执行机构设计
采用三级调速方案控制净化设备:
- 低速模式(PWM占空比30%):当PM2.5<75μg/m³时启用
- 中速模式(PWM占空比60%):75~150μg/m³区间启用
- 高速模式(PWM占空比90%):>150μg/m³时启用
风机驱动电路采用MOSFET IRF540N,其5V逻辑电平兼容STM32 GPIO,最大支持33A电流负载。
3. 软件系统实现
3.1 主程序流程图
plaintext复制开始
├─ 硬件初始化
│ ├─ 时钟配置
│ ├─ GPIO初始化
│ ├─ ADC校准
│ └─ 外设检测
├─ 传感器预热(30min)
├─ 主循环
│ ├─ 数据采集
│ ├─ 空气质量评估
│ ├─ 控制策略计算
│ ├─ PWM输出调整
│ └─ 数据上传
└─ 异常处理
3.2 核心算法实现
采用改进的模糊PID控制算法:
c复制typedef struct {
float Kp, Ki, Kd;
float err, err_last;
float integral;
} PID;
void PID_Init(PID* pid, float Kp, float Ki, float Kd) {
pid->Kp = Kp;
pid->Ki = Ki;
pid->Kd = Kd;
pid->err = pid->err_last = pid->integral = 0;
}
float PID_Calculate(PID* pid, float target, float current) {
pid->err = target - current;
pid->integral += pid->err;
// 抗积分饱和处理
if(pid->integral > 1000) pid->integral = 1000;
else if(pid->integral < -1000) pid->integral = -1000;
float output = pid->Kp * pid->err +
pid->Ki * pid->integral +
pid->Kd * (pid->err - pid->err_last);
pid->err_last = pid->err;
return output;
}
3.3 WiFi通信协议
采用自定义轻量级协议:
code复制帧头(0xAA) | 数据长度(1B) | 传感器类型(1B) | 数据(4B) | CRC校验(2B)
ESP8266模块配置示例:
bash复制AT+CWMODE=3 // 设置STA+AP模式
AT+CWJAP="SSID","password" // 连接WiFi
AT+CIPSTART="TCP","192.168.1.100",8080 // 建立TCP连接
4. 系统调试与优化
4.1 传感器校准方法
- 温湿度传感器:采用饱和盐溶液校准法
- 氯化镁溶液:33%RH @20℃
- 氯化钠溶液:75%RH @20℃
- PM2.5传感器:使用标准粉尘发生器校准
- 气体传感器:通入标准浓度气体校准
4.2 典型问题排查
| 故障现象 | 可能原因 | 解决方案 |
|---|---|---|
| 传感器数据异常 | 电源干扰 | 增加0.1μF去耦电容 |
| WiFi频繁断开 | 信号强度不足 | 调整天线位置或增加PA模块 |
| 风机转速不稳 | PWM频率不当 | 调整定时器分频系数 |
| 显示花屏 | SPI时钟过快 | 降低至1MHz以下 |
4.3 功耗优化措施
- 采用间歇工作模式:传感器每5分钟唤醒一次
- 动态时钟调节:空闲时切换至HSI内部时钟
- 低功耗设计:
- 运行模式:36mA @72MHz
- 睡眠模式:2.5μA (RTC保持)
5. 扩展功能实现
5.1 手机APP开发
使用MIT App Inventor快速构建监控界面,主要功能包括:
- 实时数据显示折线图
- 历史数据查询
- 报警阈值设置
- 设备远程控制
5.2 云端数据存储
通过MQTT协议上传至阿里云IoT平台:
python复制import paho.mqtt.client as mqtt
client = mqtt.Client()
client.connect("iot.aliyun.com", 1883, 60)
client.publish("/air/data", "{"temp":25.3,"humi":45}")
5.3 第三方服务集成
- 微信推送报警信息
- 对接智能音箱语音控制
- 接入Home Assistant智能家居平台
6. 项目总结与改进方向
经过三个月实际测试,系统在20㎡房间内达到以下指标:
- PM2.5净化效率:15分钟降低80%
- 甲醛去除率:24小时下降65%
- 平均功耗:<5W
后续改进计划:
- 增加激光雷达颗粒物检测模块提升精度
- 引入机器学习算法预测污染趋势
- 开发太阳能供电版本
经验分享:在调试PWM控制时发现,当占空比低于10%时普通直流电机可能出现停转现象,建议使用专门设计的PWM调速电机或增加最小占空比限制。
