# stage2_storage_wangml71 **Repository Path**: wang-mingling/stage2_storage_wangml71 ## Basic Information - **Project Name**: stage2_storage_wangml71 - **Description**: 智能仓储安防监控项目 - **Primary Language**: C - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2022-11-06 - **Last Updated**: 2024-08-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # stage2_storage_wangml71 ## 智慧仓储安防监控项目 ************************************************************************** 分层分析: web网页端显示部分: 环境信息 === 实时刷新环境数据 摄像头采集图像 === 采集监控信息 硬件控制 === 下发要去控制的命令 A9数据处理部分 创建进程、线程 每条线程做自己的事情 涉及到进程间通信 数据处理===>分发(上行数据 or 下行数据) A9-ZigBee数据采集部分 A9采集部分 ZigBee采集部分 web网页端显示部分: 环境信息:adc电压数据 mpu6050的六轴数据 温度 湿度 摄像头采集图像: 硬件控制:风扇 LED灯 蜂鸣器 GPRS ==== 发短信或打电话 A9数据处理部分: 数据流向分析: 1、ZigBee(采集终端)-->A9(处理平台) 2、A9(处理平台)-->网页(显示平台) 3、网页(显示平台)-->A9(处理平台) 4、A9(处理平台)--->ZigBee(采集终端) A9-ZigBee采集部分: 外设驱动 --------在应用层去获取外设的状态或数据 A9------蜂鸣器--------蜂鸣器报警 LED灯 --------卧室-厕所-楼道-公共照明 --------LED2-LED3-LED4-LED5 按键 --------按键触发中断---控制卧室和厕所灯-----LED2-LED3 ADC --------获取ADC的采样数据 mpu6050 --------获取MPU6050的六轴数据 zigbee--adc ------主---协调器 风扇 ------从---终端节点 下发命令控制风扇 温湿度 ------从---终端节点 上传温湿度数据 (光敏) ************************************************************************** 数据流分析: 数据的上传: ====> 共享内存上传数据 ====> 显示并交给用户查看环境信息 数据的下发用于控制硬件:====> 消息队列下发数据 ===> 控制硬件改变环境 数据上传: ZigBee | 温湿度数据 | A9 | ADC采集 |-----------上传这些数据 加速计数据 | 陀螺仪数据 | 摄像头 | 视频流图像 | 数据下发: ZigBee: | 风扇 | A9: | 蜂鸣器 |-----打开设备节点控制硬件 LED灯 | 四路LED灯模拟的数码管 | GPRS: | 3G通信模块 | ************************************************************************** 消息队列下发数据: long msgtype;//具体的消息类型 消息类型的分配: 1L: LED控制 2L: 蜂鸣器控制 3L: 四路LED灯模拟的数码管 4L: 风扇 5L: 温湿度最值设置 6L-7L-8L-9L,用于个人的扩展 10L: 3G通信模块-GPRS switch(msgbuf.msgtype){ case 1L: ... break; .... default .... break; } 控制命令的制定 消息队列接收消息: msgrcv (msgid, &msgbuf, sizeof (msgbuf) - sizeof (long), 1L, 0); 解析buf中的数据: printf ("Get %ldL msg\n", msgbuf.msgtype); printf ("text[0] = %#x\n", msgbuf.text[0]); A9-ZIGBEE通用指令 命令格式:一个字节,unsigned char 对应消息队列中正文的类型: 8位 ---------------------------------------- 7 6 5 4 | 3 2 1 0 房间编号 | 操作设备 ---------------------------------------- 0001 xxxx 0010 xxxx 0011 xxxx …… 房间编号 0x10 1号房间 0x20 2号房间 0x30 3号房间 …… ---------------------------------------- 操作设备 操作掩码 LED 0x00 全部关闭 0x01 全部打开 0x02 翻转LED2 0x03 翻转LED3 0X04 翻转LED4 0x05 翻转LED5 0X10 流水灯 ---------------------------------------- 蜂鸣器 0x00 关闭 0x01 打开 0x02 自动报警关闭 0x03 自动报警打开 ---------------------------------------- 风扇 0x00 关闭风扇 0x01 打开风扇 ---------------------------------------- 数码管 0x0~0xe 显示0~14数字(四盏灯,对应0000-表示0,0001-表示1....1110-表示14) 0x0f 关闭数码管 led2-3-4-5 ---------------------------------------- 控制命令: 房间编号 + 操作掩码 = 命令 (命令的封装) 例如: 4L: 0x10 + 0x01 = 0x11 1号房间风扇打开 2L: 0x20 + 0x01 = 0x21 2号房间蜂鸣器打开 3L: 0x40 + 0x08 = 0x48 4号房间数码管显示8 3L: 0x40 + 0x0f = 0x4f 4号房间关闭数码管 上行:封装的结构体====共享内存和信号量 ===>交给CGI(C语言和HTML语言之间的转化接口)===>交给HTML; 下行:封装的命令字====消息队列 ====>msgbuf msgsnd===>控制命令字封装在msgsnd的msgbuf中 ===>A9端解析==>向下控制硬件