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

【STM32项目开源】基于STM32的智能家庭安防系统

目录

一、设计背景和意义

1.1设计背景

1.2设计意义

二、实物效果展示

2.1实物图片

2.2实物演示视频

三、硬件功能简介

3.1项目功能详解

3.2元器件清单

四、主框图与软件流程图

五、硬件PCB展示

六、软件程序设计

七、项目资料包内容

         资料获取:查看主页介绍“充哥单片机设计”


一、设计背景和意义

1.1设计背景

        随着科技水平的不断提升,物联网(IoT)技术在家庭生活中的应用逐渐普及,智能家居已从概念阶段走向实际部署阶段。人们在追求居住舒适性的同时,对居家安全提出了更高要求。特别是在城市化加速发展的背景下,家庭火灾、非法入侵等安全隐患频发,传统的安防手段如简单的门锁、机械报警器已难以满足现代家庭在实时监控、远程控制、数据追踪等方面的综合性安全需求。

        目前市面上存在一些较为成熟的商用家庭安防产品,但多数价格较高,功能冗杂或封闭,无法根据用户个性化需求进行灵活定制。同时,这些系统往往依赖厂商的专属平台,扩展性和开发性差,导致二次开发成本高、维护不便,且对普通消费者与开发者不够友好。

1.2设计意义

        在信息化与智能化高速发展的背景下,智能家居系统作为新兴技术的重要应用方向,已经逐渐从概念走向市场落地。特别是在国家推动“智慧城市”“数字家庭”建设的政策导向下,家庭场景中的智能控制、远程监测、安全防护等功能逐步受到人们广泛关注。智能安防作为智能家居的重要子系统,其核心任务是通过多种信息感知技术,对可能出现的火灾、盗窃、非法入侵等安全风险进行自动识别与及时响应,从而保障家庭成员的生命财产安全,提升居住的安全性与便利性。

        从现实角度来看,传统家庭安防手段存在诸多不足,例如反应滞后、手段单一、依赖人工介入,甚至在紧急情况下无法第一时间做出有效应对。而现有的高端智能安防产品虽然功能齐全,但价格昂贵、系统封闭、二次开发困难,对于普通家庭和中小型开发者而言门槛较高。因此,设计一套低成本、可定制、易扩展且功能完备的智能家庭安防系统,具有非常重要的现实意义和市场价值。

二、实物效果展示

2.1实物图片

2.2实物演示视频

【开源】基于STM32的智能家庭安防系统

三、硬件功能简介

3.1项目功能详解

  1. 传感器:烟雾浓度、火情、温湿度、人体红外、门磁
  2. 数据显示:0.96OLED屏幕
  3. 接入云平台:通过ESP8266 WIFI联网后,接入机智云平台
  4. App监控:App远程监控全部传感器数据
  5. 阈值、模式设定:按键或APP设定阈值、切换工作模式
  6. 防盗模式:门磁检测人闯入,人体红外检测人体存在,声光报警
  7. 回家模式:门磁和人体红外将不再检测,不因此报警
  8. 自动模式:检测到烟雾浓度超过阈值声光报警;检测火焰后声光报警,并且开水泵灭火

3.2元器件清单

  1. 主控采用STM32F103C8T6
  2. ESP8266-ESP01S实现联网功能
  3. 0.96OLED显示屏幕
  4. MQ-2烟雾传感器
  5. DHT11温湿度传感器
  6. 火焰传感器
  7. 蜂鸣器神光报警
  8. 门磁防盗检测
  9. 人体红外检测
  10. 继电器+水泵

四、主框图与软件流程图

主框图

流程图

五、硬件PCB展示

六、软件程序设计

#include "stm32f10x.h" 
#include "main.h"   
#include "delay.h"  
#include "usart1.h" 
#include "timer2.h"
#include "dhtll.h"
#include "oled.h"
#include "rtc.h"
#include "adc.h"
#include "key.h" void wifiset(void);
void setzhi(void)
{u8 t=0;	t=KEY_Scan(0);		//得到键值switch(t){				 case KEY0_PRES:keyflag++;if(keyflag>8) keyflag=0;OLED_Clear(); break;case KEY1_PRES:if(keyflag==1) {settemp++;if(settemp>=100)settemp=100;}if(keyflag==2) {sethumi++;if(sethumi>=100)sethumi=100;}if(keyflag==3) {setyw++;if(setyw>=100)setyw=100;}if(keyflag==4) {if(tempKG==22){tempKG=11;}else tempKG=22;}if(keyflag==5) {if(humiKG==22){humiKG=11;}else humiKG=22;}if(keyflag==6) {if(ywKG==22){ywKG=11;}else ywKG=22;}if(keyflag==7){if(hyKG==22){hyKG=11;}else hyKG=22;}if(keyflag==8){if(mcKG==22){mcKG=11;}else mcKG=22;}break;case KEY2_PRES:if(keyflag==1) {settemp--;if(settemp<=1)settemp=1;}if(keyflag==2) {sethumi--;if(sethumi<=1)sethumi=1;}if(keyflag==3) {setyw--;if(setyw<=1)setyw=1;}if(keyflag==4) {if(tempKG==22){tempKG=11;}else tempKG=22;}if(keyflag==5){if(humiKG==22){humiKG=11;}else humiKG=22;}if(keyflag==6){if(ywKG==22){ywKG=11;}else ywKG=22;}if(keyflag==7){if(hyKG==22){hyKG=11;}else hyKG=22;}if(keyflag==8){if(mcKG==22){mcKG=11;}else mcKG=22;}break;default:Delay_Ms(10);	} 
}int main(void) 
{	SystemInit();  //将主频调整到72MNVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);  Delay_Init();                   //延时功能初始化 Delay_Ms(500);	OLED_Init();//oled初始化  OLED_Clear(); while(DHT11_Init())	{Delay_Ms(500);}//检测DS18B20是否纯在ds1302_init();buzz_init();ir_init();mq2_init();butt_init();Adc_Init(); KEY_Init(); Usart2_Init(115200);              //串口1功能初始化,波特率9600TIM2_Init();Isr_Init();wifiinit();showbegin();ds1302_write_time();ds1302_read_time();while(1)                       //主循环{	setzhi();  //设置报警值if(keyflag==0){DHT11_Read_Data(&temp,&humi);YWADC = (Get_Adc_Average(9,10));     //获取计算后的带小数的实际电压值YWADC = (YWADC -600) ;if(YWADC<6) YWADC = 0;YWADC = YWADC /25 ;if(tempKG==11) {if(temp>settemp){WD=11;GPIO_SetBits(GPIOA, GPIO_Pin_7);}}if(humiKG==11) {if(humi>sethumi){SD=11;GPIO_SetBits(GPIOA, GPIO_Pin_7);}}if(temp<=settemp||(tempKG==22)){WD=22;}if(humi<=sethumi||(humiKG==22)){SD=22;}if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_12) != 0 &&       GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11) == 0 && YWADC<=setyw &&	temp<=settemp&&humi<=sethumi) {GPIO_ResetBits(GPIOA, GPIO_Pin_7);}if(((GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_12) == 0)&&(hyKG==11)) || ((GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11) != 0)&&(mcKG==11)) ||((YWADC>setyw)&&(ywKG==11))	){jingbao =1;GPIO_SetBits(GPIOA, GPIO_Pin_7);if((GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_12) == 0)&&(hyKG==11))//火灾{HY=11;OLED_Clear();OLED_ShowCHinese(80,4,14);OLED_ShowCHinese(96,4,15);OLED_ShowCHinese(80,2,22);OLED_ShowCHinese(96,2,23);showhuo();  //显示火灾图片}if((YWADC>setyw)&&(ywKG==11))//烟雾报警{YW=11;OLED_Clear();OLED_ShowCHinese(80,4,14);OLED_ShowCHinese(96,4,15);OLED_ShowCHinese(80,2,17);OLED_ShowCHinese(96,2,18);//showmei();}if((GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11) != 0)&&(mcKG==11))//防盗{MC=11;		OLED_Clear();OLED_ShowCHinese(80,4,14);OLED_ShowCHinese(96,4,15);OLED_ShowCHinese(80,2,3);OLED_ShowCHinese(96,2,21);//showman();}}else{MC=22;YW=22;HY=22;if(jingbao == 1){OLED_Clear();jingbao = 0;}OLED_ShowCHinese(0,2,9);OLED_ShowCHinese(16,2,10);//温度        OLED_ShowChar(32,2,':');OLED_ShowNum(40,2,temp,2,16);OLED_ShowChar(56,2,'C');OLED_ShowCHinese(0,4,11);OLED_ShowCHinese(16,4,10);//湿度OLED_ShowChar(32,4,':');OLED_ShowNum(40,4,humi,2,16);OLED_ShowChar(56,4,'%');OLED_ShowCHinese(0,6,12);OLED_ShowCHinese(16,6,13);//烟雾OLED_ShowChar(32,6,':');OLED_ShowChar(56,6,'%');OLED_ShowNum(40,6,YWADC,2,16);showtime();}wifiset();}}
}

七、项目资料包内容

         资料获取:查看主页介绍“充哥单片机设计”

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

相关文章:

  • Avalonia+ReactiveUI+Sourcegenerators实现异步命令
  • 个人网站建设心得网站开发的数据库设计实体是什么
  • Java的动态绑定机制(重要)
  • 2Docker自定义网络,compose多容器部署
  • Linux内存管理-malloc虚拟内存到物理映射详细分析
  • 桂林网站建设内容大专自考报名入口官网
  • AMS支持的融资业务如何优化风控流程?
  • 小杰深度学习(thirteen)——视觉-经典神经网络——GoogLeNet
  • jtag转swd
  • 多语言支持应用场景实战解析
  • 手机微网站怎么设计方案陕西建省级执法人才库
  • c# 中文数字转阿拉伯数字
  • 如何自定义 Qt 日志处理并记录日志到文件
  • Spring Boot 3零基础教程,类属性绑定配置文件中的值,笔记10
  • TypeScript 基础类型
  • 鸿蒙NEXT Function Flow Runtime Kit:解锁高效并发编程的利器
  • 一个小项目的记录:PHP 分账组件
  • excel-mcp-server rocky linux简单部署
  • 网站前台模块包括什么软件wordpress js放到oss
  • ENET_INIT卡死在DMA_MODE判断
  • 蓝光3D扫描:汽车模具高精度尺寸检测与数字化质量控制实践
  • 一文对最新版本 Flink 反压机制全景深度解析(附源码)
  • 从硅谷到全球:新思科技(Synopsys)的发展史与产业深耕之路
  • 网站建设wang1314公司图案设计
  • 【AES加密专题】7.AES全局函数的编写
  • EPSON TG2016SMN:低功耗温补晶振延长电池设备续航
  • Qt C++ 教程:无边框窗体 + 自定义标题栏 + 圆角 + 拖拽拉升 + 阴影
  • 用 Gradle 实现自动化测试:集成 JUnit、TestNG,生成测试报告
  • 邵阳市住房和建设局网站西安做网站收费价格
  • 【QT界面设计学习篇】qt快速开发技巧