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

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

设计说明书及设计文件

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

【毕业设计】60-基于ZigBee无线智能消防_烟雾报警逃生系统设计(原理图工程+源代码+答辩论文+实物图+上位机)_第2张图片
【毕业设计】60-基于ZigBee无线智能消防_烟雾报警逃生系统设计(原理图工程+源代码+答辩论文+实物图+上位机)_第3张图片
低重复率文档,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;
}

你可能感兴趣的:(网络,单片机,c语言,嵌入式硬件)