1. 项目概述
这个基于单片机的环境监测系统项目,是我去年为某农业大棚设计的实时监控方案。当时农户需要一套能持续监测温湿度、光照和二氧化碳浓度的设备,但市面上的成品要么太贵,要么功能不符合需求。于是我用常见的STC89C52单片机搭配几个传感器,花了三周时间捣鼓出这套成本不到200元的监测系统。
系统每隔10秒采集一次环境数据,通过LCD屏实时显示,同时具备超标报警功能。当温度超过35℃或二氧化碳浓度高于1000ppm时,会触发声光报警。所有数据还会存储在24C02芯片中,最多可以保存7天的历史记录。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件设计与选型
2.1 核心控制器选择
我最终选用STC89C52RC单片机作为主控,主要基于以下几点考虑:
- 8位51内核,完全满足环境监测这类低速数据处理需求
- 自带4KB Flash和512B RAM,足够存储程序和数据
- 支持ISP在线编程,调试方便
- 价格仅5-8元,性价比极高
注意:虽然STM32性能更强,但对于这种简单应用反而会增加开发难度和成本。51单片机足够稳定可靠。
2.2 传感器选型与电路设计
系统使用了四种环境传感器:
- DHT11温湿度传感器:单总线通信,测量范围20-90%RH和0-50℃
- BH1750光照传感器:I2C接口,量程1-65535lux
- MG811二氧化碳传感器:需要配合比较器电路使用
- MQ-135空气质量传感器:检测NH3、NOx等有害气体
传感器电路设计要点:
- DHT11数据线需要接4.7K上拉电阻
- MG811需要LM393比较器进行信号调理
- 所有I2C设备地址不能冲突(BH1750默认地址0x23)
2.3 其他外围设备
- LCD1602显示屏:并行接口,显示实时数据
- 有源蜂鸣器:报警提示,需接三极管驱动
- LED指示灯:系统状态显示
- 24C02 EEPROM:存储历史数据,I2C接口
3. 软件系统设计
3.1 主程序流程图
系统软件采用状态机设计,主要工作流程如下:
- 初始化硬件(定时器、IO口、外设)
- 读取各传感器数据
- 数据有效性校验
- 显示实时数据
- 判断是否超标报警
- 存储数据到
