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

2024-06-07 10:28

本文主要是介绍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);}

六、实验效果 

七、资料内容

项目分享

这篇关于STM32项目分享:智能家居安防系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1038915

相关文章

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

OpenCV在Java中的完整集成指南分享

《OpenCV在Java中的完整集成指南分享》本文详解了在Java中集成OpenCV的方法,涵盖jar包导入、dll配置、JNI路径设置及跨平台兼容性处理,提供了图像处理、特征检测、实时视频分析等应用... 目录1. OpenCV简介与应用领域1.1 OpenCV的诞生与发展1.2 OpenCV的应用领域2

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon