【毕业设计】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;
}

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于Zigbee和STM32的智能家居系统源代码可以分为两个模块:Zigbee通信模块和STM32控制模块。 Zigbee通信模块的主要功能是实现智能家居设备之间的无线通信。在源代码中,首先需要初始化Zigbee模块,并设置通信的参数。然后,通过监听Zigbee网络中的数据包来实现设备之间的通信。例如,当一个设备发送一个控制指令时,其他设备可以接收到该指令并做出相应的反应。此外,Zigbee通信模块还可以处理网络连接的建立和断开等操作。 STM32控制模块的主要功能是控制智能家居设备的操作。在源代码中,首先需要初始化STM32的GPIO口和串口。然后,通过串口接收来自Zigbee模块的指令,并将指令解析为具体的操作。例如,当接收到一个打开灯的指令时,STM32可以控制相关的GPIO口输出高电平,以打开灯。同时,STM32还可以获取各个传感器的数据,并通过Zigbee模块发送到其他设备。 此外,源代码还需要实现一些额外的功能,例如设备的配对和注册等。设备配对的过程中,源代码可以实现设备之间的认证和身份验证等操作。注册功能则可以实现设备的网络注册和信息存储。 综上所述,基于Zigbee和STM32的智能家居系统源代码主要包括Zigbee通信模块和STM32控制模块。Zigbee通信模块用于实现设备之间的无线通信,而STM32控制模块则用于控制智能家居设备的操作。在源代码中还需要实现设备配对和注册等功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值