1. 项目概述:基于STM32的智能空气净化器开发
去年工作室装修后,我明显感觉到室内空气质量下降,于是萌生了自己开发空气净化器的想法。这个项目采用STM32F103C8T6作为主控芯片,配合PM2.5传感器、温湿度传感器和OLED显示屏,实现了空气质量实时监测与自动净化功能。整套系统包含硬件设计(原理图+PCB)、嵌入式程序源码以及3D打印的外壳模型文件,适合有一定电子基础的开发者复现或二次开发。
提示:选择STM32F103系列是因为其性价比高(约10元/片),且具有足够的GPIO和PWM资源驱动风扇和传感器,Cortex-M3内核也能满足实时控制需求。
2. 硬件设计详解
2.1 核心元器件选型
经过多次对比测试,最终确定的BOM清单如下:
| 元器件 | 型号 | 关键参数 | 成本 |
|---|---|---|---|
| 主控MCU | STM32F103C8T6 | 72MHz, 64KB Flash, 20KB RAM | ¥9.8 |
| PM2.5传感器 | GP2Y1014AU0F | 检测范围0-500μg/m³ | ¥32.5 |
| 温湿度传感器 | DHT22 | ±0.5℃精度,±2%RH精度 | ¥15.2 |
| 显示模块 | SSD1306 0.96寸OLED | 128x64分辨率,I2C接口 | ¥12.8 |
| 风扇驱动 | TB6612FNG | 双路DC电机驱动,1.2A持续电流 | ¥6.5 |
| 离心风扇 | FD1240B1H | 12V/0.15A,风量1.2CFM | ¥28.0 |
选择GP2Y1014AU0F传感器时需要注意:
- 必须加装海绵防尘套(原装易堵塞)
- 采样时需配合LED触发信号
- 需定期用棉签清洁光学窗口
2.2 电路设计要点
原理图设计采用模块化思路,主要包含:
- 最小系统电路(含SWD调试接口)
- 传感器接口电路(模拟/数字隔离设计)
- 风扇驱动电路(带过流保护)
- 电源管理电路(12V转5V/3.3V)
PCB布局特别注意:
- 将模拟信号(PM2.5输出)远离数字电路
- 风扇驱动部分铺铜加强散热
- 所有接插件采用防反插设计
- 保留未使用的IO测试点
常见问题:初期版本未做电源隔离,导致PM2.5传感器读数波动大,后来增加LC滤波电路后改善明显。
3. 软件架构与关键代码
3.1 程序框架设计
使用Keil MDK开发环境,基于HAL库构建分层架构:
code复制App/
├── sensor/ # 传感器驱动
├── display/ # OLED界面
├── control/ # 风扇控制算法
└── system/ # 系统管理
关键初始化流程:
c复制void System_Init(void) {
HAL_Init();
Clock_Config();
GPIO_Init();
UART_Init(115200);
I2C_Init();
ADC_Init();
TIM_PWM_Init();
Sensors_Init();
OLED_Init();
}
3.2 空气质量算法实现
PM2.5浓度计算采用动态校准算法:
- 读取传感器原始电压值
- 应用温度补偿公式:
c复制float compensate_temp(float voltage, float temp) { return voltage * (1.0 + 0.02*(temp-25.0)); } - 转换为μg/m³浓度值:
c复制float calc_pm25(float voltage) { return 0.172 * voltage - 0.1; // 厂家提供的转换公式 }
风扇控制采用PID算法:
c复制void PID_Control(float current_pm25) {
static float integral = 0;
float error = TARGET_PM25 - current_pm25;
integral += error * DT;
float derivative = (error - last_error) / DT;
output = KP*error + KI*integral + KD*derivative;
pwm_set_duty(MIN(MAX(output, 0), 100));
}
4. 制作与调试经验
4.1 组装注意事项
-
结构件安装顺序:
- 先固定PCB主板
- 再安装风扇(注意气流方向)
- 最后装配滤芯(HEPA+活性炭复合滤网)
-
线缆管理技巧:
- 传感器线缆用磁环抑制干扰
- 电源线单独走线避免耦合
- 使用硅胶线防止高温老化
4.2 典型问题排查
-
传感器读数异常:
- 检查VCC电压是否稳定(建议增加100μF电容)
- 确认光学窗口无污染
- 重新校准基准电压(短接检测端测零点)
-
风扇转速不稳:
bash复制# 用逻辑分析仪捕获PWM信号 # 正常波形应为稳定的25kHz方波- 检查MOSFET栅极电阻(推荐10Ω)
- 确认电源功率足够(12V/2A以上适配器)
-
OLED显示花屏:
- 重插I2C接口(接触不良常见)
- 调整上拉电阻(通常4.7KΩ)
- 检查电源纹波(建议增加10μF电容)
5. 项目优化方向
实际使用三个月后,总结出以下改进点:
- 增加WiFi模块(ESP-01S)实现远程监控
- 改用无刷电机降低噪音(需重新设计驱动电路)
- 添加TVOC传感器检测有机污染物
- 开发手机APP替代物理按键
电源管理特别建议:
- 待机模式下关闭传感器供电(电流从85mA降至12mA)
- 使用TIMER唤醒替代轮询检测
- 优化PWM频率减少可闻噪声
这个项目最让我意外的是HEPA滤网的衰减速度——在PM2.5>150的重污染天气下,建议每两周检查一次滤网状态。下次迭代我会考虑增加压差传感器来智能检测滤网寿命。
