咱们组仓储管理物联网 系统概要设计文档
编写时间: 2014年10月31日 作 者: 咱们组 版 本: V1.2
版本履历
目录
目录 .................................................................................................................................................. 3 一、前言........................................................................................................................................... 4 二、系统概述 . .................................................................................................................................. 5 三、系统软件设计 . .......................................................................................................................... 6
3.1 系统功能描述 . ................................................................................................................... 6 3.2 系统模块说明 . ................................................................................................................... 6 3.2.1客户终端模块 . ................................................................................................................. 6 3.2.2系统移植 . ......................................................................................................................... 8
BOA 移植 ......................................................................................................................... 8 mjpg_streamer视频服务器移植 . ..................................................................................... 9 wifi 移植 ......................................................................................................................... 10 GPRS 移植 . ..................................................................................................................... 11 3.2.3 A9主程序模块 . ............................................................................................................. 12 3.2.4 M0模块 ......................................................................................................................... 19
1、Cotex-M0前言 ......................................................................................................... 19 2、Cortex-M0终端设备方案描述 ................................................................................ 20 3、ZigBee 无线通信协议概述 ...................................................................................... 24
四、运行环境规定 . ........................................................................................................................ 24
4.1设备 . .................................................................................................................................. 24 4.2支持软件 . .......................................................................................................................... 24 附录:头文件 . ................................................................................................................................ 25
一、前言
为了使得食品物联网仓储系统高效、高速、高质量的完成开发,所以编写了这份软
件需求说明书供项目经理、系统分析员、开发经理、交互设计师、测试人员以及客户代表进行阅读。通过阅读这份软件需求说明书,能使得参与项目的开发人员对项目有清晰的认识,并且能够方便客户代表和项目开发人员进行有效地沟通讨论,保证该项目顺利完成。
二、系统概述
本系统是基于PC,A9及M0等设备,依托在各项互联网,物联网,传感器等技术的基础上编写,以实现食品物联网仓储系统,使用户更方便的管理仓库内的所有信息及其特殊情况。
本系统主要分为三大模块:客户终端(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. 修改boa.conf 配置文件:
2. 将配置文件boa.conf 移动到FS4412的 /etc/boa/ 目录下。
3. 创建/var/log/boa/ 目录,这样Boa 服务器启动时会在该目录下创建日志文件。 4. 将Linux 系统上/etc/mime.types 文件复制到FS4412的/etc 目录下,否则Boa 服务器启动不起来。
5. 将生成的boa 文件移植到嵌入式板中的/sbin目录下并更改脚本文件
/etc/init.d/rcS, 新增一行: /sbin/boa ,确保boa 服务器随系统上电自启动。
1 这里一定要注意:有时候boa 服务器并不能随系统启动,运行 /sbin/boa 命会提示: 2 gethostbyname:: Success 3 这种情况下要修改boa.conf 文件 4 将 5 #ServerName www.your.org.here 6 改为 7 ServerName www.your.org.here 8 即去掉注释即可
测试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/libjpeg.so.8 /source/rootfs/lib
②mjpg-stream 的移植
将摄像头驱动s5pc100_cam.ko拷贝到 /source/rootfs目录下
插入摄像头
测试运行boa 服务器 /etc/boa/boa&
插入摄像头驱动
insmod s5pc100_cam.ko
wifi 移植
(一)、驱动移植
1、 从Marvell 官方网站上下载sd8686.bin 和sd8686_helper.bin。 2、 配置内核 3、 编译内核 make zImage
(二)、wpa_supplicant移植
1、 源码版本选择
2、 openssl 移植
补丁安装 配置编译安装 3、 wpa_supplicant移植
进入~/workdir/wifi/wpa_supplicant-0.7.2/wpa_supplicant目录下 makefile 修改
编译后将产生的wpa_supplicant和wpa_cli拷贝到根文件系统的bin 目录下(/source/rootfs/bin)
(三)、测试
1、 在根文件中添加/etc/resolv.conf(/source/rootfs/etc/resolv.conf)
2、 在根文件系统/etc(/source/rootfs/etc)下添加wpa_supplicant配置文件wpa-psk-tkip.conf 3、 创建目录/var/run/wpa_supplicant 4、 启动开发板完成如下操作
配置无线网卡ip 配置默认网关
启动wpa_supplicant连接无线网络 查看连接状态
GPRS 移植
1. 首先得让内核支持PPP ,进入Linux 内核目录(kernel-2.6 或 以上内核版本),
2. 下载ppp-2.4.4.tar.gz 或其他版本PPP 拨号程序源码,可以上网搜索 进入ppp-2.4.4.tar.gz 的目录执行解压命令 #tar zxf ppp-2.4.4.tar.gz 解压后出现 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 服务器发送修改查询信息的请求时,主程序接收发送来的流程,且把这个请求加入到处理消息的队列中,在消息队列有请求的时候,会唤醒处理消息队列请求线程来读取请求信息,读取信息后,该线程再唤醒M0命令发送线程,把需要执行的命令向
ZigBee 发送。ZigBee 把M0 处理命令后得到的数据接收后唤醒M0 数据接收线程来接收数据,接收成功后再唤醒M0 数据分析线程来进行数据分析,分析成功后在把数据在共享内存上进行更新,然后让BOA 服务器来进行数据的读取。
2. 主函数及数据库部分
Pthread_transfer() M0数据接收线程 操作流程图 功能描述: 当M0模块向Pthread_transfer()发送字符串时,Pthread_transfer()函数被唤醒,并将字符串转化成结构体。然后,向已创建的链表0 和链表1中分别添加结构体的。(链表0 节点为环境信息结构体,链表1 为货物信息结构体)
Pthread_analysis() M0数据分析线程 操作流程图 功能描述: 当Pthread_transfer()向Pthread_analysis()发送数据时,Pthread_analysis()被唤醒。首先判断发送过来的链表的节点的表头是否为空,空则睡眠,不为空继续执行。判断链表为0或 1, 将0链表的节点信息上传到Pthread_refresh()函数中,等待更新共享内存,并且将节点信息,通过函数定义的上下限解析函数进行判断,无异常则睡眠,异常则将要执行的命令上传给Pthread_uart_cmd() 函数。将1 链表的节点信息同样上传到Pthread_refresh()函数中,等待更新共享内存。
当从M0 收到的数据异常时流程:
当M0的数据分析线程唤醒后,对M0的数据进行分析,判断是否发生异常。当异常发生的时候,唤醒A9LED 模块线程,A9蜂鸣器模块线程,A9短信模块线程。当线程被唤醒后,就会驱动各个A9模块,针对不同的异常情况来做出具体的反应。其中LED 模块会根
据温湿度或光照和货物的异常来控制对应位的LED 的亮灭,蜂鸣器模块会根据情况来发出警报声,短信模块会根据异常的内容,向客户来发送具体的异常。
Pthread_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()数据库操作线程 操作流程图 功能描述:
当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) 目的
针对高速发展的当今社会,人们对时间的高效利用,使得现代都市生活节奏加快,目前的各式各样的管理机制难以满足人们的需求。针对目前现状,我们着力于高效的管理机制开发,简化了工作人员的重复性操作,从而减少了不必要的浪费时间,同时提高
了管理机制的安全性,大大降低了意外给我们带来的经济损失。为了满足人们的需求,我们创科联动开发了物联网仓库存储管理系统。 (2) 特点
创科联动开发的物联网仓库存储管理系统有如下特点:可同时多个ZigBee 节点与主机服务器进行数据交互;Cortex-M0数据采集端可与PC 服务器端和Cortex-A9 Linux 服务器端进行数据交互,兼容性可靠、稳定;Cortex-M0 内核处理器LPC11C14最高能达到50MHz ,相比其它的ARM 内核处理器主频低的多,但同时在保证功能完善的情况下所需的功耗是相当低的,功耗对于终端设备来说是相当重要的性能指标。 (3)功能
根据任务需求分析我们创科联动开发的物联网仓库存储管理系统有如下功能:对于必须的环境信息采集(温度、湿度、光照、RFID 识别) 我们每秒采集一次;一些辅助信息采集(电池电量、Axis_3三轴加速度) 我们同样进行了信息采集,对于以上这些数据采集经过处理打包一并发送给服务器端(Cortex-A9),由服务器产生相应的指令发回给终端(Cortex-M0);对于基本信息我们除了供服务器端查看之外,还在终端上做了简单的数据显示,运行状态显示;我们考虑到了服务器与终端的交互安全性问题,正常情况下终端是由服务器全部控制的,当可能的意外出现,服务器无法控制终端进行环境异常报警时,终端30秒之后自动切换到自制模式,这时终端进行自我环境异常检测,环境出现异常时打开蜂鸣器报警,如遇温度过高时,风扇设备会自行启动,以调节温度值,直至温度正常时风扇设备才会停止;该管理系统另外加了一个Axis_3三轴加速度报警,当地震时,由于不平衡而触发了Axis_3三轴加速度蜂鸣器报警。
2、Cortex-M0终端设备方案描述
(1)、M0终端主流程图
(2)、zigebee 流程图
(3)M0端主程序流程图
(4)、Cortex-M0终端设备主程序工作流程
a 、系统上电初始化M0终端上各个设备,包括系统定时器、GPIO 口、SPI 、UART 、IIC 等设备,配置系统滴答定时器设置其终端为1毫秒,进而配置中断处理函数精确到1秒。
b 、主程序进行轮询判断,在没有外部中断(ZigBee接收数据中断、RFID 刷卡中断) 的情况下主要执行环境数据的采集、数据打包发送给A9服务器,这时因为M0终端还没有收到A9服务器发送过来的指令(即ZigBee 接收数据中断函数还未执行) ,所以M0终端初始模式为自制控制(即M0终端未受到A9服务器命令控制而采取自我环境监测、异常报警等) ; c 、当有外部RFID 刷卡时,其它数据正常采集,RFID 中断函数同时对磁卡数据进行采集校验数据有效性并发送给A9服务器;
d 、当有外部中断ZigBee 接收数据中断产生时,其它数据正常采集,ZigBee 接收数据中断处理函数接收A9服务器发送过来的指令,执行不同的设备,同时M0终端切换为A9服务器控制M0终端模式;
e 、为了安全稳定的管理机制,我们对异常行为进行的可能性进行了评估、假设。当A9服务器异常(即A9服务器不能正常给M0终端设备发送指令) 时,M0终端在30秒内未接收到A9服务器发送过来的指令时自行切换到M0终端自制模式,对当前环境进行检测、判断是否异常决定是否打开蜂鸣器报警。
3、ZigBee 无线通信协议概述 ZigBee 技术是一种近距离、低复杂度、低功耗、低速率、低成本的双向无线通讯技术。
主要用于距离短、功耗低且传输速率不高的各种电子设备之间进行数据传输以及典型的
四、运行环境规定
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_FAN_2 0x42
#define ROOM1_FAN_3 0x43
// 蜂鸣器 0 关闭; 1 打开; 2 自动报警关闭;
#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 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*/ 自动报警打开; 3
//风扇 0 关闭; 1 1档; 2 2档; 3 3档
#define ROOM2_FAN_0 0x80
#define ROOM2_FAN_1 0x81
#define ROOM2_FAN_2 0x82
#define ROOM2_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 0xb3
#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 sendEnv
{
uint8_t head[3]; //标识位st:
uint8_t type; //数据类型
uint8_t snum; //仓库编号
uint8_t temp[2]; //温度
uint8_t hum[2]; //湿度
uint8_t x; //三轴信息
uint8_t y;
uint8_t z; uint32_t ill; uint32_t bet; uint32_t adc; };
/*货物结构体*/ struct sendGoods {
uint8_t head[3]; uint8_t type; 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
//光照 //电池电量 //电位器信息 //标识位st: //数据类型 //仓库编号 //进出仓库 //商品编号 //商品数量
咱们组仓储管理物联网 系统概要设计文档
编写时间: 2014年10月31日 作 者: 咱们组 版 本: V1.2
版本履历
目录
目录 .................................................................................................................................................. 3 一、前言........................................................................................................................................... 4 二、系统概述 . .................................................................................................................................. 5 三、系统软件设计 . .......................................................................................................................... 6
3.1 系统功能描述 . ................................................................................................................... 6 3.2 系统模块说明 . ................................................................................................................... 6 3.2.1客户终端模块 . ................................................................................................................. 6 3.2.2系统移植 . ......................................................................................................................... 8
BOA 移植 ......................................................................................................................... 8 mjpg_streamer视频服务器移植 . ..................................................................................... 9 wifi 移植 ......................................................................................................................... 10 GPRS 移植 . ..................................................................................................................... 11 3.2.3 A9主程序模块 . ............................................................................................................. 12 3.2.4 M0模块 ......................................................................................................................... 19
1、Cotex-M0前言 ......................................................................................................... 19 2、Cortex-M0终端设备方案描述 ................................................................................ 20 3、ZigBee 无线通信协议概述 ...................................................................................... 24
四、运行环境规定 . ........................................................................................................................ 24
4.1设备 . .................................................................................................................................. 24 4.2支持软件 . .......................................................................................................................... 24 附录:头文件 . ................................................................................................................................ 25
一、前言
为了使得食品物联网仓储系统高效、高速、高质量的完成开发,所以编写了这份软
件需求说明书供项目经理、系统分析员、开发经理、交互设计师、测试人员以及客户代表进行阅读。通过阅读这份软件需求说明书,能使得参与项目的开发人员对项目有清晰的认识,并且能够方便客户代表和项目开发人员进行有效地沟通讨论,保证该项目顺利完成。
二、系统概述
本系统是基于PC,A9及M0等设备,依托在各项互联网,物联网,传感器等技术的基础上编写,以实现食品物联网仓储系统,使用户更方便的管理仓库内的所有信息及其特殊情况。
本系统主要分为三大模块:客户终端(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. 修改boa.conf 配置文件:
2. 将配置文件boa.conf 移动到FS4412的 /etc/boa/ 目录下。
3. 创建/var/log/boa/ 目录,这样Boa 服务器启动时会在该目录下创建日志文件。 4. 将Linux 系统上/etc/mime.types 文件复制到FS4412的/etc 目录下,否则Boa 服务器启动不起来。
5. 将生成的boa 文件移植到嵌入式板中的/sbin目录下并更改脚本文件
/etc/init.d/rcS, 新增一行: /sbin/boa ,确保boa 服务器随系统上电自启动。
1 这里一定要注意:有时候boa 服务器并不能随系统启动,运行 /sbin/boa 命会提示: 2 gethostbyname:: Success 3 这种情况下要修改boa.conf 文件 4 将 5 #ServerName www.your.org.here 6 改为 7 ServerName www.your.org.here 8 即去掉注释即可
测试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/libjpeg.so.8 /source/rootfs/lib
②mjpg-stream 的移植
将摄像头驱动s5pc100_cam.ko拷贝到 /source/rootfs目录下
插入摄像头
测试运行boa 服务器 /etc/boa/boa&
插入摄像头驱动
insmod s5pc100_cam.ko
wifi 移植
(一)、驱动移植
1、 从Marvell 官方网站上下载sd8686.bin 和sd8686_helper.bin。 2、 配置内核 3、 编译内核 make zImage
(二)、wpa_supplicant移植
1、 源码版本选择
2、 openssl 移植
补丁安装 配置编译安装 3、 wpa_supplicant移植
进入~/workdir/wifi/wpa_supplicant-0.7.2/wpa_supplicant目录下 makefile 修改
编译后将产生的wpa_supplicant和wpa_cli拷贝到根文件系统的bin 目录下(/source/rootfs/bin)
(三)、测试
1、 在根文件中添加/etc/resolv.conf(/source/rootfs/etc/resolv.conf)
2、 在根文件系统/etc(/source/rootfs/etc)下添加wpa_supplicant配置文件wpa-psk-tkip.conf 3、 创建目录/var/run/wpa_supplicant 4、 启动开发板完成如下操作
配置无线网卡ip 配置默认网关
启动wpa_supplicant连接无线网络 查看连接状态
GPRS 移植
1. 首先得让内核支持PPP ,进入Linux 内核目录(kernel-2.6 或 以上内核版本),
2. 下载ppp-2.4.4.tar.gz 或其他版本PPP 拨号程序源码,可以上网搜索 进入ppp-2.4.4.tar.gz 的目录执行解压命令 #tar zxf ppp-2.4.4.tar.gz 解压后出现 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 服务器发送修改查询信息的请求时,主程序接收发送来的流程,且把这个请求加入到处理消息的队列中,在消息队列有请求的时候,会唤醒处理消息队列请求线程来读取请求信息,读取信息后,该线程再唤醒M0命令发送线程,把需要执行的命令向
ZigBee 发送。ZigBee 把M0 处理命令后得到的数据接收后唤醒M0 数据接收线程来接收数据,接收成功后再唤醒M0 数据分析线程来进行数据分析,分析成功后在把数据在共享内存上进行更新,然后让BOA 服务器来进行数据的读取。
2. 主函数及数据库部分
Pthread_transfer() M0数据接收线程 操作流程图 功能描述: 当M0模块向Pthread_transfer()发送字符串时,Pthread_transfer()函数被唤醒,并将字符串转化成结构体。然后,向已创建的链表0 和链表1中分别添加结构体的。(链表0 节点为环境信息结构体,链表1 为货物信息结构体)
Pthread_analysis() M0数据分析线程 操作流程图 功能描述: 当Pthread_transfer()向Pthread_analysis()发送数据时,Pthread_analysis()被唤醒。首先判断发送过来的链表的节点的表头是否为空,空则睡眠,不为空继续执行。判断链表为0或 1, 将0链表的节点信息上传到Pthread_refresh()函数中,等待更新共享内存,并且将节点信息,通过函数定义的上下限解析函数进行判断,无异常则睡眠,异常则将要执行的命令上传给Pthread_uart_cmd() 函数。将1 链表的节点信息同样上传到Pthread_refresh()函数中,等待更新共享内存。
当从M0 收到的数据异常时流程:
当M0的数据分析线程唤醒后,对M0的数据进行分析,判断是否发生异常。当异常发生的时候,唤醒A9LED 模块线程,A9蜂鸣器模块线程,A9短信模块线程。当线程被唤醒后,就会驱动各个A9模块,针对不同的异常情况来做出具体的反应。其中LED 模块会根
据温湿度或光照和货物的异常来控制对应位的LED 的亮灭,蜂鸣器模块会根据情况来发出警报声,短信模块会根据异常的内容,向客户来发送具体的异常。
Pthread_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()数据库操作线程 操作流程图 功能描述:
当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) 目的
针对高速发展的当今社会,人们对时间的高效利用,使得现代都市生活节奏加快,目前的各式各样的管理机制难以满足人们的需求。针对目前现状,我们着力于高效的管理机制开发,简化了工作人员的重复性操作,从而减少了不必要的浪费时间,同时提高
了管理机制的安全性,大大降低了意外给我们带来的经济损失。为了满足人们的需求,我们创科联动开发了物联网仓库存储管理系统。 (2) 特点
创科联动开发的物联网仓库存储管理系统有如下特点:可同时多个ZigBee 节点与主机服务器进行数据交互;Cortex-M0数据采集端可与PC 服务器端和Cortex-A9 Linux 服务器端进行数据交互,兼容性可靠、稳定;Cortex-M0 内核处理器LPC11C14最高能达到50MHz ,相比其它的ARM 内核处理器主频低的多,但同时在保证功能完善的情况下所需的功耗是相当低的,功耗对于终端设备来说是相当重要的性能指标。 (3)功能
根据任务需求分析我们创科联动开发的物联网仓库存储管理系统有如下功能:对于必须的环境信息采集(温度、湿度、光照、RFID 识别) 我们每秒采集一次;一些辅助信息采集(电池电量、Axis_3三轴加速度) 我们同样进行了信息采集,对于以上这些数据采集经过处理打包一并发送给服务器端(Cortex-A9),由服务器产生相应的指令发回给终端(Cortex-M0);对于基本信息我们除了供服务器端查看之外,还在终端上做了简单的数据显示,运行状态显示;我们考虑到了服务器与终端的交互安全性问题,正常情况下终端是由服务器全部控制的,当可能的意外出现,服务器无法控制终端进行环境异常报警时,终端30秒之后自动切换到自制模式,这时终端进行自我环境异常检测,环境出现异常时打开蜂鸣器报警,如遇温度过高时,风扇设备会自行启动,以调节温度值,直至温度正常时风扇设备才会停止;该管理系统另外加了一个Axis_3三轴加速度报警,当地震时,由于不平衡而触发了Axis_3三轴加速度蜂鸣器报警。
2、Cortex-M0终端设备方案描述
(1)、M0终端主流程图
(2)、zigebee 流程图
(3)M0端主程序流程图
(4)、Cortex-M0终端设备主程序工作流程
a 、系统上电初始化M0终端上各个设备,包括系统定时器、GPIO 口、SPI 、UART 、IIC 等设备,配置系统滴答定时器设置其终端为1毫秒,进而配置中断处理函数精确到1秒。
b 、主程序进行轮询判断,在没有外部中断(ZigBee接收数据中断、RFID 刷卡中断) 的情况下主要执行环境数据的采集、数据打包发送给A9服务器,这时因为M0终端还没有收到A9服务器发送过来的指令(即ZigBee 接收数据中断函数还未执行) ,所以M0终端初始模式为自制控制(即M0终端未受到A9服务器命令控制而采取自我环境监测、异常报警等) ; c 、当有外部RFID 刷卡时,其它数据正常采集,RFID 中断函数同时对磁卡数据进行采集校验数据有效性并发送给A9服务器;
d 、当有外部中断ZigBee 接收数据中断产生时,其它数据正常采集,ZigBee 接收数据中断处理函数接收A9服务器发送过来的指令,执行不同的设备,同时M0终端切换为A9服务器控制M0终端模式;
e 、为了安全稳定的管理机制,我们对异常行为进行的可能性进行了评估、假设。当A9服务器异常(即A9服务器不能正常给M0终端设备发送指令) 时,M0终端在30秒内未接收到A9服务器发送过来的指令时自行切换到M0终端自制模式,对当前环境进行检测、判断是否异常决定是否打开蜂鸣器报警。
3、ZigBee 无线通信协议概述 ZigBee 技术是一种近距离、低复杂度、低功耗、低速率、低成本的双向无线通讯技术。
主要用于距离短、功耗低且传输速率不高的各种电子设备之间进行数据传输以及典型的
四、运行环境规定
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_FAN_2 0x42
#define ROOM1_FAN_3 0x43
// 蜂鸣器 0 关闭; 1 打开; 2 自动报警关闭;
#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 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*/ 自动报警打开; 3
//风扇 0 关闭; 1 1档; 2 2档; 3 3档
#define ROOM2_FAN_0 0x80
#define ROOM2_FAN_1 0x81
#define ROOM2_FAN_2 0x82
#define ROOM2_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 0xb3
#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 sendEnv
{
uint8_t head[3]; //标识位st:
uint8_t type; //数据类型
uint8_t snum; //仓库编号
uint8_t temp[2]; //温度
uint8_t hum[2]; //湿度
uint8_t x; //三轴信息
uint8_t y;
uint8_t z; uint32_t ill; uint32_t bet; uint32_t adc; };
/*货物结构体*/ struct sendGoods {
uint8_t head[3]; uint8_t type; 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
//光照 //电池电量 //电位器信息 //标识位st: //数据类型 //仓库编号 //进出仓库 //商品编号 //商品数量