【毕业设计】60-基于ZigBee无线智能消防\烟雾报警逃生系统设计(原理图工程、源代码、低重复率参考文档、实物图)

news2024/10/7 14:30:13

【毕业设计】60-基于ZigBee无线智能消防\烟雾报警逃生系统设计(原理图工程、源代码、低重复率参考文档、实物图)

文章目录

  • 【毕业设计】60-基于ZigBee无线智能消防\烟雾报警逃生系统设计(原理图工程、源代码、低重复率参考文档、实物图)
    • 资料下载链接
    • 任务书
    • 设计说明书
      • 摘要
      • 设计框架架构
      • 设计说明书及设计文件
      • 源码展示

资料下载链接

资料下载链接
资料链接:https://www.cirmall.com/circuit/33731/
包含此题目毕业设计全套资料:
1.原理图工程文件
2.VB上位机源代码
3.低重复率文档,27257字
4.设计流程图
5.实物图

任务书

主要研究内容:
学习掌握ZigBee技术和嵌入式等知识;对无线传输模块搭建的无线传感网络系统的组成与设计进行详细的说明;通过实物对无线传感网的智能消防逃生系统设计进行更形象和深入的分析说明。
研究方法:
主要通过参阅相关资料,书籍和网上调阅资料。收集相关信息。同时咨询指导老师,以求达到专业知识,完成设计的效果。
要求:
使用ZigBee无线传输模块搭建无线传感网络,并在嵌入式主控芯片上分析感知点采集到的实时监控数据,智能反应并判断是否发生灾情。进而实现报警、灭火逃生路线指引等功能。通过实际的测试数据,分析系统的有效性和可靠性

设计说明书

摘要

随着半导体技术与计算科学技术的飞速发展,现在的消防逃生系统也出现了改变,不再仅仅依靠人们只能通过眼睛或者嗅到有烟雾或者火灾的发展。现在随着传感器技术的发展以及科技技术的发展,可以通过半导体传感器来对周边的环境进行实时的监控,并且可以通过无线设备即实现数据的传输。使人们可以在最快的时间发现火灾情况避免人员与财产损失。本文基于ZigBee的无线传感网的智能消防逃生系统设计,需要实现ZigBee终端节点测量环境温度、烟雾浓度,并在OLED1284液晶屏显示出上位机设置的阈值,测量值超过预定阈值的时候,蜂鸣器响灯闪声光报警。同时将测量的数据无线发送给协调器,协调器接收后通过CH340G串口转USB发送给电脑上位机显示,电脑端上位机能够设置阈值,阈值通过协调器发送给终端并在终端液晶上显示出来。系统组成部分有单片机最小系统、控制串口测温电路报警器、MQ2烟雾报警器、OLED12864显示屏幕、与串口CH304G通信的上位机,实现在上位机上数据显示的功能。本设计的制作流程为绘制原理图、设计PCB、编写工程程序、制作实物焊接调试。最后还对整个系统的功能进行测试,完成并验证了全部预想功能。另外,通过模块化的设计实现了功能可配置性,不仅便于后期的切换与拓展,还保证了系统的稳定性,经得起市场的检验。

设计框架架构

前 言 1
第一章 绪论 2
第一节 研究背景 2
第二节 研究现状 3
第三节 研究内容 4
第四节 本章小节 5
第二章 智能消防逃生系统概述 6
第一节 智能消防逃生系统功能分析 6
第二节 烟雾传感器选型 6
一、烟雾传感器原理 6
二、烟雾传感器选择 7
第三节 温度传感器选型 8
第四节 OLED显示器介绍 9
第五节 方案设计框架确定 10
第六节 本章小结 11
第三章 智能消防逃生系统的硬件设计 12
第一节 总电路设计 12
第二节 单片机最小系统电路设计 12
一、单片机介绍 12
二、单片机最小系统设计 13
第三节 蜂鸣器报警电路设计 14
第四节 显示电路设计 15
第五节 温度传感器电路设计 15
第六节 烟雾传感器电路设计 16
第七节 PCB设计 17
第七节 本章小结 19
第四章 智能消防逃生系统软件设计 20
第一节 开发软件介绍 20
第二节 软件总流程设计 21
第三节 显示器程序流程设计 22
第四节 温度采集程序流程设计 24
第五节 烟雾采集程序流程设计 26
第六节 本章小结 27
第五章 智能消防逃生系统实现 28
第一节 硬件电路焊接 28
第二节 硬件电路调试 29
一、静态调试 30
二、系统综合调试 30
第三节 实物功能测试 30
第四节 本章小结 33
总 结 34
致 谢 35
参考文献 36
附 录 37
一、英文原文 37
二、英文翻译 41
三、工程图纸 45
四、源代码 47

设计说明书及设计文件

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
低重复率文档,27257字在这里插入图片描述

源码展示

/*********************************************************************
 * @fn      SampleApp_Init *
 * @brief   Initialization function for the Generic App Task.
 *          This is called during initialization and should contain
 *          any application specific initialization (ie. hardware
 *          initialization/setup, table initialization, power up
 *          notificaiton ... ).
 *
 * @param   task_id - the ID assigned by OSAL.  This ID should be
 *                    used to send messages and set timers. *
 * @return  none
 */ 
void SampleApp_Init( uint8 task_id )
{ 
  SampleApp_TaskID = task_id;
  SampleApp_NwkState = DEV_INIT;
  SampleApp_TransID = 0;  
  MT_UartInit();                  //串口初始化
  MT_UartRegisterTaskID(task_id); //注册串口任务
  P0SEL &= 0x7f;                  //P0_7配置成通用io   
  HAL_TURN_ON_LED2();
  // Device hardware initialization can be added here or in main() (Zmain.c).
  // If the hardware is application specific - add it here.
  // If the hardware is other parts of the device add it in main().
 #if defined ( BUILD_ALL_DEVICES )
  // The "Demo" target is setup to have BUILD_ALL_DEVICES and HOLD_AUTO_START
  // We are looking at a jumper (defined in SampleAppHw.c) to be jumpered
  // together - if they are - we will start up a coordinator. Otherwise,
  // the device will start as a router.
  if ( readCoordinatorJumper() )
    zgDeviceLogicalType = ZG_DEVICETYPE_COORDINATOR;
  else
    zgDeviceLogicalType = ZG_DEVICETYPE_ROUTER;
#endif // BUILD_ALL_DEVICES
#if defined ( HOLD_AUTO_START )
  // HOLD_AUTO_START is a compile option that will surpress ZDApp
  //  from starting the device and wait for the application to
  //  start the device.
  ZDOInitDevice(0);
#endif
  // Setup for the periodic message's destination address
  // Broadcast to everyone
  SampleApp_Periodic_DstAddr.addrMode = (afAddrMode_t)AddrBroadcast;
  SampleApp_Periodic_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;
  SampleApp_Periodic_DstAddr.addr.shortAddr = 0xFFFF;
  // Setup for the flash command's destination address - Group 1
  SampleApp_Flash_DstAddr.addrMode = (afAddrMode_t)afAddrGroup;
  SampleApp_Flash_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;
  SampleApp_Flash_DstAddr.addr.shortAddr = SAMPLEAPP_FLASH_GROUP;  
  SampleApp_P2P_DstAddr.addrMode = (afAddrMode_t)Addr16Bit; //点播 
  SampleApp_P2P_DstAddr.endPoint = SAMPLEAPP_ENDPOINT; 
  SampleApp_P2P_DstAddr.addr.shortAddr = 0x0000;            //发给协调器
  // Fill out the endpoint description.
  SampleApp_epDesc.endPoint = SAMPLEAPP_ENDPOINT;
  SampleApp_epDesc.task_id = &SampleApp_TaskID;
  SampleApp_epDesc.simpleDesc
            = (SimpleDescriptionFormat_t *)&SampleApp_SimpleDesc;
  SampleApp_epDesc.latencyReq = noLatencyReqs;
  // Register the endpoint description with the AF
  afRegister( &SampleApp_epDesc );
}
uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events )
{
  afIncomingMSGPacket_t *MSGpkt;
  (void)task_id;  // Intentionally unreferenced parameter
  if ( events & SYS_EVENT_MSG )
  {
    MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SampleApp_TaskID );
    while ( MSGpkt )
    {
      switch ( MSGpkt->hdr.event )
      {
        // Received when a key is pressed
        case KEY_CHANGE:
          SampleApp_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys );
          break;
        // Received when a messages is received (OTA) for this endpoint
        case AF_INCOMING_MSG_CMD:
          SampleApp_MessageMSGCB( MSGpkt );
          break;
        // Received whenever the device changes state in the network
        case ZDO_STATE_CHANGE:
          SampleApp_NwkState = (devStates_t)(MSGpkt->hdr.status);
          if ( //(SampleApp_NwkState == DEV_ZB_COORD) ||
                 (SampleApp_NwkState == DEV_ROUTER)
              || (SampleApp_NwkState == DEV_END_DEVICE) )
          {
            // Start sending the periodic message in a regular interval.
            osal_start_timerEx( SampleApp_TaskID,
                              SAMPLEAPP_SEND_PERIODIC_MSG_EVT,                              SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT );
          }
          else
          {
            // Device is no longer in the network
          }
          break;
        default:
          break;
      }
      // Release the memory
      osal_msg_deallocate( (uint8 *)MSGpkt );
      // Next - if one is available
      MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SampleApp_TaskID );
    }
    // return unprocessed events
    return (events ^ SYS_EVENT_MSG);
  }
  // Send a message out - This event is generated by a timer
  //  (setup in SampleApp_Init()).
  if ( events & SAMPLEAPP_SEND_PERIODIC_MSG_EVT )
  {
    // Send the periodic message
    //SampleApp_SendPeriodicMessage();
    SampleApp_Send_P2P_Message();
    // Setup to send message again in normal period (+ a little jitter)
    osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT,
        (SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT + (osal_rand() & 0x00FF)) );
    // return unprocessed events
    return (events ^ SAMPLEAPP_SEND_PERIODIC_MSG_EVT);
  }
  // Discard unknown events
  return 0;
}

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

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

相关文章

Mybatis的一级缓存

目录前置生效场景一场景二失效场景一场景二场景三场景四场景五前置 什么是一级缓存: mybatis 默认开启一级缓存, SQLSession会话缓存, 每个SQLSession都会有各自的缓存 以下会演示一级缓存生效/失效的场景 项目地址: https://gitee.com/xmaxm/test-code/blob/master/chaim-cac…

初识golang微服务框架kratos

前言 今天给大家介绍一下Kratos,Kratos 一套轻量级 Go 微服务框架,包含大量微服务相关框架及工具,使用Kratos的原因主要是感觉原来使用的go-kit工具并不是很方便,期望用上kratos后开发会更快捷一些。 Kratos名字根据官方的説法是来源于:《战…

灵界的科学丨六、星际通信新科技──寻找外星人

摘自李嗣涔教授《灵界的科学》 外星先进文明科技领先地球的关键, 是外星人掌握了意识的物理, 能够制造仿照天眼的仪器, 自由进出虚数空间遨游宇宙,同时创造出瞬间科技。 人类未来学习的典范,就在天上无数的外星先进…

数据结构--线性表之顺序表

1.线性表定义 线性表(List):零个或多个数据元素的有限序列。 线性表的数据集合为{a1,a2,…,an},假设每个元素的类型均为DataType。其中,除第一个元素a1外,每一个元素有且只有一个直接前驱元素&#xff0c…

第三十三篇 transition-group 列表过渡

上一篇内容讲到的是transiotion&#xff0c;其中还记得有一个报错吗&#xff1f;如下&#xff1a; 先来回顾一下&#xff0c;<transition> 只能用于单个元素&#xff0c;如果在<transition>单中并列两个<p>标签&#xff0c;那么这样一来就会报以上这个错误&a…

六、表空间管理

六、表空间管理 1、查看表空间 使用DM Manager工具&#xff1a; 代码&#xff1a; -- 1、查看表空间名 select tablespace_name FROM SYS.DBA_TABLESPACES;-- 2、查看表空间名、表空间对应的数据文件地址、状态 select tablespace_name,file_name,status FROM dba_data_files;…

软件定义汽车产业生态创新白皮书

1 什么是软件定义汽车 1.1 驱动因素 汽车“新四化”的发展需要软件的加持 据大众汽车公开披露信息&#xff0c;未来平均每辆普通汽车软件代码量超 1 亿行。在电动化、智能化和网联化等的发展推动下&#xff0c;汽车将加速向高度数字化、信息化、智能化的移动终端发展。座舱娱…

CM311-1_YST_S905L3(B)_安卓9.0_设置无密码_默认打开adb_完美AI语音_线刷固件包

CM311-1_YST_S905L3(B)_安卓9.0_设置无密码_默认打开adb_完美AI语音_线刷固件包 固件特点&#xff1a; 1、修改dns&#xff0c;三网通用&#xff1b; 2、开放原厂固件屏蔽的市场安装和u盘安装apk&#xff1b; 3、无开机广告&#xff0c;无系统更新&#xff0c;不在被强制升…

LX12864P1屏幕使用介绍(ST7567驱动),显示横线、字符、图形

LX12864P1屏幕显示&#xff08;ST7567驱动&#xff09; 可编辑12864液晶模组&#xff0c;也就是液晶显示屏是有128*64个点阵组成。12864是一种图形点阵液晶显示器&#xff0c;它主要采用动态驱动原理由行驱动—控制器和列驱动器两部分组成了128(列)64(行)的全点阵液晶显示此显…

全国地级市城镇化和协调发展指数测算数据(2005-2019)六份数据

全国地级市城镇化和协调发展指数测算数据&#xff08;2005-2019&#xff09;六份数据 1、范围&#xff1a;受数据限制&#xff0c;剔除了新疆和西藏的城市共包括287个地级市 2、时间区间为&#xff1a;2005-2019年 3、六分数据包括&#xff1a; 地级市城镇化发展水平&#…

多线程入门

多线程简介 1. 进程/线程 # 进程 - 进程由指令和数据组成&#xff0c;指令要运行&#xff0c;数据要读写&#xff0c;必须将指令加载到CPU&#xff0c;数据加载到内存。指令运行过程中还需要用到磁盘&#xff0c;网络等IO设备 - 进程用来加载指令&#xff0c;管理内存&#x…

CentOS7 安装rabbitMQ步骤

全程使用root权限 1、修改主机名称 hostnamectl set-hostname rmq158 2、输入命令&#xff1a;vi /etc/hosts修改hosts文件 3、重启 4、WINSCP传输两个包到/usr/local下面 5、tar -xvf otp_src_21.3.tar.gz cd otp_src_21.3 ./configure --prefix/usr/local/erlang 6、yum i…

教学:制作 GitHub 同步近期博客卡片

这几天看到有小伙伴将自己近期更新的博客同步显示到了 GitHub 主页&#xff0c;这么有趣的小卡片我是一定要尝试一把的&#xff0c;完整的教程我已经整理好了&#xff0c;一起搞起来吧~ 2. 开始教程 2.1 实现流程&#xff1a; Github 的主页装修主要讲的就是主页的 Markdown 文…

Spring Security自定义验证码登录

本文内容来自王松老师的《深入浅出Spring Security》&#xff0c;自己在学习的时候为了加深理解顺手抄录的&#xff0c;有时候还会写一些自己的想法。 验证码登录也是项目中一个常见的需求&#xff0c;但是Spring Security并未提供自动化配置方案。所以需要开发者自行定义。这里…

Spring的创建和使用

1. 创建Spring项目 1.1 创建一个 Maven 项目 不需要使用任何模板, 点击下一步.注:所有的名称都不能包含中文.Maven仓库中的结构: 1.2 添加 Spring 框架支持 在Spring 的 配置文件 中添加依赖 spring-context: Spring的上下文spring-beans: 管理Spring对象(bean) <depende…

36、异常(Exception)

一、 引入: 不应该出现了一个不算致命的问题就导致整个系统崩溃&#xff0c;所以java设计者提供了一个异常处理机制来解决问题 快速入门&#xff1a; package exception_;public class Exception01 {public static void main(String[] args) {int num110;int num20;//异常处…

软件工程复习

文章目录&#xff08;一&#xff09;软件软件发展三阶段软件的概念什么是软件危机&#xff1f;内容包括&#xff1a;软件危机的表现&#xff1a;软件危机的原因(4)消除软件危机的途径&#xff1a;软件工程软件工程定义&#xff08;要背&#xff09;简称&#xff1a;软件工程的基…

【Java基础】第六章 | IO流

目录 | 总框架 | 文件路径相关知识 | Peoperties类与IO流、配置文件* | 1.文件流 文件字节输入流&#xff08;标准输入流&#xff09; FileInputStream 文件字节输出流 FileOutputStream 文件字符输入流 FileReader 文件字符输出流 FileWriter 应用&#xff1a;使用字…

MMDetection库中的一些模块介绍

本文目前仅包含1个主干网络和1个颈部网络。如果有机会&#xff0c;会继续补充更多模型。 若发现内容有误&#xff0c;欢迎指出。 MMDetection的图像数据一般会经历如下步骤/模块&#xff1a; #mermaid-svg-XxM18Ychr9OSpdV6 {font-family:"trebuchet ms",verdana,ari…

JavaScript 防抖与节流

目录1 函数1.1 调用函数1.2 闭包2 防抖与节流2.1 定义2.2 区别2.3 应用场景3 防抖3.1 非立即执行3.1.1 一般写法3.1.2 Vue2 中写法3.1.3 过程3.2 立即执行3.2.1 一般写法3.2.2 Vue2 中写法3.2.3 过程1 函数 应用防抖节流首先需理解以下知识 1.1 调用函数 js 函数内部 return…