一、功能简介
项目名:基于云服务的家庭远程监测系统设计
项目编号:dz-960
单片机类型:STM32F103C8T6
具体功能:
1、监测到人且密码正确进行开锁;
1、通过光照监测模块监测当前环境的光照,监测到光照小于最小值自动关窗帘,监测到光照大于最小值自动开窗帘;
2、通过DHT11监测当前环境的温湿度,监测到温度或者湿度大于最大值自动控制通风打开,监测到湿度小于最小值自动控制加湿器打开;
3、通过GP2Y10监测当前环境的粉尘浓度,监测到粉尘大于最大值自动控制通风打开;
4、通过语音识别可以控制门开关、窗帘开关、风扇、除湿;
5、通过按键可以设置参数阈值、控制外设开关;
6、通过OLED显示测试的数据和设置的阈值、模式切换;
8、通过WiFi模块将数据上传到阿里云,手机可以远程设置参数、控制外设。
二、系统框图设计
绘制软件:VISIO
此次设计是基于STM32F103C8T6单片机的云服务家庭远程监控系统设计;该设计主要可以分为三部分:输入、输出和中控。中控部分采用STM32F103C8T6单片机作为主控芯片,主要是对输入进行处理然后控制输出;
输入又可以分为七部分:第一部分是温度检测模块DHT11,通过DHT11获取湿度值;第二部分是PM2.5粉尘监测模块,通过该模块获取当前环境的粉尘含量;第三部分是光照检测模块,由此模块可以检测当前环境的照明度。第四部分是语言识别模块,语音识别可以通过人工唤醒小智助手进行改变继电器工作状态。第五部分是人体热释电感应模块,通过该模块检测附近是否有人;第六部分是按键模块,通过按键可以设置阈值以及控制继电器的开关;第七部分是供电电路,主要是用来对整个系统进行供电;
输出主要可以分为五个部分:第一部分是显示部分,显示当前温度,湿度,环境粉尘度,照明度,窗帘加湿和风扇的工作状态;第二部分是门锁继电器模块,该模块用于门锁,输入正确的密码进行开门。第三部分是步进电机模块,该模块用于模拟窗帘,查看窗帘的工作状态。第四部分是通风继电器模块,该模块用于当测量值超过设定的阈值时进行通风。第五部分是加湿继电器模块,用于在湿度小于最小值是进行加湿。
除此之外WIFI模块即使输入也是输出,WIFI模块还可以通过手机端app来检测到当前的温湿度,环境粉尘度,照明度,窗帘加湿和风扇的工作状态还可以设置阈值还可以控制继电器的开关。
三、32实物图
单片机型号:STM32F103C8T6
板子为绿色PCB板,两层板,厚度1.2,上下覆铜接地。元器件基本上为插针式,个别降压芯片会使用贴片式。
供电接口:TYPE-C
四、原理图
软件版本:AD2013
电路连线方式:网络标号连线方式
注意:原理图只是画出了模块的引脚图,而并不是模块的内部结构原理图
五、PCB图
由原理图导出,封装很大一部分都是作者自己绘制,不提供封装库,只提供连接好的源文件。中间有一个项目编号,隐藏在单片机底座下,插入单片机后不会看到。
两层板,上下覆铜接地。
六、部分程序展示
软件版本:keil5
逻辑程序和驱动程序分开,分布于main.c和其他.c文件
/********************************** 函数名:显示函数 传参值:无 返回值:无 **********************************/ void Display_Function(void) { if(time_num % 10 == 0) { if(flag_mode == 4) { sprintf(display_buf,"T:%d.%dC ",temp_value/10,temp_value%10); //显示温度值 Oled_ShowString(1,0, display_buf); sprintf(display_buf,"H:%d.%d%% ",humi_value/10,humi_value%10); //显示湿度值 Oled_ShowString(1,8, display_buf); Oled_ShowCHinese(2,0,"光照:"); sprintf(display_buf,"%dLux ",light_value); //显示光照值 Oled_ShowString(2,6, display_buf); sprintf(display_buf,"PM2.5:%dmg/m3 ",pm25_value); //显示PM2.5测量值 Oled_ShowString(3,0,display_buf);