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

目录

一、前言

二、项目简介

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);
  }

六、实验效果 

七、资料内容

项目分享

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据分析基础】实验numpy、pandas和matplolib

文件score.xlsx 中存放了学生的各个科目的考试成绩&#xff08;如下图&#xff09;&#xff0c; 1. 编程实现&#xff1a;输入任意一个学号&#xff0c;将该学号对应的成绩&#xff0c;通过雷达图显示。 &#xff08;1&#xff09;程序代码&#xff1a; import pandas as pd…

9.1 Go 接口的定义

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

JavaScript 动态网页实例 —— 图像显示

图像是网页设计中必不可少的内容之一,而图像的显示方式更是关系到网站的第一印象。本章介绍图像的显示,主要包括:图片的随机显示、图像的显示和隐藏、图像的滚动显示、图像的探照灯扫描显示、多幅图像的翻页显示、图像的水纹效果显示、全景图效果显示手电照射效果显示以及雷达…

16_ Vue.js高级指南:条件渲染、列表渲染与数据双向绑定

文章目录 1. 条件渲染v-if2. 列表渲染v-for3. 数据双项绑定v-model4. 计算属性Appendix 1. 条件渲染v-if v-if标签直接接收函数或boolean类型变量 v-if 为true&#xff0c;则当前元素会进入到dom树v-else会自动执行 前方v-if的取反操作 v-show v-show值为true则值展示值不展示…

【Python】解决Python报错:TypeError: ‘int‘ object is not callable

​​​​ 文章目录 引言1. 错误详解2. 常见的出错场景2.1 误用变量名2.2 混淆函数与结果 3. 解决方案3.1 明确变量类型3.2 使用函数调用() 4. 预防措施4.1 代码审查4.2 单元测试 结语 引言 在Python开发中&#xff0c;TypeError 是一种常见的错误类型&#xff0c;尤其是在尝试…

kafka-重试和死信主题(SpringBoot整合Kafka)

文章目录 1、重试和死信主题2、死信队列3、代码演示3.1、appication.yml3.2、引入spring-kafka依赖3.3、创建SpringBoot启动类3.4、创建生产者发送消息3.5、创建消费者消费消息 1、重试和死信主题 kafka默认支持重试和死信主题 重试主题&#xff1a;当消费者消费消息异常时&…

C++基础7:STL六大组件

目录 一、标准容器 1、顺序容器 vector ​编辑 deque list 容器适配器 stack queue prority_queue: 关联容器 有序关联容器set、mutiset、map、mutimap 增删查O(log n) 无序关联容 unordered_set、unordered_mutiset、unordered_map、unordered_mutimap 增删…

C语言实现map数据结构 key—value对应

1.首先43行 createKeyValuePair(char*key ,int value)这个函数就是给一个keyValuePair *pair的指针来通过内存分配将数据key和value存入这个pair指针所对应的内存空间 2.52行freeKeyValuePair这个函数是释放内存空间 3.头文件 struct结构体KeyValuePair就是一个指针一个值 4…

个人博客的未来出路在哪里?

说起个人博客的未来这就是个悲伤的话题,估计不少个人博客站长们都在苦苦的坚持和挣扎着吧,反正明月这两年感受最深刻的就是又有不少个人博客站点停更和 404 了都。自从坚持写博客这近十来年这种情况也都见怪不怪了,但这两年最突出的就是很多站长都是迷茫和悲观。 明月去年在…

Vue CLI 环境变量使用指南

一、简介 Vue CLI 是一个强大的前端工程化工具&#xff0c;它提供了丰富的配置选项&#xff0c;包括环境变量的管理。环境变量允许开发者根据不同的运行环境&#xff08;如开发、测试和生产&#xff09;应用不同的配置&#xff0c;而无需更改代码。本文将详细介绍如何在 Vue C…

AI图书推荐:用ChatGPT来写非虚构类书籍

这本书《用ChatGPT来写非虚构类书籍 》&#xff08;ChatGPT For KDP_ A manual from an experienced self-publisher to nonfiction authors for writing the book you were born to write with ChatGPT prompts mastering&#xff09;是一本专为非虚构类书籍作者编写的指南&am…

英伟达黄仁勋最新主题演讲:“机器人时代“已经到来

6月2日&#xff0c;英伟达联合创始人兼首席执行官黄仁勋在Computex 2024&#xff08;2024台北国际电脑展&#xff09;上发表主题演讲&#xff0c;分享了人工智能时代如何助推全球新产业革命。 黄仁勋表示&#xff0c;机器人时代已经到来&#xff0c;将来所有移动的物体都将实现…

[职场] 美术学就业方向和前景 #经验分享#学习方法

美术学就业方向和前景 2011年国务院学位委员会、教育部颁布了新的《学位授予和人才培养学科目录》&#xff0c;艺术学首次从文学门类中独立出来&#xff0c;成为新的第13个学科门类&#xff0c;即艺术学门类。其中&#xff0c;美术学又是艺术学门类下的五个一级学科之一。但是…

微信小程序开发,引用Vant Weapp UI样式,报错“没有找到可以构建的 NPM 包……”

文章目录 1.安装 Vant Weapp 的步骤2.常见问题 1.安装 Vant Weapp 的步骤 npm 安装 Vant Weapp修改 app.json构建 npm 包引入组件验证 npm 安装 Vant Weapp npm i vant/weapp -S --production修改 app.json 将 app.json 中的 “style”: “v2” 去除&#xff0c;小程序的新…

【数据分享】《中国文化文物与旅游统计年鉴》2022

最近老有同学过来询问《中国旅游年鉴》、《中国文化文物统计年鉴》、《中国文化和旅游统计年鉴》、《中国文化文物与旅游统计年鉴》&#xff0c;这四本年年鉴的关系以及怎么获取这四本年鉴。今天就在这里给大家分享一下这四本年鉴的具体情况。 实际上2018年&#xff0c;为适应…

mac无法读取windows分区怎么办 苹果硬盘怎么读取

对于Mac电脑用户但有Windows系统使用需求的&#xff0c;我们可以通过Boot Camp启动转换助理安装Windows分区这个方案来解决&#xff0c;不过因为两个系统的磁盘格式不同&#xff0c;相应的也会产生一些问题&#xff0c;例如无法正常读取windows分区。下面本文就详细说明mac无法…

阿里云(域名解析) certbot 证书配置

1、安装 certbot ubuntu 系统&#xff1a; sudo apt install certbot 2、申请certbot 域名证书&#xff0c;如申请二级域名aa.example.com 的ssl证书&#xff0c;同时需要让 bb.aa.example.com 也可以使用此证书 1、命令&#xff1a;sudo certbot certonly -d “域名” -d “…

【计算机毕业设计】基于SSM++jsp的在线医疗服务系统【源码+lw+部署文档】

包含论文源码的压缩包较大&#xff0c;请私信或者加我的绿色小软件获取 免责声明&#xff1a;资料部分来源于合法的互联网渠道收集和整理&#xff0c;部分自己学习积累成果&#xff0c;供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者…

【AIGC+CAD】革新建筑、室内设计与建模领域的GenAI产品

一、产品定位 Augrade,一款专为建筑、室内设计和建模行业打造的AI CAD自动化工具。它凭借先进的AI技术,将2D蓝图迅速转化为精确的3D CAD模型,同时提供设计、成本分析的自动化以及全面的文档生成服务。Augrade致力于简化设计流程,确保技术可行性,并促进跨团队、跨工具的协…

怎么把m4a转换成mp3?四种常见的转换方法介绍!

怎么把m4a转换成mp3&#xff1f;在处理m4a音频文件时&#xff0c;我们可能会遇到一系列复杂的问题&#xff0c;首先&#xff0c;考虑到m4a是一种相对较新的音频格式&#xff0c;老旧的设备或软件可能无法准确识别它&#xff0c;这可能导致用户无法在这些设备上播放或编辑m4a文件…