基于UP-CUPIOT-4412-II的广谱气体传感器实验

需积分: 17 2 下载量 52 浏览量 更新于2024-08-05 收藏 515KB PDF 举报
物联网实验报告 - 广谱气体传感器实验 本实验报告旨在指导计算机、物联网等相关专业的学生了解广谱气体传感器实验的目的、要求、实验内容、实验步骤和实验代码。通过本实验,学生可以熟悉UP-CUPIOT-4412-II型嵌入式物联网综合实验系统、ZIGBEE模块硬件部分、IAR开发环境和CC2530微控制器的应用。 一、实验目的与要求 本实验的目的旨在完成广谱气体传感器实验,要求学生完成实验报告。实验报告包括实验目的、实验内容、实验步骤、实验结果和分析等部分。 二、实验内容 实验内容包括硬件和软件两个部分。硬件部分包括UP-CUPIOT-4412-II型嵌入式物联网综合实验系统、广谱气体传感器、PC机和串口线。软件部分包括IAREmbeddedWorkbenchforMCS-51开发环境和CC2530微控制器。 实验步骤包括: 1. 实验环境设置:连接PC机和UP-CUPIOT-4412-II型设备,设备上电,确保打开ZIGBEE模块开关供电。 2. ZIGBEE模块硬件部分介绍:阅读UP-CUPIOT-4412-II系统ZIGBEE模块硬件部分文档,熟悉ZIGBEE模块相关硬件接口。 3. 程序设计:使用IAR开发环境设计程序,利用CC2530的IO中断来监测广谱气体传感器的状态。 4. 实验步骤:使用配套USB线连接PC机和UP-CUPIOT-4412-II型设备,设备上电,确保打开ZIGBEE模块开关供电。使用CCD_SETKEY按键选择ZIGBEE仿真器要连接的ZIGBEE设备模块(根据LED指示灯判断)。 5. 数据监测:使用PC机自带的超级终端连接串口,将超级终端设置为串口波特率57600、8位、无奇偶校验、无硬件流模式,当烟雾传感器在监测到有可燃气体将报警,同时可在终端收到字符串“SMOGwarning!”,且ZIGBEE模块上的LED状态改变一次。 三、实验代码 实验代码包括头文件、宏定义、变量定义和函数定义等部分。 头文件包括: * ioCC2530.h:CC2530微控制器的头文件 * uart/hal_uart.h:UART串口头文件 宏定义包括: * uint:无符号整数 * uchar:无符号字符 变量定义包括: * int_counter:整数变量,用于计数 * LED1、LED2:LED灯端口定义 函数定义包括: * Delay函数:用于延迟的函数 四、实验结果与分析 实验结果显示,广谱气体传感器可以检测到可燃气体,并在终端收到警告信息“SMOGwarning!”。ZIGBEE模块上的LED状态也发生改变。 五、结论 本实验报告对广谱气体传感器实验进行了详细的介绍和分析。通过本实验,学生可以熟悉物联网相关技术和实验方法,并掌握广谱气体传感器的应用和开发。
2020-05-25 上传
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; } osal_msg_deallocate( (uint8 *)MSGpkt ); // Release the memory MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SampleApp_TaskID ); // Next - if one is available } return (events ^ SYS_EVENT_MSG); // return unprocessed events } // Send a message out - This event is generated by a timer // (setup in SampleApp_Init()). if ( events & SAMPLEAPP_SEND_PERIODIC_MSG_EVT ) { SampleApp_SendPeriodicMessage(); // Send the periodic 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 (events ^ SAMPLEAPP_SEND_PERIODIC_MSG_EVT); // return unprocessed events } if ( events & SAMPLEAPP_SEND_SENSOR_INT_EVT ) { // report sensor interript status info SampleApp_Process_SensorInt(); return ( events ^ SAMPLEAPP_SEND_SENSOR_INT_EVT); } return 0; // Discard unknown events }
2024-11-15 上传