机器谱

S139】智能仓库管理系统

图文展示3264(1)

图文展示3264(1)

副标题

作品说明

作者:李雪 李子龙 丁文龙 王小军

单位:宁夏大学

指导老师:朱瑜红 康彩

1. 市场调研及市场前景

      由于科技的快速发展,人们渐渐意识到智能化仓库管理的重要性。近几年来随着仓库的机械化、自动化程度不断提高,一些智能化仓库管理技术如检测技术、监视技术和测控技术等在仓库管理中得以应用。智能化的仓库管理模式代替了传统的靠人力管理模式,从而提高了仓库管理的质量和效率。不论是大型仓库还是中小型仓库,为了提高仓库管理的质量和效率并降低人力、物力以及时间的投入,越来越多的公司设计软件和硬件系统来管理仓库,使得仓库管理更加系统化、便捷化、智能化。目前市场上各类大型仓库管理使用 AGV 小车实现物到人的物品寻找模式或者使用 RFID 叉车人到物的物品寻找模式,效率高,但模式庞大,价格昂贵,不适合小型仓库管理。同样,目前市场有针对小型仓库管理的系统,价格在 30 万到 50 万不等,但这些仓库管理系统主要是针对前端软件方面的管理,缺少对仓库引导功能的设计。因此,本产品设计的将前端软件开发和仓库引导硬件设计相结合的仓库管理系统是小型仓库所需的,系统的进一步开发,也会使之受用范围大大扩增,目前市场上各类大型仓库管理使用 AGV 小车实现物到人的物品寻找模式或者使用 RFID 叉车人到物的物品寻找模式,效率高,但模式庞大,价格昂贵,不适合小型仓库管理。

      本产品适用于各大高校实验室仓库、医院药品仓库以及其他电子元器件产品仓库等各种小型仓库。本产品可根据商家具体所需,对仓库的功能进行改进和增加,以使用于更多类型的仓库,比如:汽车零件仓库管理,图书馆书本借取等管理系统中。因此,本产品设计的将前端软件开发和仓库引导硬件设计相结合的仓库管理系统是小型仓库所需的,系统的进一步开发,也会使之受用范围大大扩增,本产品将会有很乐观的市场和前景。

2. 作品功能介绍及先进性说明

2.1 作品功能

      智能仓库管理系统分为三部分:用户端、服务器数据库端、智能仓库管理硬件系统。微信公众号上进行物品搜索→得到物品的位置信息→门禁上输入指纹和位置信息→云台开始工作→引导用户拿取物品。

      ① 用户端使用现在普遍可见的微信公众号作为平台,具有用户信息管理、物品信息查询管理(包括:物品库存量、物品学习资料、物品存放位置信息)、物品借取归还管理等功能、管理员功能、物品学习功能。

      ② 服务器数据库端是用户端和仓库管理硬件系统的信息交互端。存储着用户和物品的信息,发送用户所需信息到用户端,并且发送信息到仓库端,使仓库端自行开始工作运行更加智能化。

      ③ 智能仓库管理硬件系统具有定位导航功能。通过输入物品位置信息,便有带激光的云台指到我们所需物品的具体位置快速便捷地找到所需物品。

作品说明

整体思路图

2.2 创新点

      ① 首先实现了从用户到器件的信息绑定、实现了器件定位、仓库引导等信息一体化。

      ② 物品信息的查询可直接查询到物品的所有学习资料,使用户快速获取物品相关学习资料。

      ③ 利用微信公众号低成本的实现了用户端与服务器和仓库物品的信息交互。

      ④ 门禁系统的设计、微信公众号以及云台激光发射器根据所输入的位置信息引导工作人员快速找到所需物品。

2.3 先进性与智能性

      ① 传统的仓库中,工作人员在一般都是依靠记忆或感觉寻找物品,从而需要大量的精力和时间。并且在借取物品时,依靠手动记录,容易出错,仓库管理效率低。本项目设计的智能仓库管理引导定位系统将微信公众号和数据库相结合,管理物品的具体位置,改变以往传统的模式,迅速反馈给操作者位置代码,在门禁处输入位置代码后,门禁系统会发送信息给云台激光发射器,两者简单的结合就可帮助工作人员快速找到所需物品,节省了大量时间和精力,提高了工作效率和准确度。

      ② 现阶段大多数仓库呈完全开放状态,不能管理人员与器件的流动状态。智能仓库管理引导定位系统将 Md5 的加密算法与公众号、门禁相结合,不仅实现了管理员、用户的权限控制,保障了信息安全,同时用户端可以使用现在普遍可见的微信公众号作为平台,在最短的时间里获取最准确的信息。在公众号注册信息后,输入关键字便可以获得物品信息,包括物品库存量、物品学习资料、物品存放位置信息以及物品借取归等信息。

      ③ 本项目设计的物品学习资料可以使用户在短时间内查到物品的详细资料, 帮助用户快速、便捷的学习物品,而且每种物品粘贴二维码,使用户不了解物品时,直接使用微信扫一扫,获取物品的资料。


3. 作品制作过程

3.1 思路来源

      现有大型的仓库管理比如亚马逊仓库管理以及国内各大物流公司仓库管理系统大部分都选择使用AGV小车或RFID叉车,实现物到人的货物搬用模式,模式全面、规模庞大,并且一整套仓库管理系统,高达几百万,所以不适用于国内这些小型仓库的管理。并且现有的各大高校实验室仓库管理、医院药品仓库管理以及各种电子元器件已经将物品的借取记录管理做得很智能化,但是仓库内部并没有引导功能,使工作人员找物品时很繁琐、困难,浪费大量的时间和精力。而且现有的物品信息管理缺少详尽的学习资料,使得用户对所需物品进行学习,查阅相关资料而浪费大量时间。本产品针对以上问题,设计开发了适用于各大高校实验室仪器仓库管理、医院药品仓库以及其他电子产品仓库等各种小型仓库。其中仓库具有引导功能,可帮助工作人员快速便捷找到所需物品;远端数据库和微信公众号有效管理仓库物品信息(包括:库存量、位置信息、详细的学习资料,详细的学习资料可帮助用户快速便捷的掌握物品的信息,为用户可节省大量时间)以及物品借取记录,两者相结合使仓库管理更加系统化、便捷化、智能化。

3.2 方案选择过程

      一开始本项目将现在运用广泛的二维码、公众号结合应用到仓库管理系统中,并且设计智能化的仓库,为仓库中的每类物品都分配了具体位置,空间,且配有智能锁,只有各个公司内部人员在微信公众号登录个人信息才能拿取所需物品,提高物品管理安全性、简便性。同样使用公众号管理,提高检索物品信息的效率。将二维码、公众号技术运用到仓库管理系统中不仅提高了吧仓库管理的质量和效率,降低仓库管理的成本。以合理的库存量控制库存和采购、以及其他的库存收发。集成性强、具有对企业内部供应链完整整合能力;库存的实时跟踪与监控;先进的管理理念和前瞻性思想;操作简单易用。后来本项目又加入了门禁系统和LED导航带为了快速自动化的索取物品,但是考虑到实际意义又将LED导航带换为云台激光指示灯,每个仓库区前放一个云台指示灯只要从树莓派输入要寻找的物品,指示灯就会快速准确的指向该物品,这样就避免了多人同时进入仓库寻找物品的混乱。

整体方案示意图

3.3 制作过程照片

4. 主要技术

4.1 树莓派(Raspberry Pi)

      本项目采用的树莓派控制系统采用嵌入式 Linux 操作系统中 Raspbian 操作系统。Raspbian 操作系统功能使用 Python 语言编写并控制。Python II IDLE是树萄派操作系统中是开发 Python 程序的默认基本开发环境,当安装Raspbian操作系统后 Python II IDLE 将被同时自动安装完成。Python II IDLE 集成的Python 语言编写作为树莓派开发板默认的程序编写方式,可以实现树莓派底层的各个功能调用,包括 IO 接口与传感器的连接与控制,IIC 总线通信等。

4.2 云台激光定位器

      Arduino 单片机与地标指示灯和电机连接,Arduino 单片机接收树莓派传来的指令以控制地标指示灯的工作,并生成相应指令发送给电机进而达到控制激光发射器的效果。

4.3 云台激光定位

      激光发射定位器的机械装置是将激光笔+俩个电机进行组合,一个电机控制激光上下高度,另一个控制激光左右角度,每一个位置都对应一套相应的指令。我们根据每种物品地特定位置利于程序算法,带动激光笔转动到指定位置,从而引导用户快速、便捷、准确地找到所需物品。

4.4 前端服务器设计

      前端服务器即网页服务器分为两部分进行实现,其中前端网页采用了HTML、CSS以及Javascript语言进行编写,后端采用 PHP 语言的开源框架ThinkPHP,主要用于与用户以及后端服务器进行交互。其中后端程序主要功能包括:物品取用部分以及物品管理功能,借还功能以及用户管理功能,实现了对于物品的借还管理以及用户实名制信息管理等功能,前端网页部分主要包括用户登录注销、物品位置、物品学习资料智能检索等功能。

4.5 后端服务器设计

      数据处理服务器采用跨平台开发框架SQL语言进行编写,向外采用Http协议及Socket接口进行通信连接,采用JSON进行数据交换;向内分为三个部分,即通信部分、管理控制部分与数据存储部分。通信部分采用HTTP请求作为作为SQL服务器与HTTP服务器的通信方式,采用TCP SOCKET请求作为SQL服务器与客户端服务器的通信方式。在后端服服务器中嵌入了用户管理模块以及物品管理模块两部分,实现对用户和物品的实时信息管理。并且使用数据库进行相关信息的记录。

4.6 微信公众号

      本项目将微信公众号作为用户使用平台,使用access_token接口调用凭据,将网站和微信公众号相连接,用户可通过公众号注册账号,进入公众号登录账号,发送关键字可以进行相关物品查询、借取、归还,同时会返回从数据库中所调取的器件数量信息与位置信息以及物品的学习资料,得到所需信息后到仓库拿取所需物品,并且仓库中的物品将粘贴二维码,可使用微信公众号直接通过扫描二维码,对陌生器件进行学习。微信公众号平台借取/归还、学习平台、管理员功能图如下所示:

物品借取/归还流程图

管理员功能图

4.7 远程调节与控制方式

      在命令行中输入ipconfig找到树莓派的IP地址,输入raspi-config,启动SSH服务器,设置密码后即可被远程登录。在Windows操作系统中,通过启动 远程桌面,输入树莓派的IP地址即可连接到树莓派。之后将可以在远程桌面中对门禁系统以及激光发射定位装置进行调节与控制。并且远程端也用于对数据库以及网页进行更改。

5. 程序源代码

① 云台控制部分

if(req != "")

{

a= req [5];

b= req [6];

angle_y = (50+((atan((x*(b.toInt()-t) / l)))*180)/pi);

angle_x =((a.toInt()-1)*(((atan((y+0.03) / l)*180)/pi)-24));

Serial.println(angle_x);

Serial.println(angle_y);

}

req = "";

myservo_x.write(angle_x);

myservo_y.write(angle_y);

delay(100);


<!doctype html>

<html>

<head>

<meta charset="gb2312">

<title>添加新器件</title>

<style type="text/css">

body {

background-color: #E9F1C9;

}

<!doctype html>

<html>

<head>

<meta charset="gb2312">

<title>添加新器件</title>

<style type="text/css">

body {

background-color: #E9F1C9;

}


rom PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Form(object):

def setupUi(self, Form):

Form.setObjectName("Form")

Form.resize(903, 621)

self.label = QtWidgets.QLabel(Form)

self.label.setGeometry(QtCore.QRect(280, 160, 61, 31))

self.label.setObjectName("label")

self.label_2 = QtWidgets.QLabel(Form)

self.label_2.setGeometry(QtCore.QRect(280, 200, 61, 31))

self.label_2.setObjectName("label_2")

self.pushButton = QtWidgets.QPushButton(Form)

self.pushButton.setGeometry(QtCore.QRect(420, 260, 93, 28))

self.pushButton.setObjectName("pushButton")

self.checkBox = QtWidgets.QCheckBox(Form)

self.checkBox.setGeometry(QtCore.QRect(300, 260, 91, 31))

self.checkBox.setObjectName("checkBox")

self.lineEdit = QtWidgets.QLineEdit(Form)

self.lineEdit.setGeometry(QtCore.QRect(340, 160, 113, 21))

self.lineEdit.setObjectName("lineEdit")

self.lineEdit_2 = QtWidgets.QLineEdit(Form)

self.lineEdit_2.setGeometry(QtCore.QRect(340, 210, 113, 21))

self.lineEdit_2.setObjectName("lineEdit_2")

self.label_3 = QtWidgets.QLabel(Form)

self.label_3.setGeometry(QtCore.QRect(340, 60, 141, 41))

self.label_3.setObjectName("label_3")

self.retranslateUi(Form)

QtCore.QMetaObject.connectSlotsByName(Form)

def retranslateUi(self, Form):

_translate = QtCore.QCoreApplication.translate

Form.setWindowTitle(_translate("Form", "Form"))

self.label.setText(_translate("Form", "<html><head/><body><p><span style=\"

font-size:19px; font-weight:600;\">账号:</span></p></body></html>"))

self.label_2.setText(_translate("Form", "<html><head/><body><p><span style=\"

font-size:19px; font-weight:600;\">密码:</span></p></body></html>"))

self.pushButton.setText(_translate("Form", "登录"))

self.checkBox.setText(_translate("Form", "记住密码"))

self.label_3.setText(_translate("Form", "<html><head/><body><p><span style=\"

font-size:24px; font-weight:600;\">仓库管理</span></p></body></html>"))

if __name__ == "__main__":

import sys

app = QtWidgets.QApplication(sys.argv)

Form = QtWidgets.QWidget()

ui = Ui_Form()

ui.setupUi(Form)

Form.show()

sys.exit(app.exec_())


<form action="userinfo.php" method="post" name="form1" id="form1">

<table width="511" height="62" border="3" cellpadding="1" cellspacing="1">

<tbody>

<tr>

<td colspan="3" valign="middle" bgcolor="#D6F7B8" style="font-size:

xx-large">查找用户资料</td>

</tr>

<tr>

<td width="104" valign="middle" bgcolor="#D6F7B8" style="font-size:

xx-large">学号</td>

<td width="249" valign="middle" bgcolor="#D6F7B8" style="font-size:

xx-large"><input type="text" name="xuehao" id="xuehao"placeholder="请输入要查找人员学号

"/></td>

<td width="97" valign="middle" bgcolor="#D6F7B8" style="font-size:

xx-large"><input type="submit" name="queding1" id="queding1" value="确定"></td>

</tr>

</tbody>

</table>

<p> </p>

</form>

<p> </p>

<form id="form2" name="form2" method="post">

<table width="511" height="91" border="3" cellpadding="1" cellspacing="1">

<tbody>

<tr>

<td colspan="3" valign="middle" bgcolor="#D8F5ED">添加管理员</td>

</tr>

<tr>

<td valign="middle" bgcolor="#D8F5ED">登陆学号</td>

<td valign="middle" bgcolor="#D8F5ED"><input type="text"

name="xuehao1" id="xuehao1"placeholder="请输入要添加的管理员学号"/></td>

<td rowspan="3" valign="middle" bgcolor="#D8F5ED"><input

type="submit" name="queding2" id="queding2" value="确定"></td>

</tr>

<tr>

<td valign="middle" bgcolor="#D8F5ED">登陆密码</td>

<td valign="middle" bgcolor="#D8F5ED"><input type="password"


<p> </p>

<p> </p>

<p> </p>

<p> </p>

<form id="form1" name="form1" method="post">

<p> </p>

<table width="347" height="232" border="0">

<tbody>

<tr bgcolor="#67AEFA">

<td height="73" colspan="2" bgcolor="#A7F1CE">管理员界面</td>

</tr>

<tr>

<td width="104" rowspan="2" bgcolor="#A7F1CE">管理员登陆</td>

<td width="233" height="39" bgcolor="#A7F1CE">   学号

<input type="text" name="xuehao" id="xuehao"></td>

</tr>

<tr>

<td bgcolor="#A7F1CE"><p>   密码

<input type="password" name="pass" id="pass">

</p></td>

</tr>

<tr>

<td colspan="2" bgcolor="#A7F1CE"><input name="login"

type="submit" id="login" formmethod="POST" value="登陆"></td>

</tr>

</tbody>

</table>

<p> </p>

<h1> </h1>

</form>

</body>

</html>


器件管理部分

③ 管理员界面

④ 管理员登录界面部分

⑤ 树莓派部分代码

* 本项目未获得作者开源授权,无法提供资料下载

© 2024 机器时代(北京)科技有限公司  版权所有
机器谱——机器人共享方案网站
学习  开发  设计  应用