STM32项目分享:智能家居安防系统

news2024/10/7 10:16:48

目录

一、前言

二、项目简介

1.功能详解

2.主要器件

三、原理图设计

四、PCB硬件设计

1.PCB图 

2.PCB板及元器件图

五、程序设计 

六、实验效果 

七、资料内容

项目分享


一、前言

项目成品图片:

哔哩哔哩视频链接:

https://www.bilibili.com/video/BV1Y64y1P7ti/?share_source=copy_web&vd_source=097fdeaf6b6ecfed8a9ff7119c32faf2

(资料分享见文末) 

二、项目简介

1.功能详解

基于STM32的智能家居安防系统

功能如下:

  1. 密码锁:通过1×4键盘输入开机密码
  2. 采集温湿度:系统通过DHT11模块采集温湿度
  3. 煤气泄漏报警:通过MQ-7一氧化碳传感器判断室内危险气体是否超标
  4. 火灾报警:通过火焰传感器判断室内是否着火
  5. 门磁防盗报警:通过门磁开关判断室内是否有人闯入
  6. 远程照明控制:系统可远程控制LED灯开关
  7. 实时时钟显示:实时时间(年月日周时分秒)显示
  8. OLED显示:显示温湿度、时间、日期、报警信息等等
  9. 蜂鸣器报警:危险情况下本地蜂鸣器触发报警
  10. WIFI通信:使用ESP8266等进行WiFi远程通信
  11. APP功能:手机APP包括功能有修改系统时间、显示当前温湿度信息、显示危险情况报警信息、控制照明灯开关

2.主要器件

  • STM32F103C8T6最小系统板
  • DHT11温湿度传感器
  • OLED显示屏(7针SPI协议)
  • WiFi模块(ESP8266-01s)
  • MQ-7一氧化碳传感器
  • 门磁模块
  • 1×4矩阵键盘
  • DS1302时钟模块
  • 火焰传感器
  • 蜂鸣器
  • LED灯

三、原理图设计

四、PCB硬件设计

1.PCB图 

2.PCB板及元器件图

五、程序设计 

int main(void)
{
  HAL_Init();
  SystemClock_Config();
  HAL_Delay(90);
  MX_GPIO_Init();
  MX_USART1_UART_Init();//串口1初始化
  OLED_Init();//oled初始化  
  OLED_Clear(); //清屏
  DHT_Init();
  ds1302_init();//RTC初始化
  DS1302_WriteTime();		
  buzz_init();//蜂鸣器
  ir_init();//火焰
  mq2_init();//煤气
  butt_init();//按键
  fan_init();//风扇
  for(int i=0;i<10;i++)
  {
      LEDON;
      HAL_Delay(100);
      LEDOFF;
      delay_us(1000);
  }
  showbegin();//开机动画
  delay_us(10);
  while (1)
  {
	  if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0) == 0 || HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1) == 0 || HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_15) == 1)//进入警报模式
	  {
		  if(jingbflag)
		  {
		      jingbao =1;//警报开启
		      if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0) == 0)//火灾警报
		      {
			      huo = 22;//火焰状态着火
		          HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_SET);
		          OLED_Clear();
		          OLED_ShowCHinese(47,0,10);
		          OLED_ShowCHinese(64,0,11);		  
		          OLED_ShowCHinese(0,2,21);
		          OLED_ShowCHinese(17,2,22);
		          OLED_ShowCHinese(34,2,23);  
		          showhuo();//显示火灾图片
		      }
		      else//火焰状态正常
		      {
			      huo = 11;
		      }
			  if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1) == 0)//煤气报警
		      {
			      mei = 22;
			      HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_SET);
                  HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_SET);
		          OLED_Clear();
			      OLED_ShowCHinese(24,0,10);//显示文字
			      OLED_ShowCHinese(41,0,11);
		          OLED_ShowCHinese(0,2,49);
			      OLED_ShowCHinese(17,2,50);//
			      OLED_ShowCHinese(34,2,51);//
			      OLED_ShowCHinese(51,2,52);//
			      showmei();//显示泄漏图片
		      }
		      else
		      {
			      mei = 11;
		      }
		      if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_15) == 1)//防盗警报
		      {
			      ren =22;
			      HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_SET);
		  	      OLED_Clear();
			      OLED_ShowCHinese(24,0,10);
			      OLED_ShowCHinese(41,0,11);//显示汉字
			      OLED_ShowCHinese(0,2,12);
			      OLED_ShowCHinese(17,2,13);//
			      OLED_ShowCHinese(34,2,14);//
			      OLED_ShowCHinese(51,2,15);//
		          showman();//显示防盗图片
		      }
		      else
		      {
			      ren =11;
		      }
	      }
	  }
	  else//正常模式
	  {
		  huo = 11;
		  mei = 11;
		  ren = 11;
		  if(jingbao == 1)
		  {
			  OLED_Clear();
			  jingbao = 0;//警报解除
		  }
		  HAL_GPIO_WritePin(GPIOA,GPIO_PIN_7,GPIO_PIN_RESET);
          HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PIN_RESET);
		  DHT_ReadData();
          OLED_ShowCHinese(0,6,7);//显示温度汉字
		  OLED_ShowCHinese(15,6,8);
		  OLED_ShowChar(28,6,':');
		  OLED_ShowCHinese(68,6,9);//显示湿度汉字
		  OLED_ShowCHinese(83,6,8);
		  OLED_ShowChar(96,6,':');
	  	  OLED_ShowNum(35,6,DHT_data[2],2,16);//显示温度数值
		  OLED_ShowCHinese(50,6,48);
		  OLED_ShowChar(57,6,'C');
		  OLED_ShowNum(104,6,DHT_data[0],2,16);//显示湿度数值
          OLED_ShowChar(121,6,'%');
          showtime(); 
      }
      int num = search(rxdata,18,'Z');
      if(num!=-1)
      {
          rxok = 1;
          int begin = 0;
          for(int i=0;i<18;i++)
          {
              if(num<18)
              {
                  rx_normal_data[i]=rxdata[num++];
              }
              else
              {
                  rx_normal_data[i]=rxdata[begin++];
              }
          }
      }
      sprintf(senddata,"%d-%d-%d-%d-%d",DHT_data[2],DHT_data[0],huo,mei,ren);//将温度数值。湿度数值。火灾状态、煤气、防盗、整合到数组
      AL_UART_Transmit_IT(&huart1,"AT+CIPSEND=0,14\r\n",sizeof("AT+CIPSEND=0,14\r\n"));//发送初始化
      HAL_Delay(300);
      HAL_UART_Transmit_IT(&huart1,senddata,14);//启动发送向手机发送数据
      HAL_Delay(500);
  }

六、实验效果 

七、资料内容

项目分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1797469.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

倩女幽魂游戏攻略:24小时辅助云手机选哪家好?

在《倩女幽魂》中&#xff0c;玩家经常需要长时间挂机以完成任务和提升等级。选择合适的云手机软件可以大大提升游戏效率。以下是选择VMOS云手机作为挂机软件的几个理由&#xff1a; 多开应用支持 VMOS云手机允许用户在虚拟环境中同时运行多个应用程序&#xff0c;这包括多个…

MyBatis总结(2)- MyBatis实现原理(一)

Mybatis实现原理&#xff1a; 概括一句话&#xff1a;约定配置参数mybatis-config.xml&#xff0c;映射关系JavaBean-mapper.xml&#xff0c;用SqlSessionFactoryBuilder构建应用程序运行期间需要的SqlSessionFactory实例对象&#xff0c;当请求或方法需要执行CURD操作时&…

3DGS语义分割之LangSplat

LangSplat是CVPR2024的paper. 实现3DGS的语义分割&#xff08;可文本检索语义&#xff09; github: https://github.com/minghanqin/LangSplat?tabreadme-ov-file 主要思想是在3DGS中加入了CLIP的降维语义特征&#xff0c;可用文本检索目标&#xff0c;实现分割。 配置环境&…

[office] Excel数据透视表有什么用途?Excel数据透视表怎么做? #学习方法#职场发展

Excel数据透视表有什么用途&#xff1f;Excel数据透视表怎么做&#xff1f; Excel数据透视表是一种数据汇总手段&#xff0c;如果表格内的数据太多&#xff0c;单靠肉眼是很难准确分辨数据的&#xff0c;而使用数据透视表&#xff0c;就可以很方便的筛选各种数据。如果你不知道…

什么是广告联盟变现

广告联盟变现&#xff0c;作为一种连接广告主与各类媒体平台的机制&#xff0c;正展现出强大的生命力和影响力。它为拥有流量资源的一方提供了将其转化为实际经济收益的有效途径。通过广告联盟&#xff0c;媒体平台可以与众多广告主建立合作关系&#xff0c;获取多样化的广告内…

基于STM32开发的智能停车场管理系统

目录 引言环境准备智能停车场管理系统基础代码实现&#xff1a;实现智能停车场管理系统 4.1 车辆检测传感器数据读取4.2 车位状态管理4.3 实时数据监控与分析4.4 用户界面与数据可视化应用场景&#xff1a;停车场管理与优化问题解决方案与优化收尾与总结 1. 引言 随着城市化…

AI日报|文生语音大模型国内外均有突破,Pika完成6亿新融资,视频大模型也不远了!

文章推荐 AI搜索哪家强&#xff1f;16款产品实战测评&#xff0c;效率飙升秘籍&#xff01; AI日报&#xff5c;智谱AI再降价&#xff0c;同时开源9B系列模型&#xff1b;国内外气象大模型竞逐升级 字节推出文本到语音模型家族Seed-TTS&#xff1a;擅长情感表达&#xff0c;…

视觉SLAM十四讲:从理论到实践(Chapter12:建图)

前言 学习笔记&#xff0c;仅供学习&#xff0c;不做商用&#xff0c;如有侵权&#xff0c;联系我删除即可 一、主要目标 1. 理解单目SLAM中稠密深度估计的原理。 2. 通过实验了解单目稠密重建的过程。 3. 了解几种RGB-D重建中的地图形式。 构建的地图也有多种功能分类&…

python的继承

本章正式开始之前&#xff0c;先让我们回顾一下什么是 对象 &#xff1f; 什么是 类 &#xff1f; 小贝 喜欢 猫咪&#xff0c;今年领养了一只名叫 Kitty 的 布偶猫。则下列哪项是 对象 呢&#xff1f;  A. 猫咪 B. Kitty C. 布偶猫 相比之下&#xff0c;闻闻 更喜欢 犬科 动…

鸿蒙全栈开发-基于ARKTS开发之初识框架-app.json5

前言 随着鸿蒙的不断发展,华为自行研制的“鸿蒙系统”横空出世&#xff0c;华为用实力为自己开辟了一个全新的时代&#xff0c;让中国品牌走向世界,并为程序员们带来了新的职业机遇。 这里来跟大家简单的聊一下鸿蒙基于ARKTS开发之初识框架-app.json5 当我们新建一个工程或者…

PICRUSt2在微生物功能预测分析中的应用解读

谷禾健康 微生物组学研究现已超越微生物群落组成分析得到更广泛的使用。大量的人类微生物组研究证据表明&#xff0c;肠道微生物组的功能变化对炎症和免疫反应的影响起到关键的影响作用。 16S rRNA分析是微生物组研究作为最常用便捷且具有成本效益的测量技术&#xff0c;用于分…

Hadoop3:MapReduce工作流程图解

一、流程图 二、流程说明 上面的流程是整个MapReduce最全工作流程&#xff0c;但是Shuffle过程只是从第7步开始到第16步结束&#xff0c;具体Shuffle过程详解&#xff0c;如下&#xff1a; &#xff08;1&#xff09;MapTask收集我们的map()方法输出的kv对&#xff0c;放到内存…

笔记95:车辆横向动力学方程转化为误差形式 -- 详细推导过程

1. 非误差型车辆横向动力学方程 注&#xff1a;关于轮胎侧偏刚度的正负 深蓝课程推导得到的车辆横向动力学返程使用的轮胎侧偏刚度是默认为正数&#xff1b;老王课程推导得到的车辆横向动力学方程使用的轮胎侧偏刚度是默认为负数&#xff1b; 1.1 深蓝课程推导得到的方程&…

工厂生产计划难以执行的真正原因及对策

在制造业中&#xff0c;生产计划的执行对于企业的运营至关重要。然而&#xff0c;许多工厂在生产计划执行过程中面临着诸多挑战&#xff0c;尤其是物料齐套率低的问题。本文将探讨工厂生产计划难以执行的真正原因&#xff0c;并提出相应的解决对策。 一、生产计划难以执行的真…

前端技术探索:从基础到进阶

前端技术作为现代Web开发中不可或缺的一部分&#xff0c;其重要性不言而喻。随着技术的快速发展&#xff0c;前端领域涌现出了许多经典且值得深入探索的技术和框架。本文将带您领略前端技术的魅力&#xff0c;从基础到进阶&#xff0c;一起探讨前端开发的精髓。 一、前端技术基…

顶顶通呼叫中心中间件-如何配置识别不同语种的ASR

文章目录 前言联系我们创建不同语种的语音识别任务开始对接识别不同语种的ASR重启 asrproxy 程序使用识别不同语种的ASR 前言 之前讲过顶顶通的 asrproxy 程序如何对接第三方的ASR&#xff0c;比如&#xff1a;阿里云的ASR。不知道如何对接的&#xff0c;可以参考&#xff1a;…

音视频开发17 FFmpeg 音频解码- 将 aac 解码成 pcm

这一节&#xff0c;接 音视频开发12 FFmpeg 解复用详情分析&#xff0c;前面我们已经对一个 MP4文件&#xff0c;或者 FLV文件&#xff0c;或者TS文件进行了 解复用&#xff0c;解出来的 视频是H264,音频是AAC&#xff0c;那么接下来就要对H264和AAC进行处理&#xff0c;这一节…

HackTheBox-Machines--Aragog

Aragog 测试过程 1 信息收集 NMAP 服务器开启了 21、22、80端口 21 端口测试 首先测试 21 端口&#xff0c;21端口开启了匿名登录 ftp服务器上存在 test.txt 文件&#xff0c;test.txt 文件是 xml 格式。 80 端口测试 echo "10.129.97.250 aragog.htb" | sudo tee…

[office] 如何才能用EXCEL打开dat文件- #微信#学习方法

如何才能用EXCEL打开dat文件? 方法&#xff1a; 1、打开EXCEL软件&#xff1b; 2、文件&#xff0c;打开&#xff0c;选择要转化的DAT文件&#xff1b; 3、在弹出的向导文件&#xff08;步骤1&#xff09;中&#xff0c;选择合适的文件类型&#xff08;按预览选择&#xf…

浏览器中的disable cache对文件下载服务的影响

客户端缓存文件 对于HTTP的文件请求来说&#xff0c;为了保证请求的速度&#xff0c;会使用客户端缓存的机制。比如客户端向服务器端请求一个文件A.txt。服务器在接收到该请求之后会将A.txt文件发送给客户端。 其请求流程如下&#xff1a; 步骤1&#xff1a;客户端请求服务器…