【单片机毕业设计选题24019】-基于STM32的安防监测灭火系统

系统功能:

1. 水泵喷水灭火功能:当火焰传感器监测到火焰时,蜂鸣器报警,水泵工作实现灭火。

2. 风扇功能:当烟雾传感器检测到CO或温度传感器检测到温度超过阈值时,蜂鸣器报警,

启动风扇进行驱散烟雾或降温。

3. 防盗功能介绍 :采用红外传感器,当有人靠近时就会报警。

4. 通过蓝牙实现在手机上显示温度、火焰、CO等参数并设置。

5. 通过OLED显示屏实时显示温度、火焰、CO。

主要功能模块原理图:

电源时钟烧录接口:

单片机和按键输入电路:

传感器采集电路:

资料获取地址:

https://shop272529339.taobao.com

系统主要功能模块代码

初始化代码:

  /* USER CODE BEGIN 1 */


  /* USER CODE END 1 */


  /* MCU Configuration--------------------------------------------------------*/


  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */

  HAL_Init();


  /* USER CODE BEGIN Init */

    InitVar();


  /* USER CODE END Init */


  /* Configure the system clock */

  SystemClock_Config();


  /* USER CODE BEGIN SysInit */


  /* USER CODE END SysInit */


  /* Initialize all configured peripherals */

  MX_GPIO_Init();

  MX_USART1_UART_Init();

  MX_ADC1_Init();

  /* USER CODE BEGIN 2 */

//在HAL库初始化串口1后调用

    HAL_Delay(100);

    SetUart1RxToInput();

    HAL_Delay(50);

//uart1打开接收中断

    HAL_UART_Receive_IT(&huart1, (uint8_t*)&uart1RecBuff, 1);

    InitOled();

    InitOledDisp();

    ResetDHT11();


  /* USER CODE END 2 */

系统控制代码:

//系统信息更新

void SystemControl(void)

{

    static uint8_t updateCnt = 0;

   

    updateCnt++;   

    if(updateCnt>=SYSTEM_UPDATE_INTER)

    {

        updateCnt = 0;

        if(DHT11ReadData()==0)  //DHT11温湿度读取OK

        {

            ;

        }

        UpdateBleData();

    }

//读取并处理传感器值

    ReadSensorVal();

//显示不同页面

    if(dispPageIndex==DISP_PAGE_1)

    {

        OledDispPage1();

    }

    else if(dispPageIndex==DISP_PAGE_2)

    {

        OledDispPage2();

    }

    else if(dispPageIndex==DISP_PAGE_3)

    {

        OledDispPage3();

    }

    else if(dispPageIndex==DISP_PAGE_4)

    {

        OledDispPage4();

    }

}

蓝牙上报系统信息:

//更新BLE数据

void UpdateBleData(void)

{

//温湿度值

    printf("T:%02d.%01d  H:%02d.%01d\r\n", DHT11_Data.temp_int, DHT11_Data.temp_deci, DHT11_Data.humi_int, DHT11_Data.humi_deci);      

//火焰报警状态

    if(fireAlarm==true)

    {

        printf("Fire:Alarm\r\n");

    }

    else

    {

        printf("Fire:Normal\r\n");

    }

//人体报警状态

    if(bodyAlarm==true)

    {

        printf("body:Alarm\r\n");

    }

    else

    {

        printf("body:Normal\r\n");

    }  

//传感器报警状态

    if(sensorAlarm==true)

    {

        printf("Sensor:Alarm\r\n");

    }

    else

    {

        printf("Sensor:Normal\r\n");

    }    

}

此设计提供的资料包含原理图PCB(包含PDF,AD,立创EDA三个版本),源代码,系统框图,主程序流程图,物料清单(包含使用到的器件手册),功能操作说明等。

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

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

相关文章

椭圆的几何要素

椭圆的几何要素 flyfish 椭圆的方程为 x 2 a 2 y 2 b 2 1 \frac{x^2}{a^2} \frac{y^2}{b^2} 1 a2x2​b2y2​1。 长半轴 a a a(绿色虚线)和短半轴 b b b(紫色虚线)。 焦点 F 1 ( − c , 0 ) F1(-c, 0) F1(−c,0)&#…

学会python——获取文件信息(python实例八)

目录 1、认识Python 2、环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3、获取文件信息 3.1 代码构思 3.2 代码示例 3.3 运行结果 4、总结 1、认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的…

JS中的延时操作setTimeout()和setInterval()

JS中,给我们提供两种延时操作的内置方法setTimeout()和setInterval()。setTimeout和setInterval方法都是挂载在javascript的window对象下,通过两个参数控制,第一个参数控制运行的表达式或方法,第二个参数表示延时的时间&#xff0…

MK米客方德SD NAND的掉电保护机制

随着科技的飞速发展,数据存储设备在我们的生活和工作中扮演着越来越重要的角色。然而,数据安全问题也随之而来,尤其是面对突然的电源故障或意外断电,我们宝贵的数据可能会面临丢失的风险。MK米客方德公司深知这一点,因…

语言模型测试系列【10】

一个巧合,又测到了新的区别,以下是关于python代码生成的测试效果。 语言模型 文心一言讯飞星火通义千问2.5豆包360智脑百小应腾讯元宝KimiC知道商量智谱清言 这次的测试问题来源于**智谱AI开放平台**的介绍,正好有个python生成的效果说明…

神经阻滞术——慢性腰痛、颈痛与关节痛治疗的新选择

北京精诚博爱医院所实施的神经阻滞术是一种针对患者局部疼痛治疗手段,通过向特定部位注射局麻药或其他特定药物,来暂时性地阻断神经传导,进而达到减轻或消除疼痛的目的。这种疗法在慢性腰痛、颈痛或关节痛等常见疼痛疾病的治疗中,…

五十三、openlayers官网示例Layer Spy解析——跟随鼠标透视望远镜效果、图层剪裁

官网demo地址: Layer Spy 这篇实现了鼠标跟随望远镜效果,鼠标移动时绘制一个圆形的剪裁区剪裁上层图层。 container.addEventListener("mousemove", function (event) {mousePosition map.getEventPixel(event);map.render();});container.a…

海量数据处理——bitMap/BloomFilter、hash + 统计 + 堆/归并/快排

前言:海量数据处理是面试中一道常考的问题, 生活中也容易遇到这种问题。 通常就是有一个大文件, 让我们对这个文件进行一系列操作——找出现次数最多的数据、求交集、是否重复出现等等。 因为文件的内容太多, 我们的内存通常是放不…

CSS属性选择器具有不区分大小写的模式

今天,我偶然发现了 caniuse.com 项目的一期,其中提到了新的和即将推出的 CSS Level 4 选择器。 这个列表很长,并且有许多新的选择器正在开发中。一个新的选择器标志引起了我的注意;属性选择器将变成一个 i 标志,这使得…

解决无限debugger总结

基本工具 1: Notepad(修改保存) ReRes(插件替换) ReRes安装教程 2: Fidder 编程猫 hook 情况 fidder基本:fidder插件使用hook构造器, 例如下 //配合编程猫专用工具进行hook (function() { use strict//过瑞数 debuger var eval_ window.eval; window.eval_ …

Pyqt QCustomPlot 简介、安装与实用代码示例(四)

目录 前言实用代码示例Interaction ExampleItem DemoAdvanced Axes DemoFinancial Chart Demo 结语 所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 nixgnauhcuy’s blog! 如需转载,请标明出处! 完整代码…

MATLAB绘图技巧-多边形区域填充图

MATLAB绘图技巧-多边形区域填充图 以下内容来自:科学网—MATLAB绘图技巧-多边形区域填充图 - 彭真明的博文 (sciencenet.cn)START 为了突出某个区域或局部数据的特性,便于数据的可视化和解释,常需要绘制二维区域填充图。MATLAB提供了三种类型…

成都晨持绪科技:2024年抖音网店做起来难吗

随着抖音平台的日益火爆,越来越多的商家和个人开始关注并尝试开设自己的抖音网店。然而,面对激烈的市场竞争和不断变化的平台规则,许多人都在问:2024年抖音网店做起来难吗? 要回答这个问题,我们首先需要了解抖音网店的…

百度地图上设置挖空效果的电子围栏

公司项目有个需求是要在百度地图上设置电子围栏,电子围栏很简单嘛,就是一个覆盖物就能搞定了,然而UI又在搞事情,设计的效果图中电子围栏外卖填充颜色,电子围栏内不填充颜色。 最后我还是写出了这个效果,浅浅的复盘一下: 狗狗太可爱了给他用电子围栏描个边边 我是怎么…

Kimi还能对学术论文进行润色?我来教你!

学境思源,一键生成论文初稿: AcademicIdeas - 学境思源AI论文写作 一、引言 在学术界,论文的质量往往决定了研究的可信度和影响力。Kimi作为一款人工智能助手,可以为学术论文的润色提供有效的帮助。本文将详细介绍如何利用Kimi进…

GD32学习

参考视频13.立创开发板GD32教程:串口配置_哔哩哔哩_bilibili 固件库跟用户手册基本上差不多,只不过用用户手册编写程序的话会更加的底层,固件库的话就是把一些函数封装起来,用的时候拿过来即可,目前我还没有找到固件库…

代码评审——Java占位符%n的处理

问题描述 在软件开发项目中,特别是在处理动态内容生成与呈现至前端界面的过程中,正确运用占位符以确保文本完整性和数据准确性显得尤为重要。不当的占位符管理不仅可能导致语法错误或逻辑混乱,还会引发一系列隐蔽的问题,这些问题…

VScode安装与汉化

VScode安装与汉化 文章目录 VScode安装与汉化一、软件安装方法一:网站下载方法二:直接用安装包下载 二、汉化方法一:(个人感觉繁琐)方法二:(用这个) Tips:禁用自动更新开…

webp动图转gif

目录 前言 解决过程 遇到问题 获取duration 前言 上一次我们实现了webp转jpg格式: https://blog.csdn.net/weixin_54143563/article/details/139758200 那么对于含动图的webp文件我们如何将其转为gif文件呢? 之所以会出现这个问题,是因…

AI赋能前端:你的Chrome 控制台需要AI(爱)

像会永生那样去学习,像明天就要死亡那样去生活。——圣雄甘地 大家好,我是柒八九。一个专注于前端开发技术/Rust及AI应用知识分享的Coder 此篇文章所涉及到的技术有 AI(Gemini)ChromeDevTool🪜魔法接码平台因为,行文字数所限,有些概念可能会一带而过亦或者提供对应的学习…