当前位置: > 论文中心 > 科技论文 >

基于物联网技术的农产品仓储管理系统设计

时间:2014-08-29 12:36 点击:
摘要:针对传统仓储管理效率低下的问题,设计了一种基于物联网技术的农产品仓储智能管理系统。给出了系统的总体硬件和软件设计方案。以ARM Cortex-M0和CC2430构成系统的无线传感器采集节点,实现仓库温度、湿度、光照度、物品刷卡信息的采集和发送,以ARM Co
摘要:针对传统仓储管理效率低下的问题,设计了一种基于物联网技术的农产品仓储智能管理系统。给出了系统的总体硬件和软件设计方案。以ARM Cortex-M0和CC2430构成系统的无线传感器采集节点,实现仓库温度、湿度、光照度、物品刷卡信息的采集和发送,以ARM Cortex-A8、CC2430和GPRS模块构成数据处理中心,负责接收环境参数和物品信息,激活数据库线程对数据进行处理,构建嵌入式Web服务器,使用户通过网络利用PC机进行监控,当环境参数超过阈值时可通过GPRS短信息功能向用户报警。实践证明,该系统能够增强库房作业的准确性和快捷性、降低储存成本、保障农产品仓库物资的安全。
 
  关键词:物联网; 嵌入式; 无线传感器; 仓储管理系统
 
  中图分类号:TP399 文献标识码:A 文章编号:0439-8114(2014)05-1173-05
 
  随着农产品仓库大量的增加,仓库物品越来越多,其管理难度也越来越大,仓库的管理问题也就提上了日程,如何优化仓库的日常管理成为了一个重要的研究课题[1]。传统的人工仓库作业模式和数据采集方式已难以满足仓库管理快速、准确的要求,严重影响了仓库的管理效率[2,3]。近几年,物联网技术在环境监测和仓库管理方面得到了广泛的应用[4-6]。尤其是射频识别(RFID)和无线传感器技术的发展为仓库管理带来了一场巨大的变革,简化繁杂的工作流程,有效改善供应链的效率和透明度[7],可以对仓库环境监控、入库、出库、调拨、移库移位、库存盘点等各个作业环节的数据进行自动化的数据采集,保证仓库管理各个环节数据输入的速度和准确性,确保管理人员及时准确地掌握库存的真实数据,合理保持和控制仓库库存,提高仓库管理的工作效率[8,9]。
 
  在上述背景下,设计一种基于ZigBee无线传感器网络技术、嵌入式技术和计算机技术的农产品仓储管理系统,该系统能够实时监控农产品仓库的环境信息、进出库信息,改善传统的仓库管理模式,增强库房作业的准确性和快捷性、减少整个仓库物资出入库中由于管理不到位造成的非法出入库、误置、偷窃和库存、出货错误等损失,并最大限度地降低储存成本、保障仓库物资的安全。
 
  1 系统总体设计
 
  系统基于PC(可以是笔记本电脑、手机)、嵌入式设备A8及嵌入式设备M0等,依托在各项互联网、物联网、传感器等技术的基础上完成,以实现仓库信息远程监控和智能化管理,体现信息获取的实时性和分布性,使用户更方便地管理仓库内的信息及其特殊情况。
 
  1.1 系统架构
 
  系统主要分为3个模块:数据采集中心、前端数据处理中心和客户端(PC、笔记本电脑和手机等)。系统总体架构见图1。
 
  1.2 功能描述
 
  具体功能描述如下。
 
  1)通过数据采集中心(定义为M0)实时采集环境参数,例如温度、湿度、光感数据,进行物品刷卡,每个仓库构成一个节点;
 
  2)通过ZigBee模块把采集到的环境参数或物品信息发送给A8设备;
 
  3)由A8的线程负责接收环境参数或物品信息,激活数据库线程对数据库进行相应的处理,如果是环境参数则对环境参数进行判断处理,超过设定值报警并进行控制调节;
 
  4)构建嵌入式Web服务器,使用户通过网络利用PC机进行监控;
 
  5)在Web页面上设置控制按钮,监控设备识别用户指令并进行相应动作;
 
  6)A8通过GPRS短信息功能向用户报警。
 
  2 系统实现
 
  2.1 数据采集中心的实现
 
  仓库的环境信息包括温度、湿度、光照、三轴信息和出入库信息,M0在硬件上选择以ARM架构的Cortex-M0微控制器,外接温湿度传感器DHT11、光照传感器ISL29003、三轴加速传感器MMA7455L、RFID射频模块CY14443-P、ZigBee无线通信模块(CC2430)。软件方面依靠Cortex-M0处理器强大的指令系统并配合Keil公司的Real View MDK裸机开发平台(支持自动配置启动代码,并且实现了一些基本的裸机函数)实现采集部分的裸机程序。数据采集中心软件实现流程图如图2。
 
  数据采集中心(终端)对必须的环境信息(温度、湿度、光照)进行采集,每5 s采集一次,一些辅助信息(电池电量、Axis_3三轴加速度)采集也同步进行,对以上数据采集后经过处理打包发送给数据处理中心(Cortex-A8),由信息处理中心产生相应的指令发回给终端(Cortex-M0)。对于基本信息除了供数据处理中心查看之外,还在终端上做了简单的数据显示、运行状态显示,考虑到数据处理中心与终端的交互安全性问题,正常情况下终端是由数据处理中心全部控制的,当可能的意外出现,数据处理中心无法控制终端进行环境异常报警时,终端30 s之后自动切换到自制模式,这时终端进行自我环境异常检测,环境出现异常时打开报警器报警,如遇温度过高时风扇设备会自行启动,以调节温度值,直至温度正常时风扇设备才会停止。该管理系统另外加了一个Axis_3三轴加速度报警,当地震时,由于不平衡而触发了Axis_3三轴加速度报警器报警。
 
  2.2 数据处理中心实现
 
  数据处理中心(定义为A8),硬件上选择基于三星S5PC100片上系统(以ARM架构的cortex-A8为核),移植Linux嵌入式操作系统。该部分一方面要接收由数据采集中心发送过来的仓库信息,判断接收到的仓库信息是环境信息还是货物信息,并对不同类型的仓库信息进行不同的处理。对于环境信息,数据处理中心需要做如下3个方面的处理:①检测相关参数是否超标,若超标则应该向执行中心发送控制信息以便将环境参数调节到正常范围,例如在温度过高时开起电风扇同时报警器报警;②提供一种将这些环境信息反馈给系统使用者的机制;③将这些环境信息存放到数据库中。对于货物信息数据处理中心需要做如下3个方面的处理:①提供一种将这些货物信息反馈给系统使用者的机制;②将这些货物信息存放到数据库中;③数据处理中心还要接收来自系统使用者的控制信息(用户的控制信息主要是针对仓库环境上下限值的控制),并将这些控制信息处理之后以一定的格式发送给数据采集中心和执行单元。另外作为优化,当数据处理中心检测到有环境参数超标时可以让其驱动GPRS模块发送短信告知用户。
 
  数据处理中心软件系统的架构包括3大部分:操作系统、系统服务和应用程序。操作系统移植Linux 2.635内核,系统服务处于操作系统和应用程序之间,系统服务架构在操作系统之上,利用操作系统提供的接口来实现一些应用程序需要使用的通用、核心的功能,并以接口的形式向上提供给应用程序供应用程序调用[10]。通过对需求的分析在这里需要使用的系统服务有Web服务器、WIFI WPA系统服务、SQlite3嵌入式数据库管理系统、网络视频服务器。应用程序是针对系统需求所设计出的实现特定功能的程序,根据对系统需求的分析,这里所设计的应用程序实现的功能是对数据的处理。M0(采集单元)采用裸机程序开发,这里不再具体说明。其他程序(线程)均运行在A8设备上,它们并不是裸机程序而是运行在Linux操作系统之上的,这里从应用层的角度给出了各个线程之间的关系,软件构架如图3。
 
  运行在A8设备上的线程简介如下:
 
  thread_client_request():处理消息队列里请求的线程;
 
  pthread_refresh():更新共享内存里的实时数据;
 
  pthread_sqlite():数据库线程;
 
  pthread_transfer():接收M0数据线程;
 
  pthread_analysis():M0数据分析线程;
 
  pthread_uart_cmd():M0控制命令发送线程;
 
  pthread_sms():短信模块控制线程;
 
  pthread_buzzer():A8报警器控制线程;
 
  pthread_infrared():红外(按键模拟)监测线程;
 
  pthread_led():A8 LED模块线程;
 
  pthread_camera():摄像头模块控制线程。
 
  2.3 客户端应用程序实现
 
  采用B/S模式的服务器架构将Web服务器安装在作为数据处理中心的A8设备上,然后系统使用者通过浏览器访问数据处理中心的Web服务器,在这种情况下经过数据处理中心处理后的数据就会被Web服务器的CGI进程读取然后生成html文件,并被浏览访问解析成网页最终展现在系统使用者面前。下面介绍主要线程的实现流程。
 
  2.3.1 软件环境 系统采用ASP.NET 2.0和C#语言进行开发、服务器采用Windows 2003 Serber/IIS 6.0,数据库管理系统采用SQL Sever 2005,在Visual Studio 2005集成开发环境下完成开发、集成和测试工作。
 
  2.3.2 数据库线程的实现 SQlite3 提供了一些C函数接口,可以用这些函数操作数据库。通过使用这些接口,以char*类型传递一些标准SQL语句给SQlite函数,SQlite就可以操作数据库。SQlite数据库线程流程如图4(左)所示,SQlite_task线程结构如图4(右)所示。
 
  主程序开始运行之后,各任务线程开始运行,其中就包括数据库的pthread_sqlite。pthread_sqlite线程开始创建一个用于存储对数据库操作的链表,链表创建之后进入while循环。循环中,用pthread_cond_wait函数语句进行睡眠等待,等待其他线程的唤醒函数pthread_cond_signal发来的信号,唤醒之后再次进入一个while的循环语句,在这个循环中,进行对链表头的判空工作。如果链表头不为空,则读取第一个节点的内容,把节点中的内容解析出来,把解析出来的内容作为参数传到sqlite_task函数中,完成相应的数据库操作并释放节点空间,如此循环;如果链表头为空,则直接跳出while循环,再回到外部循环的pthread_cond_wait函数进行睡眠等待,等待下一次被其他线程唤醒。
 
  2.3.3 数据接收线程的实现 数据接收线程主要负责从前端数据处理中心接收仓库信息,流程图如图5所示。
 
  2.3.4 数据处理线程的实现 数据处理线程主要用来处理接收到的信息,因为接收到的信息是按一定规律进行编码的,所以进行解码后,激活数据库线程,保存数据,激活内存刷新数据,更新实时环境信息,判断数据是否越界,若越界则激活设备控制线程进行相应的控制。流程图如图6所示。
 
  2.3.5 处理客户请求线程的实现 主要用于接收CGI、QT以及别的线程检测到异常发送设备控制请求的线程,流程图如图7所示。1L、2L、3L等代表不同的信息判定类型。

   论文榜(www.zglwb.com),是一个专门从事期刊推广、投稿辅导的网站。
本站提供如何投稿辅导,寻求投稿辅导代理,快速投稿辅导,投稿辅导格式指导等解决方案:省级投稿辅导/国家级投稿辅导/核心期刊投稿辅导//职称投稿辅导。


栏目列表
联系方式
推荐内容
 
QQ在线咨询
投稿辅导热线:
189-6119-6312
微信号咨询:
18961196312