基于51单片机环境监测设计 光照 PM2.5粉尘 温湿度 2.4G无线通信
1、系统功能介绍
- 1.设计采用2.4G的NRF24L01无线模块实现无线通信。
- 2.设计采用温湿度传感器DHT11完成温湿度的采集。
- 3.设计采用PM2.5传感器GP2Y1050AU0F(或可互换型号)粉尘参数的采集。
- 4.光强传感器BH1750FVI(或可互换型号)完成环境光照强度参数的采集。
- 5.按键可设置温湿度上下限报警值、PM2.5上限报警值,蜂鸣器报警、LED报警提示。
- 6.按键可设置日期时间参数。
- 7.按设置键进入设置功能,再按加减按键设置对应参数,按设置按键切换设置项。
- 8.设计采用LCD12864液晶中文显示,各项监测值均在液晶上直观显示。
2、演示视频
- 演示视频:https://www.bilibili.com/video/BV1ay411b7Cj
- 资料在视频简介中获取
3、系统框图
4、系统电路介绍
4.1、51单片机最小系统设计
- 单片机的最小系统是指能够让单片机正常运行并发挥其作用的最小硬件电路。51单片机的最小系统电路由单片机、复位电路与震荡电路构成。
- 51单片机最小系统电路图如下图所示
4.2、PM2.5 粉尘 灰尘传感器电路设计
- 灰尘传感器可以对1微米以上的灰尘进行检测并通过输出电压的方式对数据进行采集。本系统使用灰尘传感器对室内PM2.5进行监测。
- 电路原理图如下图所示:
4.3、DHT11温湿度传感器电路设计
-
温湿度传感器DHT11的成本很低,并且温湿度传感DHT11比较稳定可靠,主要用于检测室内等环境温度与湿度。该传感器实物共有三个引脚,分别为VCC、GND、DAT,与主控单片机I/O口进行连接,方便操作。
-
dht11电路设计如下图所示:
-
实物图如下图所示:
4.4、BH1750(GY-30)光照传感器电路设计
-
本系统采用GY-30光照传感器,是一种很常用的光照强度检测模块,传感器内部自带模数转换电路,将模拟信号转化为数字信号,并且可以直接数字输出。
-
电路原理图如下图所示:
-
实物图
4.5、NRF24L01无线传输模块电路设计
-
本设计的无线通信采用NRF24L01模块,该模块采用5V/3.3V单电源供电,与外部采用SPI进行连接。
-
电路原理图如下图所示:
-
实物图
5、程序设计
5.1、LCD12864屏幕初始化
void LCD_init(void)
{
LCD_write_com(0x30); //选择基本指令集
LCD_write_com(0x0c); //开显示,无游标,不反白
LCD_write_com(0x01); //清除显示屏幕,把DDRAM位址计数器调整为00H
Delay_nms(5); //清屏操作时间较长1.6ms 因此加此延时
LCD_write_com(0x02); //清DDRAM位址归位,此处貌似与清屏重复
LCD_write_com(0x06); //设定光标右移,整体显示不移动
}
5.2、串口初始化
void InitUART(unsigned long baud)
{
SCON = 0x50; //8位数据,可变波特率
PCON |= 0x80; //使能波特率倍速位SMOD
TMOD &= 0x0F; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TH1 = TL1 = 256 - FOSC/12/16/baud;
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
EA = 1; //打开总中断
ES = 1; //打开串口中断
}
5.3、DS1302实时时钟初始化
void init_ds1302()
{
ds1302_RST=0;
ds1302_SCLK=0;
//write_data_ds1302(0x8e,0x00);
//write_data_ds1302(0x80,0x00); //向DS1302内写秒寄存器80H写入初始秒数据00
//write_data_ds1302(0x82,0x00);//向DS1302内写分寄存器82H写入初始分数据00
//write_data_ds1302(0x84,0x08);//向DS1302内写小时寄存器84H写入初始小时数据12
//write_data_ds1302(0x8a,0x04);//向DS1302内写周寄存器8aH写入初始周数据4
//write_data_ds1302(0x86,0x07);//向DS1302内写日期寄存器86H写入初始日期数据07
//write_data_ds1302(0x88,0x01);//向DS1302内写月份寄存器88H写入初始月份数据01
//write_data_ds1302(0x8c,0x10);//向DS1302内写年份寄存器8cH写入初始年份数据10
write_data_ds1302(0x8e,0x80);
// write_data_ds1302(0x90,0xa5);//打开充电二级管 一个二级管串联一个2K电阻
}
6、资料下载
- 演示视频:https://www.bilibili.com/video/BV1ay411b7Cj
- 资料在视频简介中获取