【单片机毕业设计】【mcuclub-dz-857】基于物联网的学生宿舍环境监测系统设计
在这里插入代码片
最近设计了一个项目基于物联网的学生宿舍环境监测系统设计,与大家分享一下:
一、基本介绍
项目名:基于物联网的学生宿舍环境监测系统设计
项目编号:mcuclub-dz-857
单片机类型:STM32F103C8T6
具体功能:
1、通过DHT11检测当前环境的温湿度,温度大于最大值自动开启风扇;
2、通过MQ-2检测当前环境的烟雾,检测到烟雾大于最大值控制水泵进行灭火;
3、通过光照强度检测模块检测当前环境的光照强度,检测到光照小于最小值,自动控制窗帘关闭,检测到人自动控制照明打开,检测到无人自动控制照明灯关闭;
4、通过时间模块获取当前的时间,在熄灯时间内,检测到噪声大于最大值,进行声光报警提醒;
5、通过按键可以设置温度的最大值、烟雾最大值、光照最小值、开关灯时间;
6、通过液晶显示模块显示当前环境监测的参数;
7、通过WiFi模块将监测的数据传输到手机端,手机端可以设置参数、控制风扇、灭火继电器、及其开关灯;
二、32实物图
单片机型号:STM32F103C8T6
板子为绿色PCB板,两层板,厚度1.2,上下覆铜接地。元器件基本上为插针式,个别降压芯片会使用贴片式。
供电接口:TYPE-C

三、原理图
软件版本:AD2013
电路连线方式:网络标号连线方式
注意:原理图只是画出了模块的引脚图,而并不是模块的内部结构原理图

四、PCB图
由原理图导出,封装很大一部分都是作者自己绘制,不提供封装库,只提供连接好的源文件。中间有一个项目编号,隐藏在单片机底座下,插入单片机后不会看到。
两层板,上下覆铜接地。

五、系统框图

本设计以STM32F103C8T6单片机为核心控制器,加上其他的模块一起组成基于物联网的学生宿舍环境监测系统设计系统,其中包含中控部分、输入部分和输出部分。中控部分采用了STM32F103C8T6单片机,其主要作用是获取输入的部分数据,经过内部处理,控制输出部分。输入由七部分组成,第一部分是DHT11检测模块,通过该模块检测环境的温湿度;第二部分是烟雾检测模块,通过该模块检测当前烟雾值;第三部分是光照检测模块,通过该模块可以检测光照值;第四部分是时钟检测模块,通过该模块可以获取时间;第五部分是声音检测模块,通过该模块可以获取噪声值;第六部分是按键模块,通过按键设置温度、烟雾最大值;第七部分是供电模块,通过该模块可给整个系统进行供电。输出由三部分组成,第一部通过OLED显示屏显示数据,显示温湿度、烟雾、光照和当前时间等;第二部分是声光报警模块,在熄灯时间内,检测到噪声大于最大值,进行声光报警提醒;第三部分是继电器控制电路分别控制风扇、水泵、照明灯。除此之外,WIFI模块将检测的数据传输到手机端也可以远程控制继电器的开关,远程设置阈值,系统框图如图3.1所示。
六、软件设计流程

七、部分程序展示
软件版本:keil5
逻辑程序和驱动程序分开,分布于main.c和其他.c文件
/**********************************
函数名:处理函数
传参值:无
返回值:无
**********************************/
void Manage_Function(void)
{
if(display_num == 0) //测量界面
{
if(time_hour_begin*60+time_min_begin > time_hour_end*60+time_min_end) //开始时间 > 结束时间
{
if((time_hour_end*60+time_min_end <= ds1302_buf[4]*60+ds1302_buf[5]) && (ds1302_buf[4]*60+ds1302_buf[5] < time_hour_begin*60+time_min_begin)) //当前时间不在设置的时间内
{
flag_time = 0; //时间外
}
else //否则
{
flag_time = 1; //时间内
}
}
else if(time_hour_begin*60+time_min_begin < time_hour_end*60+time_min_end) //开始时间 < 结束时间
{
if((time_hour_begin*60+time_min_begin <= ds1302_buf[4]*60+ds1302_buf[5]) && (ds1302_buf[4]*60+ds1302_buf[5] < time_hour_end*60+time_min_end)) //当前时间在设置的时间内
{
flag_time = 1; //时间内
}
else //否则
{
flag_time = 0; //时间外
}
}
else //开始时间 = 结束时间
{
flag_time = 0; //时间外
}
if(temp_value > temp_max*10) //温度大于最大值,自动开启风扇
{
RELAY_FS = 1;
flag_fs = 1;
}
else
{
if(flag_fs == 1)
{
RELAY_FS = 0;
}
}
if(smog_value > smog_max) //烟雾大于最大值打开水泵灭火
{
RELAY_BS = 1;
flag_qt = 1;
}
else
{
if(flag_qt == 1)
{
RELAY_BS = 0;
}
}
if(light_value < light_min) //光照小于最小值,窗帘关闭
{
RELAY_CL = 0;
flag_cl = 1;
}
else
{
if(flag_cl == 1)
{
RELAY_CL = 1;
}
}
if(PEOPLE == 0) //有人打开照明灯
{
RELAY_ZM = 1;
flag_zm = 1;
}
else
{
if(flag_zm == 1)
{
RELAY_ZM = 0;
}
}
if(flag_time == 1 && voice_value > voice_max) //时间内噪声大于最大值
{
if(time_num % 20 == 0)
{
ALERT = !ALERT;
}
}
else
{
ALERT = 0;
}
}
else //设置界面,关闭加热、制冷及声光报警
{
RELAY_FS = 0;
RELAY_BS = 0;
RELAY_ZM = 0;
ALERT = 0;
}
if(flag_finish_5s == 1) //5秒上传一次数据
{
flag_begin_5s = 0;
Aliyun_Send_Data();
flag_begin_5s = 1;
}
if(RELAY_CL == 1) //窗户
{
if(flag_bujin_state == 0)
{
flag_bujin_foreward = 1;
}
}
else
{
if(flag_bujin_state == 1)
{
flag_bujin_reversal = 1;
}
}
}
更多推荐
所有评论(0)