【毕业设计】60-基于ZigBee无线智能消防\烟雾报警逃生系统设计(原理图工程+源代码+答辩论文+实物图+上位机)

【毕业设计】60-基于ZigBee无线智能消防\烟雾报警逃生系统设计(原理图工程+源代码+答辩论文+实物图+上位机)

资料要求

包含此题目毕业设计全套资料:
1.原理图工程文件
2.VB上位机源代码
3.答辩论文,27257字
4.visio设计流程图
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;
}

本文首发于DF创客社区,作者:利刃1979 原文链接:http://mc.dfrobot.com.cn/thread-297112-1-1.html 1 作品介绍 1.1 作品功能 本作品借助物联网技术开发了一种烟雾报警系统,用于监控火灾、煤气泄漏等不安全事故的发生。该烟雾报警系统由无线传感器网络节点和监控系统两个部分组成。无线传感器网络节点由多个感知模块组成,用于实时检测多个监控区域的环境参数(如烟雾气体浓度、一氧化碳浓度等),并通过传感器网络将所有数据传输至监控系统。监控系统由下位机、PC上位机、手机APP三个部分组成:下位机安装在用户监控场所,通过无线传感器网络实时接收传感器节点的环境参数,并利用ZigBee网络和WIFI网络将监控数据分别发送至监控中心的PC上位机和用户手机的APP,若被监控的区域发生火灾、煤气泄漏等安全事故,三者将同时报警,从而极大程度地减低了无法获取安全事故发生的问题的风险,能够第一时间对受灾的地点进行抢救。 本作品可用于普通家庭住宅用户安全事故的监控,一旦发生安全事故,家庭住宅的下位机、小区物业部门安装的PC上位机、住户手机的APP三者将同时发出报警信号,能够第一时间对事故地点进行抢救。1.2 作品创新点 本作品的创新点在于: 1、通过下位机、PC上位机、手机APP三种终端报警的方式降低无法第一时间获取安全事故发生的风险,能够第一时间对事故地点进行抢救; 2、利用无线传感器网络的优势,将监控传感器和监控系统分离成独立的模块,实现了增加监控区域只需安装独立的传感器节点的特性,极大程度地提升了系统的可扩展性,同时使得系统具有较低的扩展成本。 救;同时,本作品可用于酒店、办公楼、商业广场、工厂操作间等需要大面积多区域监控的场所。 2 准备事项 2.1 作品原理 如图2.1所示,本作品由无线传感器网络节点和监控系统两个部分组成。 无线传感器网络节点对监控点的环境参数进行采集并处理,通过无线通信模块将处理后的数据发送至下位机。 监控系统由下位机、PC上位机和手机APP三个部分组成。下位机对无线传感器网络节点传输的环境参数进行分析,同时在LCD进行显示,并通过WIFI和ZigBee网络将数据分别发送至手机APP和PC上位机;若接收的环境参数数据满足安全事故发生的条件,下位机将通过语音模块发出报警提醒,同时手机APP和PC上位机也将发出报警信号;若用户发现发出的报警信号为误触信号,用户可通过按键或者语音识别模块关闭报警。 图2.1 作品系统设计框图 2.2 作品设计 2.2.1 主控制器作品传感器节点采用STM32F103C8T6型号的单片机,下位机采用STM32F103RCT6型号的单片机。 2.1.2 传感器 传感器模块选用了市面上常见也是应用较为广泛的两种传感器,分别是烟雾浓度传感器MQ-2和一氧化碳浓度传感器MQ-7。 MQ-2可用于家庭和工厂的气体泄漏监测装置,适宜于液化气、苯、烷、酒精、氢气、烟雾等的探测。故因此,MQ-2可以准确来说是一个多种气体探测器MQ-2的探测范围极其的广泛。它的优点:灵敏度高、响应快、稳定性好、寿命长、驱动电路简单。MQ-2型烟雾传感器属于二氧化锡半导体气敏材料,属于表面离子式N型半导体。处于200至300摄氏度时,二氧化锡吸附空气中的氧,形成氧的负离子吸附,使半导体中的电子密度减少,从而使其电阻值增加。当与烟雾接触时,如果晶粒间界处的势垒收到烟雾的调至而变化,就会引起表面导电率的变化。利用这一点就可以获得这种烟雾存在的信息,烟雾的浓度越大,导电率越大,输出电阻越低,则输出的模拟信号就越大。 MQ-7是一氧化碳气体传感器,所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2),采用高低温循环检测方式低温(1.5V加热)检测一氧化碳,传感器的电导率随空气中一氧化碳气体浓度增加而增大,高温(5.0V加热)清洗低温时吸附的杂散气体。使用简单的电路即可将电导率的变化,转换为与该气体浓度相对应的输出信号。MQ-7气体传感器对一氧化碳的灵敏度高,这种传感器可检测多种含一氧化碳的气体,是一款适合多种应用的低成本传感器。 MQ-2、MQ-7模块的实物图片如图2.2所示。 图2.2 MQ-2与MQ-7传感器实物图片 2.2.3 无线传输模块 无线传输模块的功能是将传感器采集到的监测数据发送到监控点,本作品采用NRF24L01 2.4GHz无线传输模块。NRF24L01是一款工作在2.4至2.5GHz世界通用ISM频段的单片无线收发器芯片。无线收发器包括:频率发生器、增强型SchockBurstTM模式控制器、功率放大器、晶体振荡器、调制器、解调器。输出功率、频道选择和协议的设置可以通过SPI接口进行设置。极低的电流消耗,当工作在发射模式下发射功率为-6dBm时电流消耗为9mA接收模式
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cqtianxingkeji

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值