STM32项目分享:智能家居安防系统
目录
一、前言
二、项目简介
1.功能详解
2.主要器件
三、原理图设计
四、PCB硬件设计
1.PCB图
2.PCB板及元器件图
五、程序设计
六、实验效果
七、资料内容
项目分享
一、前言
项目成品图片:
哔哩哔哩视频链接:
https://www.bilibili.com/video/BV1Y64y1P7ti/?share_source=copy_web&vd_source=097fdeaf6b6ecfed8a9ff7119c32faf2
(资料分享见文末)
二、项目简介
1.功能详解
基于STM32的智能家居安防系统
功能如下:
- 密码锁:通过1×4键盘输入开机密码
- 采集温湿度:系统通过DHT11模块采集温湿度
- 煤气泄漏报警:通过MQ-7一氧化碳传感器判断室内危险气体是否超标
- 火灾报警:通过火焰传感器判断室内是否着火
- 门磁防盗报警:通过门磁开关判断室内是否有人闯入
- 远程照明控制:系统可远程控制LED灯开关
- 实时时钟显示:实时时间(年月日周时分秒)显示
- OLED显示:显示温湿度、时间、日期、报警信息等等
- 蜂鸣器报警:危险情况下本地蜂鸣器触发报警
- WIFI通信:使用ESP8266等进行WiFi远程通信
- 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项目分享:智能家居安防系统
目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 1.PCB图 2.PCB板及元器件图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片: 哔哩哔哩视频链接: https://www.bilibili.c…...
qt c++类继承QWidget和不继承有什么区别
class CheckBoxSetting {Q_OBJECT public:CheckBoxSetting(); };和 class CheckBoxSettingsEditor : public QWidget {Q_OBJECTpublic:explicit CheckBoxSettingsEditor(QWidget *parent 0);~CheckBoxSettingsEditor();有什么区别? 这两个类 CheckBoxSetting 和 C…...

什么是SIEM
SIEM 解决方案是一种企业级应用程序,可集中和自动化与网络安全相关的操作,该工具通过收集、分析和关联从组织 IT 基础设施中的各种实体聚合的网络事件来帮助应对网络威胁。 与帮助监控和评估组织物理空间中的危险的监视控制台相比,SIEM解决方…...
浅谈一下实例化
实例化对象是面向对象编程中非常重要的概念,它允许我们根据类的定义创建具体的对象,并操作这些对象的属性和方法。下面具体谈一下实例化对象的一些特点和用途: 封装性和复用性:实例化对象可以将数据和行为封装在一起,从…...

【人工智能】第三部分:ChatGPT的应用场景和挑战
人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…...
FLV 文件格式
FLV 总体结构 FLV 文件由 FLV文件头(FLV Header)和 FLV文件体(FLV Body)组成。 FLV 文件体由若干级联的 FLV标签(FLV Tag)组成。标签使用一个 PreviousTagSize(uint32_t)来保存前一个 FLV 标签的大小,第一个 PreviousTagSize 值为0。 一个 FLV 文件中的所有数据,如 视频…...

FENDI CLUB精酿啤酒品鉴体验
当提及“品质卓越,口感非凡”的啤酒时,FENDI CLUB精酿啤酒无疑是一个值得一试的选择。这款啤酒以其独特的酿造工艺和优质的原料,为消费者带来了与众不同的味觉享受。 一、独特的酿造工艺 FENDI CLUB精酿啤酒在酿造过程中,严格遵循…...

前端 CSS 经典:水波进度样式
前言:简单实现水波进度样式,简单好看。 效果图: 代码实现: <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8" /><meta http-equiv"X-UA-Compatible" cont…...
深入解析CSS中的块级元素
块级元素在CSS中是一种常见的元素类型,具有一些特定的表现和行为特征。了解块级元素的定义和特点对于掌握CSS布局和样式设计至关重要。本文将从多个角度深入解析CSS中的块级元素,探讨其含义、特点以及在页面布局中的应用。 什么是块级元素? …...
PDF裁剪网站
裁剪 PDF – 修剪 PDF 文件中不需要的空白...

数据结构复习指导之外部排序
目录 外部排序 复习提示 1.外部排序的基本概念 2.外部排序的方法 2.1对大文件排序时使用的排序算法(2016) 3.多路平衡归并与败者树 4.置换-选择排序(生成初始归并段) 4.1置换-选择排序生成初始归并段的实例(2023) 5.最佳…...

【Python报错】已解决TypeError: can only concatenate str (not “int“) to str
解决Python报错:TypeError: can only concatenate str (not “int”) to str 在Python中,字符串连接是常见的操作,但如果你尝试将整数(int)与字符串(str)直接连接,会遇到TypeError: …...
Log4j日志级别介绍
Log4j 是一个广泛使用的 Java 日志记录框架,提供了多种日志级别,用于控制日志输出的详细程度。每个日志级别代表一种特定的重要性和紧急程度。 以下是 Log4j 的常见日志级别及其解读: FATAL(致命) 解释:表…...

[MQTT]服务器EMQX搭建SSL/TLS连接过程(wss://)
👉原文阅读 💡章前提示 本文采用8084端口进行连接,是EMQX 默认提供了四个常用的监听器之一,如果需要添加其他类型的监听器,可参考官方文档🔗管理 | EMQX 文档。 本文使用自签名CA,需要提前在L…...

【纯血鸿蒙】——响应式布局如何实现?
前面介绍了自适应布局,但是将窗口尺寸变化较大时,仅仅依靠自适应布局可能出现图片异常放大或页面内容稀疏、留白过多等问题。此时就需要借助响应式布局能力调整页面结构。 响应式布局 响应式布局是指页面内的元素可以根据特定的特征(如窗口…...
深入理解Django Serializer及其在Go语言中的实现20240604
深入理解Django Serializer及其在Go语言中的实现 在现代Web开发中,前后端分离已成为主流架构模式。作为开发者,我们经常需要处理数据的序列化和反序列化,以便在前后端之间传递数据。在Django中,Serializer是一个强大的工具&#…...

电子纸在日化行业的全新应用
电子纸在日化行业的全新应用 项目背景 在一日化龙头企业他们的洗衣粉产线在AGV小车取料到运输到产品包装工序时,因为取料粉车无明显区分标识,但是产品系列有十大类。在未采用晨控电子纸之前现场采用一个转盘分为十个区域,取料工序上方会有一…...
【Redis】Redis的双写问题
在分布式系统中,双写问题通常是指数据在多个存储系统(例如数据库和缓存)中更新时出现的不一致性。这种问题在使用 Redis 作为缓存层时尤为常见。具体来说,当数据在数据库和 Redis 缓存中存在副本时,任何对数据的更新操…...

生气时,你的“心”会发生什么变化?孟德尔随机化分析猛如虎,结果都是套路...
“不生气不生气,气出病来无人替”,不少人遇事常这样宽慰自己。事实上,“气死”真不是危言耸听。越来越多的研究证明了情绪稳定对健康的重要性,那么,当情绪频繁波动时,我们的心血管究竟会发生什么变化&#…...
页面加载性能分析时,有哪些常见的性能瓶颈需要特别注意?
在进行页面加载性能分析时,以下是一些常见的性能瓶颈,需要特别注意: 长页面加载时间: 页面加载时间超过行业标准或用户期望,导致用户流失。 高 CPU 使用率: 某些脚本或操作导致 CPU 使用率飙升,…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...

听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...
Linux安全加固:从攻防视角构建系统免疫
Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…...

Xcode 16 集成 cocoapods 报错
基于 Xcode 16 新建工程项目,集成 cocoapods 执行 pod init 报错 ### Error RuntimeError - PBXGroup attempted to initialize an object with unknown ISA PBXFileSystemSynchronizedRootGroup from attributes: {"isa">"PBXFileSystemSynchro…...