当前位置: 首页 > news >正文

基于51单片机环境监测设计 光照 PM2.5粉尘 温湿度 2.4G无线通信

1 系统功能介绍

本设计是一套 基于51单片机的环境监测系统,能够实时采集环境光照、PM2.5、温湿度等参数,并通过 2.4G无线模块 NRF24L01 实现数据传输。系统具备本地显示与报警功能,可通过按键设置各类阈值和时间,方便用户进行环境管理与监控。系统综合应用了传感器技术、无线通信技术和液晶显示技术,适用于家庭、办公室以及小型公共场所的环境监控。

系统主要功能包括:

  1. 温湿度监测功能:通过 DHT11 传感器采集环境温度和湿度值,并在 LCD12864 上显示。
  2. 粉尘浓度检测功能:利用 GP2Y1050AU0F PM2.5 传感器实时采集空气粉尘浓度,显示在液晶屏上,同时支持超标报警。
  3. 光照强度监测功能:采用 BH1750FVI 光强传感器获取环境光照强度,并直观显示在 LCD12864 上。
  4. 无线通信功能:系统通过 NRF24L01 模块实现与远端主控系统的数据通信,可上传实时监测数据,便于远程管理。
  5. 阈值报警功能:通过按键设置温湿度上下限和 PM2.5 上限,当测量值超出设定范围时,蜂鸣器报警并 LED 指示灯点亮提示。
  6. 时间与日期设置功能:用户可通过按键调整系统时间和日期,确保数据记录准确。
  7. 人机交互功能:采用 LCD12864 显示中文信息,清晰显示各项监测数据,并配合按键实现参数设置,操作直观方便。

该系统将传感器数据采集、无线通信、数据显示和报警控制结合在一起,实现了环境监测的智能化和远程管理能力。


2 系统电路设计

本系统由多个功能模块组成,各模块相互协作,完成数据采集、处理、显示、报警和无线通信。以下对每个模块进行详细介绍。

2.1 单片机最小系统

  • 核心芯片:STC89C52 单片机,基于 8051 内核,具有丰富的 I/O 口和定时器资源。

  • 功能

    • 接收来自各类传感器的数据信号;
    • 执行阈值判断、报警逻辑以及无线数据发送;
    • 驱动 LCD12864 显示监测数据和设置界面;
    • 控制蜂鸣器和 LED 指示灯。
  • 设计要点

    • 外接晶振电路,保证单片机稳定运行;
    • 上电复位电路确保系统可靠启动。

2.2 LCD12864 液晶显示模块

  • 功能:以中文形式显示环境监测数据,包括温度、湿度、PM2.5、光照强度、时间及日期等信息。

  • 显示设计

    • 第一屏显示温湿度及其上下限;
    • 第二屏显示 PM2.5 浓度及光照强度;
    • 可动态切换显示设置界面。
  • 电路特性

    • 采用 8 位并口与单片机通信;
    • 外接电位器调节对比度。

2.3 温湿度传感器 DHT11

  • 功能:采集环境温度和湿度。

  • 接口:单线接口,单片机通过定时读取数据。

  • 设计注意

    • 添加上拉电阻保证数据传输稳定;
    • 采集周期根据应用需求设置,一般 2 秒更新一次。

2.4 PM2.5 粉尘传感器 GP2Y1050AU0F

  • 功能:采集空气中粉尘浓度,并输出模拟电压。

  • 电路设计

    • 通过单片机的 ADC 输入读取电压值;
    • 采用稳压电源和滤波电路提高信号精度。
  • 注意事项:在使用过程中需要定时清理传感器入口,确保数据准确。

2.5 光照传感器 BH1750FVI

  • 功能:检测环境光照强度(单位 lux)。

  • 接口:I2C 总线与单片机通信,节省 I/O 资源。

  • 电路设计

    • SDA 和 SCL 通过上拉电阻接 VCC;
    • 稳定电源供电,避免光照值测量波动。

2.6 按键模块

  • 功能:用于设置温湿度上下限、PM2.5 上限、日期时间等参数。

  • 设计方式

    • 多按键组合实现加、减、确认、切换功能;
    • 单片机内部上拉电阻,按键按下输入低电平;
    • 软件防抖处理确保稳定操作。

2.7 蜂鸣器与 LED 报警模块

  • 蜂鸣器功能:超标报警提示。

  • LED 功能:超标时点亮,提供直观指示。

  • 电路设计

    • 蜂鸣器为有源类型,由单片机 I/O 口驱动;
    • LED 通过限流电阻连接,保证安全工作电流。

2.8 NRF24L01 无线模块

  • 功能:实现 2.4G 无线数据传输,发送环境数据到远端接收端。

  • 接口:SPI 总线,与单片机通信。

  • 设计要点

    • 电源要求稳定 3.3V,防止模块重启;
    • 天线方向对准远端接收器,保证通信距离与稳定性;
    • 需要对通信地址和频道进行配置,避免干扰。

3 程序设计

系统程序采用模块化设计,主要包括初始化、数据采集、显示、按键处理、阈值判断、报警控制和无线通信等模块。

3.1 系统初始化

#include <reg52.h>
#include "lcd12864.h"
#include "dht11.h"
#include "bh1750.h"
#include "pm25.h"
#include "nrf24l01.h"unsigned int temp, hum; 
unsigned int pm25_value;
unsigned int lux;
unsigned int temp_upper=30, temp_lower=20;
unsigned int hum_upper=70, hum_lower=40;
unsigned int pm25_upper=150;void System_Init(void){LCD12864_Init();DHT11_Init();BH1750_Init();PM25_Init();NRF24L01_Init();LCD12864_ShowString(0,0,"Env Monitor Init...");
}

3.2 温湿度采集模块

void Read_TempHum(void){DHT11_Read(&temp,&hum);
}

3.3 PM2.5 采集模块

void Read_PM25(void){pm25_value = PM25_Read();
}

3.4 光照采集模块

void Read_Light(void){lux = BH1750_Read();
}

3.5 LCD 显示模块

void Display_Data(void){LCD12864_Clear();LCD12864_ShowString(0,0,"Temp:");LCD12864_ShowNum(6,0,temp,2);LCD12864_ShowString(10,0,"C");LCD12864_ShowString(0,1,"Hum:");LCD12864_ShowNum(4,1,hum,2);LCD12864_ShowString(8,1,"%");LCD12864_ShowString(0,2,"PM2.5:");LCD12864_ShowNum(6,2,pm25_value,3);LCD12864_ShowString(0,3,"Light:");LCD12864_ShowNum(6,3,lux,4);
}

3.6 按键设置模块

void Key_Scan(void){if(KEY_SET == 0){// 进入设置模式}if(KEY_ADD == 0){// 增加当前参数}if(KEY_SUB == 0){// 减少当前参数}
}

3.7 阈值判断与报警模块

sbit BEEP = P2^0;
sbit LED = P2^1;void Alarm_Control(void){if(temp>temp_upper || temp<temp_lower || hum>hum_upper || hum<hum_lower || pm25_value>pm25_upper){BEEP=0; // 报警LED=0;} else {BEEP=1;LED=1;}
}

3.8 NRF24L01 数据传输模块

void Wireless_Upload(void){char buf[32];sprintf(buf,"T:%d,H:%d,PM:%d,L:%d",temp,hum,pm25_value,lux);NRF24L01_Send(buf);
}

3.9 主

http://www.dtcms.com/a/357363.html

相关文章:

  • 「LangChain 学习笔记」LangChain大模型应用开发:代理 (Agent)
  • 【基础知识】互斥锁、读写锁、自旋锁的区别
  • 预制菜餐厅:工业化与温度餐平衡术
  • 软件测试(四):等价类和判定表
  • AI Agent(人工智能代理)当前人工智能领域最炙手可热的概念之一,需要你来了解
  • Flowchart 教程文档
  • 程序员之电工基础-CV程序解决目标检测
  • Dify 从入门到精通(第 63/100 篇):Dify 的多语言支持(进阶篇)
  • 基于MATLAB的三维TDOA定位算法仿真实现
  • Rspack
  • 软件安装教程(二):Pycharm安装与配置(Windows)
  • Redis与MySQL数据不一致问题
  • python 转偶数
  • 【开题答辩全过程】以 基于JSP的养生网站系统为例,包含答辩的问题和答案
  • vue3的pinia
  • 基于51单片机的简易逻辑分析仪设计
  • C# NET5.0及以上版本中如何处理MySQL大数据查询
  • 49_基于深度学习的课堂行为检测识别系统(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)
  • 微功耗遥测终端机在城市管网压力/流量监测中的应用
  • Ventoy中文版:新一代多系统启动U盘解决方案
  • 【线性代数入门 | 那忘算8】洛谷P3389 高斯消元(内附行列式教学)
  • t-sql和sql的有哪些区别和联系
  • Linux中的IP命令详解
  • uac播放与录制
  • 音乐云测试报告
  • JavaSE-什么是语法糖
  • 入职体检肌酐偏高 尿蛋白偏高
  • 软件工程师的机械原理基础知识
  • 基于Spring Boot的短信平台平滑切换设计方案
  • 理想汽车智驾方案介绍专题 3 MoE+Sparse Attention 高效结构解析