《仓储物联网系统概要设计 .doc》由会员分享,可在线阅读,更多相关《仓储物联网系统概要设计 .doc(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、咱们组仓储管理物联网系统概要设计文档编写时间: 2014年10月31日作 者: 咱们组 版 本: V1.2 版本履历版本号版本变更内容变更者时间V1.1第一版咱们组2014-10-31V1.2第二版咱们组2014-11-03目录目录3一、前言4二、系统概述5三、系统软件设计63.1 系统功能描述63.2 系统模块说明63.2.1客户终端模块63.2.2系统移植8BOA移植8mjpg_streamer视频服务器移植9wifi移植10GPRS移植113.2.3 A9主程序模块123.2.4 M0模块191、Cotex-M0前言192、Cortex-M0终端设备方案描述203、ZigBee无线通信协
2、议概述24四、运行环境规定244.1设备244.2支持软件24附录:头文件25一、前言为了使得食品物联网仓储系统高效、高速、高质量的完成开发,所以编写了这份软件需求说明书供项目经理、系统分析员、开发经理、交互设计师、测试人员以及客户代表进行阅读。通过阅读这份软件需求说明书,能使得参与项目的开发人员对项目有清晰的认识,并且能够方便客户代表和项目开发人员进行有效地沟通讨论,保证该项目顺利完成。二、系统概述本系统是基于PC,A9及M0等设备,依托在各项互联网,物联网,传感器等技术的基础上编写,以实现食品物联网仓储系统,使用户更方便的管理仓库内的所有信息及其特殊情况。 本系统主要分为三大模块:客户终端
3、(PC)、数据中心(A9)和远程监控终端(M0) 。三、系统软件设计3.1 系统功能描述实现用户在远程对仓库进出库货物的控制,温度、湿度、光照强度、三轴加速等的监控。3.2 系统模块说明仓储物联网管理系统分为:客户终端、A9主程序、M0,三大模块。3.2.1客户终端模块客户端模块分为:登陆界面、主菜单、实时信息显示、实时视屏监控、环境参数设置,五个功能。1.登陆界面2.主菜单3.实时信息显示4.环境参数修改5.实时视屏监控3.2.2系统移植BOA移植 Boa的编译 将Boa移植到FS4412中1. 修改配置文件:2. 将配置文件 移动到FS4412的 /etc/boa/ 目录下。3. 创建/v
4、ar/log/boa/ 目录,这样Boa服务器启动时会在该目录下创建日志文件。4. 将Linux系统上/etc/ 文件复制到FS4412的/etc 目录下,否则Boa服务器启动不起来。5. 将生成的boa文件移植到嵌入式板中的/sbin目录下并更改脚本文件 /etc/init.d/rcS, 新增一行: /sbin/boa ,确保boa服务器随系统上电自启动。12345678这里一定要注意:有时候boa服务器并不能随系统启动,运行 /sbin/boa 命会提示:gethostbyname: Success这种情况下要修改 文件将#ServerName.here改为ServerName.here即
5、去掉注释即可 测试Boa服务器:1. 静态页面测试:2. CGI 程序测试:至此,Boa服务器移植完成。mjpg_streamer视频服务器移植首先内核配置一些相关信息一:usb驱动添加 二:添加驱动(video)三:网络视频服务器移植对于内核linux-2.6.35,不能再使用servfox,如果要使用的需要修改大量的代码,在此选用新的方法来移植。需要两个文件jpeg,mjpg-stream.移植如下:jpeg库的移植编译make安装make install拷贝库到文件系统中cp /home/linux/jpeg /lib/.8 /source/rootfs/libmjpg-stream的移
6、植将摄像头驱动s5pc100_拷贝到 /source/rootfs目录下插入摄像头测试运行boa服务器/etc/boa/boa&插入摄像头驱动insmod s5pc100_wifi移植(一)、驱动移植1、 从Marvell官方网站上下载和sd8686_。2、 配置内核3、 编译内核make zImage(二)、wpa_supplicant移植1、 源码版本选择2、 openssl移植 补丁安装 配置编译安装3、 wpa_supplicant移植进入/workdir/wifi/wpa_supplicant-0.7.2/wpa_supplicant目录下 makefile修改编译后将产生的wpa_
7、supplicant和wpa_cli拷贝到根文件系统的bin目录下(/source/rootfs/bin)(三)、测试1、 在根文件中添加/etc/(/source/rootfs/etc/)2、 在根文件系统/etc(/source/rootfs/etc)下添加wpa_supplicant配置文件3、 创建目录/var/run/wpa_supplicant4、 启动开发板完成如下操作 配置无线网卡ip 配置默认网关 启动wpa_supplicant连接无线网络 查看连接状态GPRS移植1.首先得让内核支持PPP,进入Linux 内核目录(kernel-2.6 或 以上内核版本),2.下载ppp
8、-2.4.4. 或其他版本PPP 拨号程序源码,可以上网搜索进入ppp-2.4.4.的目录执行解压命令 #tar zxf ppp-2.4.4.解压后出现 ppp-2.4.4 文件夹,进入该目录( #cd ppp-2.4.4 ),执行配置命令 #./configure然后执行 #make CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc (后面的CC表示你的交叉编译器目录)编译完成后,进入下一步。3.修改相关拨号脚本4 复制相关文件到开发板保存退出3.2.3 A9主程序模块主程序流程图:1.客户终端通过共享内存获得实时数据:当客户端给BOA服务器发送修改查询信息
9、的请求时,主程序接收发送来的流程,且把这个请求加入到处理消息的队列中,在消息队列有请求的时候,会唤醒处理消息队列请求线程来读取请求信息,读取信息后,该线程再唤醒M0命令发送线程,把需要执行的命令向ZigBee发送。ZigBee把M0 处理命令后得到的数据接收后唤醒M0 数据接收线程来接收数据,接收成功后再唤醒M0 数据分析线程来进行数据分析,分析成功后在把数据在共享内存上进行更新,然后让BOA 服务器来进行数据的读取。2.主函数及数据库部分Pthread_transfer() M0数据接收线程 操作流程图 功能描述: 当M0模块向Pthread_transfer()发送字符串时,Pthread
10、_transfer()函数被唤醒,并将字符串转化成结构体。然后,向已创建的链表0 和链表1中分别添加结构体的。(链表0 节点为环境信息结构体,链表1 为货物信息结构体)Pthread_analysis() M0数据分析线程 操作流程图功能描述:当Pthread_transfer()向Pthread_analysis()发送数据时,Pthread_analysis()被唤醒。首先判断发送过来的链表的节点的表头是否为空,空则睡眠,不为空继续执行。判断链表为0或 1,将0链表的节点信息上传到Pthread_refresh()函数中,等待更新共享内存,并且将节点信息,通过函数定义的上下限解析函数进行判
11、断,无异常则睡眠,异常则将要执行的命令上传给Pthread_uart_cmd() 函数。将1 链表的节点信息同样上传到Pthread_refresh()函数中,等待更新共享内存。当从M0 收到的数据异常时流程:当M0的数据分析线程唤醒后,对M0的数据进行分析,判断是否发生异常。当异常发生的时候,唤醒A9LED模块线程,A9蜂鸣器模块线程,A9短信模块线程。当线程被唤醒后,就会驱动各个A9模块,针对不同的异常情况来做出具体的反应。其中LED模块会根据温湿度或光照和货物的异常来控制对应位的LED的亮灭,蜂鸣器模块会根据情况来发出警报声,短信模块会根据异常的内容,向客户来发送具体的异常。Pthrea
12、d_refresh() 更新共享内存数据线程 操作流程图功能描述:当Pthread_analysis()向Pthread_refresh()发送数据时,Pthread_refresh()被唤醒。将Pthread_analysis()上传过来的信息,刷新到共享内存中。Pthread_uart_cmd() M0命令发送线程 操作流程图功能描述:当Pthread_analysis()向Pthread_uart_cmd()发送数据时,Pthread_uart_cmd()被唤醒。将Pthread_analysis()上传过来的信息,通过zigbee发送给M0 模块。pthread_sqlite()数据库
13、操作线程 操作流程图功能描述:当Pthread_analysis()向pthread_sqlite()发送数据时,pthread_sqlite()被唤醒。判断为链表0或1 ,将0链表中的节点信息存储到数据库的env表中,将1链表中的节点信息存储到数据库的goods表中,并能通过sqlte_time() 函数获取一个时间上的环境信息,sqlite_change()函数获取货物的改变信息, sqlite_all()函数获取全部的env和goods表中存储的信息。蜂鸣器 和 led 线程 流程图 3.2.4 M0模块1、Cotex-M0前言(1) 目的针对高速发展的当今社会,人们对时间的高效利用,使
14、得现代都市生活节奏加快,目前的各式各样的管理机制难以满足人们的需求。针对目前现状,我们着力于高效的管理机制开发,简化了工作人员的重复性操作,从而减少了不必要的浪费时间,同时提高了管理机制的安全性,大大降低了意外给我们带来的经济损失。为了满足人们的需求,我们创科联动开发了物联网仓库存储管理系统。(2) 特点创科联动开发的物联网仓库存储管理系统有如下特点:可同时多个ZigBee节点与主机服务器进行数据交互;Cortex-M0数据采集端可与PC服务器端和Cortex-A9 Linux 服务器端进行数据交互,兼容性可靠、稳定;Cortex-M0 内核处理器LPC11C14最高能达到50MHz,相比其它
15、的ARM内核处理器主频低的多,但同时在保证功能完善的情况下所需的功耗是相当低的,功耗对于终端设备来说是相当重要的性能指标。(3)功能根据任务需求分析我们创科联动开发的物联网仓库存储管理系统有如下功能:对于必须的环境信息采集(温度、湿度、光照、RFID识别)我们每秒采集一次;一些辅助信息采集(电池电量、Axis_3三轴加速度)我们同样进行了信息采集,对于以上这些数据采集经过处理打包一并发送给服务器端(Cortex-A9),由服务器产生相应的指令发回给终端(Cortex-M0);对于基本信息我们除了供服务器端查看之外,还在终端上做了简单的数据显示,运行状态显示;我们考虑到了服务器与终端的交互安全性
16、问题,正常情况下终端是由服务器全部控制的,当可能的意外出现,服务器无法控制终端进行环境异常报警时,终端30秒之后自动切换到自制模式,这时终端进行自我环境异常检测,环境出现异常时打开蜂鸣器报警,如遇温度过高时,风扇设备会自行启动,以调节温度值,直至温度正常时风扇设备才会停止;该管理系统另外加了一个Axis_3三轴加速度报警,当地震时,由于不平衡而触发了Axis_3三轴加速度蜂鸣器报警。2、Cortex-M0终端设备方案描述(1)、M0终端主流程图(2)、zigebee流程图(3) M0端主程序流程图(4)、Cortex-M0终端设备主程序工作流程a、系统上电初始化M0终端上各个设备,包括系统定时
17、器、GPIO口、SPI、UART、IIC等设备,配置系统滴答定时器设置其终端为1毫秒,进而配置中断处理函数精确到1秒。b、主程序进行轮询判断,在没有外部中断(ZigBee接收数据中断、RFID刷卡中断)的情况下主要执行环境数据的采集、数据打包发送给A9服务器,这时因为M0终端还没有收到A9服务器发送过来的指令(即ZigBee接收数据中断函数还未执行),所以M0终端初始模式为自制控制(即M0终端未受到A9服务器命令控制而采取自我环境监测、异常报警等);c、当有外部RFID刷卡时,其它数据正常采集,RFID中断函数同时对磁卡数据进行采集校验数据有效性并发送给A9服务器;d、当有外部中断ZigBee
18、接收数据中断产生时,其它数据正常采集,ZigBee接收数据中断处理函数接收A9服务器发送过来的指令,执行不同的设备,同时M0终端切换为A9服务器控制M0终端模式; e、为了安全稳定的管理机制,我们对异常行为进行的可能性进行了评估、假设。当A9服务器异常(即A9服务器不能正常给M0终端设备发送指令)时,M0终端在30秒内未接收到A9服务器发送过来的指令时自行切换到M0终端自制模式,对当前环境进行检测、判断是否异常决定是否打开蜂鸣器报警。3、ZigBee无线通信协议概述ZigBee技术是一种近距离、低复杂度、低功耗、低速率、低成本的双向无线通讯技术。主要用于距离短、功耗低且传输速率不高的各种电子设
19、备之间进行数据传输以及典型的有周期性数据、间歇性数据和低反应时间数据传输的应用。四、运行环境规定4.1设备 电脑,Cotex-A9开发板,Cotex-M0开发板(包括zigbee模块,数据采集模块),摄像头,GPRS模块。4.2支持软件需要支持sqlite数据库、Microsoft Visio,boa服务器,运行环境为linux。附录:头文件#ifndef _HEAD_H_#define _HEAD_H_/*仓库1*/风扇 0 关闭; 1 1档; 2 2档; 3 3档#define ROOM1_FAN_0 0x40 #define ROOM1_FAN_1 0x41#define ROOM1_F
20、AN_2 0x42#define ROOM1_FAN_3 0x43/蜂鸣器 0 关闭; 1 打开; 2 自动报警关闭; 3 自动报警打开;#define ROOM1_BEEP_0 0x50#define ROOM1_BEEP_1 0x51#define ROOM1_BEEP_2 0x52#define ROOM1_BEEP_3 0x53/LED 0 关闭; 1 打开;#define ROOM1_LED_0 0x60#define ROOM1_LED_1 0x61/数码管 #define ROOM1_L_0 0x70#define ROOM1_L_1 0x71#define ROOM1_L_2
21、0x72#define ROOM1_L_3 0x73#define ROOM1_L_4 0x74#define ROOM1_L_5 0x75#define ROOM1_L_6 0x76#define ROOM1_L_7 0x77#define ROOM1_L_8 0x78#define ROOM1_L_9 0x79#define ROOM1_L_OFF 0x7f/*仓库2*/风扇 0 关闭; 1 1档; 2 2档; 3 3档#define ROOM2_FAN_0 0x80#define ROOM2_FAN_1 0x81#define ROOM2_FAN_2 0x82#define ROOM2_
22、FAN_3 0x83/蜂鸣器 0 关闭; 1 打开; 2 自动报警关闭; 3 自动报警打开;#define ROOM2_BEEP_0 0x90#define ROOM2_BEEP_1 0x91#define ROOM2_BEEP_2 0x92#define ROOM2_BEEP_3 0x93/LED 0 关闭; 1 打开;#define ROOM2_LED_0 0xa0#define ROOM2_LED_1 0xa1/数码管 #define ROOM2_L_0 0xb0#define ROOM2_L_1 0xb1#define ROOM2_L_2 0xb2#define ROOM2_L_3 0
23、xb3#define ROOM2_L_4 0xb4#define ROOM2_L_5 0xb5#define ROOM2_L_6 0xb6#define ROOM2_L_7 0xb7#define ROOM2_L_8 0xb8#define ROOM2_L_9 0xb9#define ROOM2_L_OFF 0xbf/* 通信结构体*/#define uint8_t unsigned char#define uint32_t unsigned int /*环境结构体*/struct sendEnvuint8_t head3; /标识位st:uint8_t type; /数据类型uint8_t
24、snum; /仓库编号uint8_t temp2; /温度uint8_t hum2; /湿度uint8_t x; /三轴信息uint8_t y; uint8_t z; uint32_t ill; /光照uint32_t bet; /电池电量uint32_t adc; /电位器信息;/*货物结构体*/struct sendGoodsuint8_t head3; /标识位st:uint8_ttype; /数据类型uint8_t snum; /仓库编号uint8_t io; /进出仓库uint8_t goodsno; /商品编号uint8_t goodsnum; /商品数量;/*环境参数上下限*/#define TEMP_MAX 35#define TEMP_MIN 20#define HUMI_MAX 80#define HUMI_MIN 30#endif