【单片机毕业设计】【mcuclub-dz-875】基于WiFi通信的智能家居系统的设计与实现
本项目设计并实现了一套基于STM32F103C8T6单片机的智能家居系统,通过WiFi实现手机远程监控。系统具备环境监测与自动控制功能:利用DHT11检测温湿度,MQ-135检测空气质量,光照传感器监测光照强度,当检测值超过设定阈值时自动控制风扇、窗帘并触发声光报警。用户可通过按键或手机APP设置参数阈值,OLED显示屏实时显示监测数据。系统采用PCB集成板设计,包含传感器数据采集、处理及执行控制
一、基本介绍
项目名:基于WiFi通信的智能家居系统的设计与实现
项目编号:mcuclub-dz-875
单片机类型:STM32F103C8T6
具体功能:
1、通过DHT11检测当前环境中的温湿度,检测到温度大于最大值或者湿度大于最大值打开风扇;
2、通过MQ-135检测当前环境中的空气质量,检测到空气质量大于最大值,打开风扇,同时声光报警;
3、通过光照检测模块检测当前环境中的光照强度,检测到光照强度小于最小值自动控制窗帘关闭,否则打开;
4、通过按键可以设置温湿度、空气质量最大值、光照最小值,控制风扇和窗帘开关;
5、通过OLED显示屏显示测量值;
6、通过WiFi模块将检测的数据传输到手机端,手机可以设置参数和控制风扇和窗帘开关
二、资料总览
实物资料

三、32单片机部分资料展示
1、实物图展示
单片机型号:STM32F103C8T6
供电接口:TYPE-C
板子类型:PCB集成板,厚度1.2,两层板(上下层覆铜接地)
器件类型:元器件基本上为插针式,个别降压芯片会使用贴片式。
2、仿真图展示

3、原理图展示
软件版本:AD2013
电路连线方式:网络标号连线方式
注意:原理图只是画出了模块的引脚图,而并不是模块的内部结构图
4、PCB图展示
由原理图导出,中间有一个项目编号,隐藏在单片机底座下,插入单片机后不会看到。
两层板,上下覆铜接地。
四、系统框图
绘制软件:VISIO
此次设计是基于STM32F103C8T6单片机的智能家居系统设计;该设计主要可以分为三部分:输入、输出和中控。中控部分采用STM32F103C8T6单片机作为主控芯片,主要是对输入进行处理然后控制输出;输入又可以分为五部分:第一部分是温度检测模块DHT11,通过DHT11获取湿度值;第二部分是空气质量监测模块使用的是MQ-135模块,通过此模块可以监测当前环境中是否有异味;第三部分是光照检测模块,由此模块可以检测当前环境的照明度。第四部分是按键模块,通过按键可以设置阈值以及控制继电器的开关;第五部分是供电电路,主要是用来对整个系统进行供电;输出主要可以分为两个部分:第一部分是显示部分,显示当前温度,湿度,空气质量,照明度,窗帘和风扇的工作状态;除此之外WIFI模块即使输出也是输入可以通过手机端app来检测到当前的温湿度,空气质量,照明度,窗帘和风扇的工作状态还可以设置阈值还可以控制继电器的开关。
五、部分程序展示
软件版本:keil5
注意:逻辑程序和驱动程序分开,分布于main.c和其他.c文件
/**********************************
函数名:处理函数
传参值:无
返回值:无
**********************************/
void Manage_Function(void)
{
if(display_num == 0) //测量界面
{
if(temp_value > temp_max*10 || humi_value > humi_max*10 || C6H6_value > C6H6_max) //温度湿度和异味,大于他们对应的最大值时打开风扇。
{
RELAY_FS = 1;
flag_fs = 0;
}
else
{
if(flag_fs == 0)
{
RELAY_FS = 0;
}
}
if(C6H6_value > C6H6_max) //当MQ-135检测值大于最大值自动控打开风扇和并声光报警
{
if(time_num % 20 == 0)
{
ALERT = !ALERT;
}
}
else //否则关闭声光报警和风扇
{
ALERT = 0;
}
if(light_value < light_min) //当光照小于最小值关窗户
{
if(flag_bujin_state == 1)
{
flag_bujin_reversal = 1;
}
flag_motor = 0;
}
else //否则开窗户
{
if(flag_motor == 0)
{
if(flag_bujin_state == 0)
{
flag_bujin_foreward = 1;
}
}
}
}
else //设置界面,关闭风扇及声光报警
{
RELAY_FS = 0;
ALERT = 0;
}
if(flag_finish_5s == 1) //5秒上传一次数据
{
flag_begin_5s = 0;
Aliyun_Send_Data();
flag_begin_5s = 1;
}
}
更多推荐
所有评论(0)