1. 项目概述
去年冬天雾霾严重的时候,我萌生了自己动手做一台空气净化器的想法。市面上动辄几千元的商用净化器,拆开看核心部件其实并不复杂。作为一个嵌入式开发老手,我决定用STM32作为主控,打造一台高性价比的智能空气净化器。这个项目从传感器选型到风机控制,完整实现了空气质量监测、自动调节和远程监控功能,整套硬件成本控制在300元以内。
2. 硬件设计与选型
2.1 主控芯片选择
STM32F103C8T6是本次设计的核心,选择它主要基于三点考虑:
- 72MHz主频完全满足实时处理传感器数据和PID控制需求
- 内置12位ADC可直连各类模拟传感器
- 丰富的外设接口(I2C、SPI、USART)便于扩展
注意:虽然STM32F0系列更便宜,但缺少硬件浮点单元,处理复杂算法时性能吃紧。
2.2 传感器方案
采用多传感器融合方案提升检测精度:
- PM2.5检测:攀藤G5激光粉尘传感器(UART输出)
- 温湿度:SHT30数字传感器(I2C接口)
- TVOC:SGP30气体传感器(需要I2C+软件算法补偿温湿度影响)
实测发现激光粉尘传感器需要每30秒用软毛刷清洁光学窗口,否则数据会漂移。我在外壳设计时专门增加了可拆卸的防尘罩。
2.3 风机驱动电路
选用日本电产NMB 2410离心风机,关键参数:
- 最大风量:180CFM
- 噪音:<45dB(@12V)
- 功耗:18W
驱动方案采用MOSFET IRF540N配合PWM控制,通过STM32的TIM1通道产生20kHz PWM信号。实测发现PWM频率低于15kHz时会出现可闻噪音。
3. 软件架构设计
3.1 实时操作系统选择
对比了FreeRTOS和RT-Thread后,最终选用FreeRTOS原因如下:
- 内存占用更小(最小配置仅6KB RAM)
- 任务调度响应时间<1ms
- 与STM32CubeMX工具链无缝集成
创建了4个主要任务:
- 传感器数据采集(优先级3)
- 空气质量算法处理(优先级2)
- 风机PID控制(优先级4)
- 网络通信(优先级1)
3.2 核心算法实现
空气质量指数(AQI)计算采用滑动窗口滤波:
c复制#define WINDOW_SIZE 10
float pm25_buffer[WINDOW_SIZE];
float calculate_avg_pm25() {
static uint8_t index = 0;
pm25_buffer[index++] = pm25_read();
if(index >= WINDOW_SIZE) index = 0;
float sum = 0;
for(int i=0; i<WINDOW_SIZE; i++) {
sum += pm25_buffer[i];
}
return sum / WINDOW_SIZE;
}
风机控制采用增量式PID算法,关键参数经过Ziegler-Nichols整定法确定:
- Kp=0.8
- Ki=0.05
- Kd=0.1
4. 结构设计与装配
4.1 风道优化
通过SolidWorks流体仿真发现:
- 直通式风道存在气流短路现象
- 45度倾斜的导流板可提升20%风量效率
- 进出风口面积比应保持在1:1.2
最终采用塔式结构设计,从底部进风经过三层过滤后从顶部排出。3D打印的导流组件使CADR值达到120m³/h。
4.2 过滤系统
三级过滤方案:
- 初效滤网:拦截毛发和大颗粒(可水洗重复使用)
- HEPA滤芯:H13级,过滤效率99.97%@0.3μm
- 活性炭层:5mm厚柱状活性炭,处理甲醛等气态污染物
重要提示:HEPA滤芯安装时必须确保密封条完全压紧,否则会形成气流旁路。
5. 物联网功能扩展
5.1 无线通信模块
选用ESP-01S WiFi模块通过AT指令与STM32通信,关键配置:
bash复制AT+CWMODE=1 // Station模式
AT+CWJAP="SSID","password" // 连接WiFi
AT+CIPSTART="TCP","api.thingspeak.com",80 // 连接云平台
5.2 云端数据可视化
通过Thingspeak平台实现:
- 每2分钟上传PM2.5、温湿度数据
- 设置阈值触发IFTTT推送报警
- 微信小程序远程查看实时数据
遇到的最大坑是ESP模块在长时间运行后会死机,最终通过硬件看门狗和软件心跳包双重机制解决。
6. 实测性能分析
在15㎡密闭房间测试结果:
- PM2.5从300μg/m³降至35μg/m³用时18分钟
- 最大功耗模式下噪音为52dB(A)
- 待机功耗仅1.2W(仅传感器工作)
滤芯寿命测试显示:
- 日均使用8小时情况下
- HEPA滤芯有效寿命约6-8个月
- 活性炭层3个月后吸附效率下降30%
7. 常见问题排查
7.1 传感器数据异常
- 现象:PM2.5读数突然归零
- 排查:检查UART接线→测量传感器供电→清洁光学窗口
- 根本原因:粉尘堆积导致激光散射强度不足
7.2 风机震动过大
- 现象:高速运行时机身明显抖动
- 解决方案:
- 检查叶轮动平衡
- 增加硅胶减震垫
- 调整PWM频率避开机械共振点(通常在80-120Hz)
7.3 WiFi频繁断开
- 错误代码:AT+CIPSTATUS返回4
- 修复步骤:
- 更新ESP固件到最新版
- 在代码中添加自动重连机制
- 调整天线位置避开金属遮挡
这个项目最让我意外的是活性炭层的实际效果。测试发现,在新装修环境中,前两周甲醛去除率能达到85%,但之后会快速衰减到40%左右。后来改进的方案是每月将活性炭取出暴晒4小时,可以恢复约60%的吸附能力。