1. 项目概述
这个室内空气质量监控系统是我去年为一个社区养老院做的实际项目。当时院方反映老人们在密闭空调房里经常头晕胸闷,但开窗又怕老人着凉。我们团队用最普通的STC89C52单片机搭配几个常见传感器,花了两周时间就做出了这套成本不到200元的监控方案。
系统核心功能很简单:实时监测室内PM2.5、CO2、温湿度数据,超标自动报警并联动新风系统。别看原理简单,在实际部署时我们踩了不少坑——比如传感器校准偏差、报警阈值设置、防误触设计等,这些实战经验我都会在后续详细说明。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统设计思路
2.1 硬件选型考量
主控选用STC89C52是经过实际对比的。虽然STM32性能更强,但对于这种单一功能场景,8位单片机完全够用,而且开发门槛低,养老院的电工都能看懂原理图。具体硬件配置:
-
传感器阵列:
- PMS5003激光粉尘传感器(测量PM2.5/PM10)
- MH-Z19B红外CO2传感器(误差±50ppm)
- DHT22温湿度传感器(精度±0.5℃)
-
报警模块:
- 有源蜂鸣器(85dB)
- 三色LED指示灯(红/黄/绿)
-
通讯接口:
- ESP8266 WiFi模块(上传数据到云平台)
- 预留RS485接口(兼容老式新风系统)
特别注意:MH-Z19B需要每24小时自动校准一次,我们最初没注意这点,导致第三天气体读数漂移严重。后来在代码里加入了凌晨3点自动校准逻辑。
2.2 软件架构设计
采用前后台系统架构,避免上RTOS增加复杂度。主程序流程图如下:
c复制void main() {
hardware_init();
while(1) {
read_sensors(); // 每2秒采集一次
process_data(); // 滑动平均滤波
display_update();
if(check_alarm()) trigger_alert();
if(cloud_connected) upload_data();
delay(2000);
}
}
数据处理采用滑动窗口平均算法,窗口大小设为5次采样(即10秒数据)。实测发现
