【《基于条形码识别的智能分拣系统设计》19000字(论文)】_第1页
【《基于条形码识别的智能分拣系统设计》19000字(论文)】_第2页
【《基于条形码识别的智能分拣系统设计》19000字(论文)】_第3页
【《基于条形码识别的智能分拣系统设计》19000字(论文)】_第4页
【《基于条形码识别的智能分拣系统设计》19000字(论文)】_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文设计了基于条形码识别的智能分拣系统,利用条形码识别技术与输送带相结合,通过控制舵机的旋转进行分拣。本文主要做了以下工作:选择合适的直流电机进行驱动,通过齿轮间的相互配合进行力的传动,为了使摄像头在输送线的上方,利用铝型材搭建了龙门架结构,分拣部分选用MG996舵机,并根据舵机和铝型材的特点,设计并打印出合适的舵机固定件。通过对图像的灰度处理、轮廓定位、解码、译码等过程对条形码进行识别获取条形码内容。并根据条形码的内容控制相应的舵机的旋转。设计了智能分拣系统的硬件系统。选用STM32H7VIT6单片机作为核心,外设有欠压检测、复位、PWM等。选用了TB6612芯片作为电机的驱动芯片,摄像头选用OV7725,电源电路使用1117-3.3与1117-5芯片。本文的智能分拣系统可以使分拣人员的双手得到解放,可以长时间持续性的工作,提高了分拣作业的效率,减少分拣工人的雇佣,降低了分拣的成本,提高了企业的竞争力。关键词:电子商务、分拣、STM32H743VIT6、舵机、智能分拣目录目录1.1选题背景二十一世纪是一个讲究效率的年代,无论做什么,都要求有高效率。近年来,随着淘宝、京东、拼多多等电商平台的崛起,线上消费的人群也是越来越多.。线上购物价格实惠,但是时效性比较差,线下购物价格较高,但是时效性也高,所以,人们对线上消费的要求也是越来越高,既要求物品的质量,也要求物流的速度。这对于物流仓储行业来说,既是挑战,又是机遇。人们线上消费对于物流的要求就是安全、准确、快速。但是传统的物流行业分拣仍然是靠人工,虽然与流水线相结合,但是智能化程度并不高。目前人工费用较高,同时,人会疲惫、会分神,这就会导致分拣过程速度满,同时伴随着准确率较低的情况,无法满足消费者的要求,成本也相对较高。仓储物流行业等相关企业如果无法满足市场的需求,则会被淘汰。所以,自动化的建设将会是大大小小物流仓储企业的首选,不但可以长时间工作,而且速度也快,准确率也高,同时还能减少分拣过程的成本,物流自动化建设离不开仓库装备升级[6],本文将为了满足市场需求,设计研究一种智能分拣系统。1.2国外研究进展自二十世纪六十年代起,美国、欧洲等外国大型、中型物流企业已经开始使用工业自动化设备对物品进行分拣作业,提高了工作效率,节省了大量人力和物力,从效率低下的人工分拣转化为效率高的自动分拣。目前,通过几十年的发展与改进,随着信息化的建设和互联网的普及,物流仓储行业的自动化、智能化程度在以亚马逊为旗帜的带领下,得到了迅速的发展。现如今,物流仓储行业的核心竞争优势便是智能化、自动化、信息化多方面为一体的系统的建立以及大规模的运行。电子标签辅助分拣系统是外国物流仓储企业核心信息系统辅助之一。电子标签辅助分拣系统[7]是利用电脑的应用程序控制,利用物联网技术建立一套高度自动化、智能化、信息化的系统。该系统是通过硬件设备分拣,软件系统控制分拣的操作。1.3国内研究进展二十一世纪初,我国物流设备制造行业迅速发展,各式各样的物流设备数量迅速增加,与互联网、计算机结合越来越紧密。我国现代化企业的物流系统建设是伴随改革开放进程的推进,于[7]二十世纪90年代后期有了初步建设,发展时间不到二十年[8]目前,已经形成了生产、销售等完整体系的物流设备体系。自动分拣系统大致可分为移栽式、偏转轮式、扫臂式、滑靴式、侧向翻转、推盘式等14种自动分拣方式。为了研究自动分拣系统,我国大量的学者投入其中,田志勇[9]等人设计了基于PLC技术和RFID技术的智能分拣系统,刘红海[10]等一行人设计了基于RFID技术的条形码识别系统,并根据条形码内容进行智能分拣。苏孝利[11]利用FPGA实现了从快递单的图像进行分拣物品。韩潇、张祎昊[12]等人通过AGV实现了智能分拣。栗世尧、谭宇良等人[13]设计了PLC与工业软件相配合的智能分拣系统。何锦明[14]根据标准化包装的特性设计了气囊快递箱自动分拣系统。肖洪云[15]利用激光扫描和图像识别来获得货物的高度及其信息,并对其分拣。顾鹏飞[16]设计了基于STM32单片机的自动分拣机器人。但是,就目前而言,自动分拣系统还存在很多问题,与发达国家相比,还是有很大的差距。比如我国还是以人工分拣为主,辅助物流传送系统,存在分拣设备简单,存放以及分拣过程粗放,另外设备陈旧,需要花费大量资金对其进行维护保养,占地面积大,这些对物流分拣的发展都有很大的限制。但是为了我国的快递分拣效率的提升,我国各大领域的人才都在对其进行更深入的研究。1.4条形码识别技术的现状条形码在上过世纪三十年代才开始逐渐步入人们的视野,最早开始使用条形码的产品是箭牌口香糖,随后在邮政系统中进行邮件的分类。最初的条形码组成较为简单,一个“条”代表“1”,两个“条”代表“2”,三个“条”代表“3”依次类推。随着电子技术步入人们视野,人们对电子技术的了解也越来越深,就创造了以基本元件构成的条形码识别器,其原理是通过“空”与“条”反射的光的强度,“空”反射的是高强度,而“条”反射的是低强度,由此可以识别条形码。但是由于当时的技术条件有限,成功识别的概率低。随着技术的不断发展,条形码的识别技术逐渐完善。RFID(RadioFrequencyIdentification)技术逐渐被用来实现条形码的读取。万孟飞等人将RFID与条形码技术进行结合,设计出了仓储的管理系统,实现了货物与信息的同步,提升了仓储管理的效率。PerrinRA等人将RFID与条形码应用在药物管理上。ZhengDS[17]等人为了提高图像识别条形码的准确率,提出了条形码压缩识别算法。但是RFID的局限性高,同时RFID标签的价格较高,小微企业很难承受,所以图像识别条形码还是有很大的意义。我国在图像识别条形码上起步较晚,所以目前我国在该方面的技术还算不上成熟,所以应该加大投入研究。目前,出现了利用相机对快递单进行图像采集,而后根据图像技术对条形码进行识别,该技术需要配合摄像头或者摄像机进行工作,但是在处理条形码模糊、条形码破损上都有很好的处理能力,这是RFID扫描器所不能及的,极大的体现了图像识别条形码的优势,极大的提高了条形码识别的准确率,所以,图像识别条形码技术的应用前景非常广泛,图像识别条形码将会被越来越多的行业所接受。1.5研究意义本文主要研究关于智能分拣系统的设计,目的是提高分拣的效率以及准确率,降低分拣成本,提高物流仓储行业的营收,保证物流的速度,满足人们日常的需求。目前我国智慧物流平台的搭建、智能管理、智能供应链等方面已经取得了积极的成效,但是,由于我国智慧物流起步较晚,仍然存在很多需要提升的方面,比如物流智能化程度低,物流信息标准体系不健全,没有大范围使用智能物流设备与系统以及缺乏物流行业的人才,这些阻碍了我国智能物流的发展。1.6研究内容以及研究方法第一章:引言。主要介绍本课题的研究背景、国内外研究进展、条形码识别技术的现状、研究意义、研究内容以及研究方法。第二章:机械部分设计。主要介绍本文中驱动部分、传动部分、识别部分、分拣部分的机械内容。第三章:程序部分设计。主要介绍摄像头识别条形码的原理。第四章:硬件部分设计。主要介绍MCU、电机驱动模块、电源电路等。第五章:总结与展望文献研究:通过阅读大量与智能分拣系统相关的书籍和文章,增加对智能分拣系统的了解,加强对摄像头识别条形码的认知。实验分析:对单片机进行程序编写,反复调试,不断得出结果,并对得出的结果进行分析。机械部分是整个智能分拣系统的主要的外在表现形式,也是完成分拣必不可少的部分。主要分为驱动部分、传动部分、识别部分、分拣部分,共四部分组成了完整的机械部分。驱动装置的意义是带动滚子转动,以达到输送物品的目的。驱动装置中,电机的选择是很重要的,在本次项目中,对于电机的要求是容易启动、容易停止、速度可以对其进行调节并且速度的变化要迅速,除了能够达到上述要求外,价格也要优惠。电机一般有步进电机、直流电机、伺服电机。对于不同的应用场景,对于电机的要求也不同。步进电机、直流电机、伺服电机三款不同的电机适用于不同的应用场景以及领域。步进电机从根本上说是一种使用不同的电动化方法的伺服电机[网址]。步进电机一般由前端盖子、轴承、中心轴、转子铁芯、磁钢、绕组绝缘、定子铁芯、波纹垫圈、后端盖子、螺丝组成,其中定子铁芯与绕组绝缘组合成定子组件。步进电机是把电脉冲转化为角的位移或者是线的位移,步进电机是根据施加在电机线圈上的电脉冲的顺序、频率以及数量,实现对步进电机的转向、转速、旋转角度的控制。直流电机是由两根线控制并不断旋转的电机,这两根线分别是电源和地线,接通电源就会旋转,直到断开电源停止。直流电动机是可以通过PWM进行调速的。伺服电机结合了直流电机、位置传感器、齿轮传动以及控制电路。该电机适合需要高精度的工作,例如机械臂等,若是使用PWM进行控制,则相对较为复杂。在本次项目中,选用的直流电机,驱动电压为3V到24V。该电机的工作原理是电磁转化原理,将电能转化为机械能,是由缠绕在电机定子齿槽上的线圈驱动。直流电机的优点有以下六点:体积小:步进电机的体积比较小,不会占用太大的空间散热快:具有较好的散热功能平稳:在电机的运行过程中较为平稳速度可控:可以通过PWM(脉冲宽度调节)来控制电机的转速耐用:直流电机适用性强,经久耐造安静:直流电机在工作时噪声小电机的速度控制一般为两种。其一为通过PWM的占空比控制速度。首先需要了解PWM指的是什么。PWM波英文全称为“PulseWidthModulation”,中文为脉冲宽度调节,是利用微型处理器的数字信号输出从而对模拟电路进行控制的一种非常有效的方法,广泛应用在众多领域。一个脉冲周期包含一个高电平,一个低电平,占空比则指的是高电平占整个周期的比例。例如一个脉冲周期为10毫秒,高电平为6毫秒,低电平为4毫秒,则占空比为60%。PWM的工作原理为将数字信号转化为模拟信号。单片机的IO口输出的是数字信号,IO口只能输出高电平和低电平。假设5V为高电平,0V为低电平,一个脉冲周期为10毫秒,为了要控制电机的速度,需要利用到IO口输出的方波的占空比,若使一个脉冲周期中高电平为5毫秒,那么占空比就为50%,输出的模拟电压为2.5V,若使一个脉冲周期的高电平为7毫秒,那么占空比为70%,输出的模拟电压为3.5V。通过对输出的模拟电压的控制,进而对电机的转速得到控制。输出的模拟电压越高,电机的转速越高。在电机接受到不同的电压时,有不同的反应。当输出端是高电平时,电机会转动,但是电机的提速过程是一个循序渐进的过程,由上述可知,一个脉冲周期是由一个高电平和低电平组成,当输出端突然转为低电平时,点击由于存在电感,而电感的作用就是防止电机突然停止,所以电机并不会因为输出的是低电平就会停止,保持原有的速度,以此往复,电机的平均转速就是周期内平均输出的电压值,所以实质上电机是一种似停非停,似全速而非全速的一种状态,因此一个周期的平均速度就是占空比调出来的速度。在对电机的控制中,不同的电机有不同的合适的频率,并不能一概而论,如果频率太低就会导致电机的运动不稳定。第二种控制方法则针对实时情况的速度控制,即通过PID对速度进行调节。PID调节是经典控制理论中的一种基本的调节方式。PID中P指比例调节,I指积分,D指微分。进行PID调节控制电机的前提是有速度反馈。其中比例调节是按照比例去反馈速度的偏差,速度出现了偏差,比例调节可以立即作出反应,减少偏差,可以进行快速调节,减少误差,但是如果过大的比例,会造成系统的稳定性差。积分调节的存在则是为了消除误差,只要系统中存在误差,积分调节就会进行工作,减小误差,直到误差不存在,才会停止工作。但是积分调节会降低系统的稳定性,使系统的动态响应变慢。微分调节的作用是显示系统偏差的变化率,能够提前预见偏差变化的趋势,在偏差还没有形成之前被微分调节处理,做出响应的反应,所以,微分调节具有超前的控制作用。能够提高系统的动态性能。在一些对反应要求较高的工作环境中具有特别的意义。整体来看,本课题的驱动部分要求并不高,不需要在运动过程中对电机的转速进行调节,只需要按照一定的速度进行工作即可,所以,本课题的驱动部分是通过PWM占空比对电机进行调节控制的。传动部分是指将驱动部分的力进行传送,以达到指定某部分运动的目的。在本课题中,传动部分是指将电机驱动的力传送到滚子,滚子进而将力传送到输送带,输送带进而可以运动,可以运输物品。通常情况下,传动结构摩擦传动、齿轮传动、链条传动、皮带传动、联轴器传动等多种传动方式。摩擦传动:摩擦传动顾名思义就是通过面与面之间的摩擦达到传递运动和动力的目的。摩擦传动的优点是结构简单、易维护、运动平稳、自动防过载(打滑)的特点。但是运动过程中存在滑动,所以传动效率低,并且摩擦传动结构尺寸一般情况下较大,作用在轴与轴承上的力较大,所以摩擦传动适用于传递动力较小的环境。齿轮传动:齿轮传动是指通过齿轮副传递运动和动力的传动方式,其具有结构简单、传动精度高、传动的效率高等特点,并且平行轴、相交轴、交错轴等任意空间的两个轴之间的传动,并且齿轮传动的寿命较长,是当前机械传动常用的一种传动方式。齿轮可以按齿形、齿轮的外形、齿轮中齿线的形状、齿轮的制造方法等对齿轮进行分类。但是齿轮传动的缺点就是噪音相对较大、安装精度要求较高、不适合用在轴间距离较大的机械设备上使用。生活中最常见的齿轮传动的系统就是钟表,钟表内部是由各种齿轮组合而成,经过各个齿轮之间的协调配合,最终使得钟表可以有相当精确的时间,好一点的钟表很多年误差都不会超过1秒钟。链条传动:链条传动是链条连接电机与被驱动部分,链条传动不会产生打滑的现象,传动的效率较大,损失的动能小,可以在温度高、灰尘多、潮湿等恶劣环境中进行使用。但是该传动方法的成本高、容易损坏、不能够像齿轮传动那样可以交错传递动能,而且链条传动的系统稳定性比较差。生活中常见的链条传动的例子就是自行车,自行车是最简单的链条传动系统,将人登脚蹬的力传给后轮驱动。链条如下图所示。图1:链条皮带传动:皮带传动中,可以分为主动轮与从动轮,主动轮表示电机或者驱动部分,皮带连接主动轮与从动轮,利用皮带与两个轮的摩擦进而达到力的传递的作用。皮带传递结构简单、造价较低、相对于齿轮传动而言,更有利于维护维修,维修时一般更换皮带即可。在工作时,由于是利用皮带与轮子之间的摩擦传递力,所以肯定会存在将动能转化为内能的过程,这时就会造成皮带发热,所以,皮带传动不可以用在易燃易爆的工作场所,存在安全隐患。皮带传动对皮带的张紧度有很高的要求,如果皮带不够紧,就会造成打滑的现象,所以皮带传动中皮带需要拉紧,并且由于存在动能与内能之间的转化,所以,皮带传动的传动效率比较低。通过综合对比,本次智能分拣系统的机械部分中的传动结构选用齿轮传动。电机与伞齿轮连接,伞齿轮与伞齿轮连接,从动的伞齿轮通过轴与一个正齿轮相连接,带动正齿轮的转动,正齿轮下方与带有正齿轮的滚子相连,从而使得滚子转动,滚子带动上方皮带的转动,进而可以达成流水线效果,达成运输物品的目的。连接方式如下图所示。图2:传动结构2.3识别部分在该智能分拣系统中,不可缺少的就是识别部分,机械中识别部分的主要作用就是放置摄像头,方便摄像头获取图像并进行识别。为了摄像头能够识别到图像,就要确保摄像头在待分拣物品的正上方,同时要求物品带有条形码的一面朝上。那么需要怎样将摄像头才能够处于上方的位置呢?因此,我们选用了铝型材,通过铝型材之间的相互连接,搭建龙门架,将摄像头固定在龙门架上,摄像头方向向下进行图像的识别。首先介绍一下铝型材,铝型材广泛适用于建筑行业、工业制造行业交通运输行业、航空航天等诸多行业领域,铝型材具有结构简单易安装易拆卸、轻便、环保、耐腐蚀等特性,所以涉及到的应用范围较广,之所以说铝型材易安装易拆卸是因为铝型材之间的连接不是通过电焊焊死,而是通过角件进行连接,角件与铝型材之间通过T型螺母对其进行固定,同时可以根据自己的需求改变位置,拆卸时只需将T型螺母拆下即可解除铝型材之间的固定状态,不会损坏铝型材。国内铝型材的型号由20系列到100系列总共9个系列,每个系列又有不同的型号,型号的不同,铝型材的截面大小与形状也不同。为了与整个系统相匹配,所以选择了20系列的铝型材,该铝型材的截面图如下图所示。图3:铝型材的截面图该材料轻便,易于安装在智能分拣线上,首先需要在分拣线左右两旁安装两根大小适宜的铝型材,然后在将两根垂直于分拣线左右两旁的铝型材通过角件与之相连,相连之后,便在垂直方向上有了有了高度,但是并不能将摄像头放在上面,所以仍需放置一根水平方向的铝型材,再次通过角件与两个垂直方向的铝型材相连,至此,摄像头才能够完成识别部分的结构。该结构的最大优点就是可以根据需要对其水平方向和垂直方向进行调节,不会因为一时的失误导致位置不合适,想要更改位置却并不容易的问题。龙门架结构如图所示。图4:摄像头龙门架结构2.4分拣部分分拣部分是该智能分拣系统的最后一个步骤,其原理是输送带对物品进行输送,根据条形码扫描结果,控制舵机的旋转,舵机连接挡板,由于输送带是一直在进行工作的缘故,便会由于挡板的旋转,与输送带组成响应的夹角,货物便会根据挡板的方滑动,最终落入相应的分拣框中。舵机一般分为模拟舵机与数字舵机,两者在机械结构方面上差异不大,都是有马达、控制电路,减速齿轮组合而成,两者之间最大的区别则是表现在控制电路之上,数字舵机的控制电路比模拟舵机的控制电路多了晶振和微处理器。两者具有以下四个不同点:对于输入信号的处理方式不同:数字舵机只需要发送一次PWM信号就可以旋转到规定的角度,并且保持,而模拟舵机是需要多次发送PWM信号,才可以旋转到规定的角度,并且保持。两者的控制电路不同:数字电机比模拟电机多了晶振和微处理器,所以在控制电路方面上也不同。反应速度不同:数字电机反应迅速,而模拟舵机反应较为迟钝,因为模拟舵机的转动需要一个较短的脉冲,接受到脉冲之后还会停顿一段时间,而数字舵机由于存在微处理器,所以动力脉冲可以发生在马达之前就会对接收到的信号根据相应的一些参数进行处理。价格不同:数字舵机因为在很多方面优于模拟舵机,所以数字舵机在价格方面一般要比模拟舵机高,不具备价格优势。本项目是通过舵机的旋转来分拣货物,对于舵机并没有较高的要求,所以,综合上述优缺点的分析,本文选用了模拟舵机MG996舵机,该舵机具有体积小、重量轻、价格低]等特点。舵机要想实现分拣的任务,首先就是要将舵机固定在合适的位置上。如何将舵机固定在输送线的两旁是个问题。但是在上述的识别部分中,应用到了铝型材,所以,舵机的固定仍然可以借助铝型材。为了能够将舵机与铝型材连接并固定,需要利用Solidworks绘制舵机固定件,并将其进行3D打印。为了设计出合适的舵机固定件,既需要考虑铝型材的形状又需要参考舵机的外观,以便进行舵机的固定。舵机的外观如下图所示。图5:舵机由上图可以看出,舵机上方的两侧均具有两个螺丝孔,若想让舵机固定,便可将螺丝通过螺丝孔与舵机固定件相连,根据舵机该特性,便可以设计出固定件的上半部分。该固定件下方则需要与铝型材相连接,铝型材外侧的中间部分具有凹槽,所以可以利用该特点设计出舵机固定件的下半部分,最终,舵机固定件如下图所示。图6:舵机固定件完成舵机固定件的设计之后,需要将其打印出来。3D打印的材料一般有PLA、ABS、尼龙以及光敏树脂等材料。PLA是聚乳酸,具有食品级的要求,其打印出来的模型不会翘边且没有气泡。ABS是3D打印中常用的材料,其具有耐高温、强度高、韧性好等特点,打印出来的模型表面光滑,并且重量较轻。尼龙耗材适合打印较为复杂的模型,对于后期的处理来说,较为容易。而光敏树脂可以用于制作高强度、耐高温、防水等。综合上述,从经济效益以及材料的用途放弥漫考虑,本项目采用ABS耗材对其进行打印。另外,由于该部件是由自己单独设计,并采用ABS耗材3D打印出来,为了保证设计出来的部件满足该系统的要求,所以需要对其进行静应力分析与屈服力仿真,该步骤需要运用到solidworksSimulation,静应力分析通常是用来分析在静力的作用下该部件的响应,而屈服力表示的是材料结构强度的一种度量,简单来说可以理解为材料的韧性。仿真结果如下所示。图7:仿真结果由仿真结果可以得出,该舵机固定件完全可以满足要求。另外,完成分拣动作的是舵机与挡板。舵机一般分为模拟舵机与数字舵机,模拟舵机的控制电路为纯模拟电路,要想使舵机维持在一定角度,需要不断地发送信号,但是其响应速度较慢。数字舵机一般价格较高,不需要不断地发送信号,只需要发送一次信号,反应快。在本项目中舵机选用MG996舵机,为模拟舵机,该舵机具有体积小、重量轻、精度高、价格低的优点,同时本项目对于舵机并没有太高地要求,模拟舵机便可完成所需动作,因此选用了MG996舵机。本项目中,为了完成分拣地动作,需要挡板连接舵机,进而挡板旋转,但是对于挡板与输送线地位置关系有所要求,不可以使挡板与输送线处于垂直关系,因为根据力地分析,若挡板与输送线处于垂直关系,只会使物品停滞不前,并不能够起到分拣地目的,所以在该项目中,挡板设置与输送线处于120°夹角的关系,那么问题来到了舵机旋转角度的控制。舵机旋转角度同样可以通过占空比的方法来控制旋转角度。根据参考资料可得,舵机的一个脉冲周期为20毫秒,经过不断测试当高定平为0.5毫秒的时候挡板旋转0°,当高电平为1毫秒的时候挡板旋转45°,当高电平为1.3毫秒时,挡板选装角度大概为60°,所以此时是为较合适,此时高电平为1.3毫秒,低电平为18.7毫秒。挡板为自己设计,通过自攻螺丝与舵机舵盘连接,当舵机转动时,挡板随之转动。分拣部分整体如下图所示。图8:分拣部分2.5本章总结能分拣系统的机械部分整体分为四个部分,即驱动部分、传动部分[18]、识别部分以及分拣部分,驱动部分通过PWM占空比控制电机的转速,传动部分通过伞齿轮、平齿轮之间的相互配合达到传输动力的目的,识别部分通过铝型材之间的相互配合构建龙门架结构,使摄像头能够处于上方,放别识别图像,分拣部分即通过舵机旋转达到分拣的目的,舵机选用模拟舵机MG996舵机。舵机的旋转角度同样是利用PWM占空比机械控制,同时舵机的固定是通过舵机固定件与铝型材和舵机相互配合,达到固定的作用,挡板与舵机通过自攻螺丝进行连接固定,最终达到分拣的目的。程序部分是整个系统的大脑,管控着各个部分的协调配合,其中主要便是在运动过程中识别条形码,并且根据条形码识别的内容进行进而控制舵机的旋转,达到分拣的目的。本章通过对Code128条形码的编码原理进行认识,并且通过抓拍物品在运输过程中的图形,对图像进行灰度处理、闭运算等一些列操作对条形码进行定位,得到可以进行条形码识别的图像后,计算并比较条与空宽度的大小,确定基准模块,最终对比条形码编码表分析出条形码所包含的内容。本文主要为智能分拣系统的设计,而智能体现在能够识别货物信息,根据货物信息进行智能分拣。单片机如何识别货物的信息呢?本文利用的是摄像头识别条形码,进而获得物品信息的方法。条形码简称条码,英文名称为barcode,是产品的身份识别代码,也可以称为产品的“身份证”。条形码由全球GS1(Globestandard1)标准委员会定制的全球的统一性的标准,然而,每个国家都会对其进行细致的管理,我们国家的条形码是由国家物品编码中心指定的国家应用标准和应用规范。我国产品上市销售,都需要进行申请条形码(EAN-13),表示是一种由13个数字组成的条形码类型。每个国家都是不同的,例如美国使用UPC-A\E类条形码。条形码又称为一维条形码,一般用在产品标签、物流管理、图书管理、医药食品等领域。EAN-13条码,是当今世界使用的最广泛的条形码,一共由13个数字组成,第13个数字是校验数字,内容是根据前12个数字计算得出。还有一种EAN-8条形码,是EAN-13条码的缩短型。如下图所示。图9:EAN-13与EAN-8条形码根据应用目的的不同,可以大致可以分为商品条形码、物流条形码、图书管理条形码。主要区分一下物流条形码和商品条形码。标志的意义不同:商品条形码一般包括商品的产品名称、生产日期、保质期、生产地等,一般情况下是商品的唯一标识。物流条形码一般是储藏运输单元的唯一标识,一般情况下表示多个或者多种商品的集合。物流条形码一般贴于商品的外包装,供运输、分拣、存储等作业使用。两种条形码服务的领域不同:商品条形码使用于整个商品的最后一个环节,也就是销售环节。而物流条形码是使用于整个商品除了销售的各个环节。信息容量不同:商品条形码一般由13位或者8位数字及符号组成。商品条形码的长度固定、内容少。物流条形码一般是Code128条码,可包含物品的体积、重量、生产日期、批号、发货地、目的地等信息,包含的信息多。标准维护不同:商品条码是国际通用标准化商品的唯一识别码,是零售业的国际语言,更新较少,方便维护。而Code128条码大多是企业工厂自己用或者同行业合作伙伴对各种信息的不断增加应运而生,维护起来相对比较不方便。3.2条形码的编码方法条码的编码一般按照唯一性、无含义性、稳定性的原则来进行编码。通常情况下,有模块组合法和宽度调节法两个编码方法。模块组合法又称为连续性条码,EAN条码、UPC条码和93码均使用模块组合法。模块组合法指一个标准宽度的条表示“1”,一个标准宽度的空表示“0”。然后根据“1”和“0”的顺序组合,进而得到条形码所包含的内容。宽度调节编码法是指条与空分为窄单元与宽单元,窄的条或空表示逻辑值“0”,宽的条或空表示逻辑值“1”。通常来说,宽单元是窄单元的2~3倍。39条形码、库德巴条形码和交叉25条形码都属于宽度调节编码法编制的条形码。3.3Code128条形码本文所识别的条形码类型为Code128条形码,Code128条形码在物流、仓储行业应用相对广泛,故详细了解Code128条形码。Code128A字符集包含大写字母、常用符号、数字以及一些控制类的字符Code128B字符集包含大写、小写字母、常用符号、数字Code128C字符集为纯数字集起始位+数据位+校验位+终止位起始位:211214数据位:开始位到校验位中间终止位:2331112图10:Code128条形码如上图所示,从左往右依次读取,黑色的为条,白色的为空。根据宽度的不同,从细到粗依次赋予1、2、3、4。如图2所示,按粗细值阅读条码为“2112142133111121331221321311231123131221323123111321313123111131412331112”。Code128条形码终止序列总是为“2331112”,起始序列为“211214”,为Code128B条形码起始序列。除去起始序列与终止序列,剩余其他为6个数字一组,即为“|213311|112133|122131|131123|112313|122132|312311|132131|312311|113141”其中,最后一组数字“113141”为校验序列,剩余其他为数据序列。然后在根据Code128编码表得到条形码所包含的内容,其内容为“TJ-BD-ZLZ”。Code128编码表如下表所示:IDCode128ACode128BCode128CBandCodeSPSP0212222!!1222122““2222221##3121223$$4121322%%5131222&&6122213‘‘7122312((8132212))9221213**10221312++11231212,,12112232--13122132..14122231//151132220016123122111712322122182232113319221132442022123155212132126622223112772331213188243112229925321122::26321221;;27312212<<28322112==29322112>>30212123??31212321@@32232121AA33111323BB34131123CC35131321DD36112313EE37132113FF38132311GG39211313HH40231113II41231311JJ42112133KK43112331LL44132131MM45113123NN46113321OO47133121PP48313121QQ49211331RR50231131SS51213113TT52213311UU53213131VV54311123WW55311321XX56331121YY57312113ZZ58312311[[59332111\\60314111]]61221411^^62431111__63111224NUL`64111422SOHa65121124STXb66121421ETXc67141122EOTd68141221ENQe69112214ACKf70112412BELg71122114BSh72122411HTi73142211LFj74142211VTk75241211FFl76221114CRm77413111SOn78241112SIo79134111DLEp80111242DC1q81121142DC2r82121241DC3s83114212DC4t84124112NAKu85124211SYNv86411212ETBw87421112CANx88421211EMy89212141SUBz90214121ESC{91412121FS|92111143GS}93111341RS~94131141USDEL95114113FNC3FNC396114311FNC2FNC297411113SHIFTSHIFT98411311CODECCODEC99113141CODEBFNC4CODEB114131FNC4CODEACODEA311141FNC1FNC1FNC1411131StartAStartAStartA211412StartBStartBStartB211214StartCStartCStartC211232StopStopStop2331112表1:Code128编码表3.4条形码识别条形码识别是一个相对较为复杂的过程,需要经过很多步骤才能够达到提取内容并对其进行识别的工作。首先需要摄像头捕捉图像,需要在摄像头能够捕捉到的所有图像中进行灰度处理,灰度图片如图11所示。处理成为灰度图像后进行轮廓定位,进而定位到条形码,之后通过条与空的宽度得到基准模块,通过计算每个条与空中基准模块的个数,得到数字,对比编码表最终完成译码任务。参照编码表解码得到数字轮廓定位灰度处理参照编码表解码得到数字轮廓定位灰度处理译码成功译码成功图12:条形码识别流程图摄像头定位条形码需要深度考虑条形码的特性,条形码在竖直方向上,具有相同长度的条或空,在水平方向上,黑色的条与白色的空相间配合组成。但是在时间识别扫描的过程中,图像中可能并不只有条形码,可能包含其他的影响因素,如图13所示,图中不但包含条形码,还包含有二维码。扫描到该图像后,对其进行灰度化处理[19],处理结果如下图所示。在一幅模糊的图像中,条形码的周围轮廓灰度的变化不强烈,因此,图像中的层次感并不明显,而在清楚的图像中,条形码的边缘轮廓灰度变化强烈,图像中的层次感明显。因此便使用梯度来定义图像的清楚与否。在该灰度图像中,分别计算X与Y方向的梯度,再用X方向的梯度减去Y方向的梯度,目的是既能够保留X方向的梯度特征,又能够减少Y方向梯度的干扰。但是在该图中,二维码对于条形码的定位产生了一定的影响,但是二维码的空间漏洞比条形码多,所以,在对其进行模糊化,并且二值化,如图15所示。二维码对条形码的影响,在一定程度上有所减少,但是,条形码中出现了黑色的缝隙[20],该缝隙不利于条形码的定位完整的区域,因此进行闭运算来除去黑色的缝隙。算子根据高度于宽度的特征处理黑色的缝隙。处理结果如图16所示。图16虽然条形码中黑色的缝隙明显减少,但是二维码仍然占据整个图像当中很大一部分,对条形码的定位有较大的影响。利用多次膨胀与腐蚀,膨胀的目的使断开二维码的链接,腐蚀使将二维码部分进行腐蚀。结果如图17所示。图17:多次膨胀后的图像到此时对条形码的定位的影响就已经微乎其微了,然后就可以计算图像中每个轮廓的面积,并对面积大小进行比较,选出面积最大的轮廓即为条形码的轮廓。图像在计算机中就可以认为是函数,因此可以将图像看作二维离散型函数,图像的梯度可以看成二维离散函数的求导。例如,某处原图像像素经过梯度变化转化为新图像像素如下图所示。图18:像素梯度变化图如上图所示,相邻位置的像素有所变化,则就存在梯度,如果相邻位置的像素没有变化,那么就不存在梯度。新图像x方向的像素是有原图像x方向的像素加上该处像素梯度的值变化而来,梯度是原图像x方向像素中相邻位置的像素差。例如,100与80的梯度为20,那么新图像该处的像素为100加20得120,相邻处新图像的像素由于不存在梯度,或者梯度为0,所以仍为80,得到的新图像的梯度为120减去80得40,由此变化可以明显发现梯度有所增加。本文则利用这一方法来增强图像得区分,以便于条形码定位与识别。图像函数f(x,y)表达式为:公式1幅度公式:公式2方向角公式:公式3差分求近似倒数:公式4故像素点(x,y)处的梯度值和梯度方向为:公式5上述公式中,包含平方与开平方,计算量较大,所以,可以利用绝对值来近似平方和平方根的操作,降低计算量:公式6首先需要对图像进行灰度处理,本文运用到cvtColor函数,cvtColor(image,gray_image,COLOR_BGR2GRAY)函数三个参数分别为原图像、色彩空间转化后的图像、源和目标色彩空间。通过图片通道数判断图片进行灰值化,如果通道数为3,则进行灰值化处理,否则为原图其程序为:if(srcImage.channels()==3){cvtColor(srcImage,grayImage,CV_RGB2GRAY);}else{grayImage=srcImage.clone();}随后,通过scharr()算子建立图像的梯度幅值,因为在X方向上梯度大,选用X方向的梯度,所以利用subtract()函数使X方向的梯度,减去Y方向的梯度,进而减小Y方向梯度的影响。程序如下:Scharr(grayImage,gradientXImage,CV_32F,1,0);Scharr(grayImage,gradientYImage,CV_32F,0,1);subtract(gradientXImage,gradientYImage,gradientImage);convertScaleAbs(gradientImage,gradientImage);随后需要对图片进行相应的模糊处理,再此处利用blur函数,该函数中此处用到了其中三个参数,其中第一个参数为原图像,第二个参数为目标图像,第三个参数为size,即为内核大小,通常用Size(w,h)来表示,其中w为宽度,h为高度。模糊处理之后,对图像进行阈值化处理,即可得到相对应的黑色与白色的二值化图片,该步骤调用threshold()函数,该函数有四个参数,分别为原图像、二值化后的图像、阈值的具体值、参数阈的类型。得到二值化的图像之后,需要消除小黑点。因此需要运用到形态学[],在形态学中,分为开运算和闭运算,开运算使值先腐蚀,再膨胀,可以消除一些亮的小东西,然后再对其进行局部放大,放大那些低亮度的部分。而闭运算则是先膨胀,后腐蚀,可以清除小黑点。所以闭运算符合目前的需求,在此处我们利用到getStructuringElement()函数与morphologyEX()函数。在此过程中,为了让图像的大小保持不变,所以要用相同次数的膨胀与腐蚀。先腐蚀,为的是让图像中亮的地方减少,而膨胀是为了消除干扰。该过程的程序如下:blur(gradientImage,blurImage,Size(9,9));threshold(blurImage,thresholdImage,210,255,THRESH_BINARY);Matkernel=getStructuringElement(MORPH_RECT,Size(21,7));morphologyEx(thresholdImage,morphImage,MORPH_CLOSE,kernel);Erode(morphImage,morphImage,getStructuringElement(MORPH_RECT,Size(3,3)),Point(-1,-1),4);dilate(morphImage,morphImage,getStructuringElement(MORPH_RECT,Size(3,3)),Point(-1,-1),4);完成以上任务后,便可以对条形码的轮廓进行查找,在查找这一任务中,本文调用了findContours()函数,利用到了其中的四个参数,第一个参数为被寻找轮廓的图像,第二个参数为轮廓,第三个参数为轮廓的检索模式,一般情况下,轮廓的检索模式分为只检测外侧轮廓、检测到的轮廓不建立等级关系、检测到的轮廓建立两个等级关系与建立一个等级树结构的轮廓四种检索模式。第四个参数为近似轮廓的办法,一般情况下分为两种,一种为存储所有的轮廓点,另一种方法为压缩横向、纵向以及对角线方向的元素,只保留该方向上的终点坐标位置。图像中,出现轮廓之后,便需要对轮廓的面积进行计算。轮廓的面积计算在此处调用contourArea()函数,该函数主要是计算轮廓的面积。得到各个轮廓的面积之后,需要对比所有轮廓面积的大小,找到面积最大的轮廓,之后,计算最大面积轮廓的最小的外包的矩形。得到最小外包矩形之后,要计算该矩形的偏斜角度,如果矩形的偏斜角度超标,则该矩形不是想要的,即不是条形码的轮廓矩形。找到对的矩形之后,将扫描的图像进行裁剪,并保存为相对应的结果,保留x方向的边界,扩大矩形。该部分的程序如下:findContours(morphImage,contours,RETR_EXTERNAL,CHAIN_APPROX_SIMPLE);for(inti=0;i<contours.size();i++){contourArea.push_back(cv::contourArea(contours[i]));}doublemaxValue;PointmaxLoc;minMaxLoc(contourArea,NULL,&maxValue,NULL,&maxLoc);RotatedRectminRect=minAreaRect(contours[maxLoc.x]);if(minRect.angle<2.0){RectmyRect=boundingRect(contours[maxLoc.x]);myRect.x=myRect.x-(myRect.width/20);myRect.width=myRect.width*1.1;MatresultImage=Mat(srcImage,myRect);if(!imwrite(resultFileNameSring,resultImage)){cout<<"filesaveerror!"<<endl;return-2;}}}完成条形码之后便是译码过程,译码需要首先遍历图像,然后计算出每个条与空的宽度,并记为Width(i)最对各个宽度进行比较,最小的宽度则作为基准模块,因为条形码中必然包含编码为“1”的条或空,所以可以通过对比选用宽度最小的条或空作为基准模块,并将宽度即为“n”。每个条或空中包含基准模块的个数为p,公式为:公式7根据上述公式可以得到每个条与空包含的基准模块的个数,例:211214(StratB)213311(T)112133(J)122132(-)131123(B)112313(D)122132(-)312311(Z)132131(L)312311(Z)113141(检验区)2331112(Storp)。对照编码表,去除起始区、去除终止区、去除校验区,最终只剩下内容区,最终译码结果为:TJ-BD-ZLZ。整个译码的流程可参照下图译码流程图。对比得基准模块每个空与条的宽度遍历图像对比得基准模块每个空与条的宽度遍历图像每个条与空的基准模块的个数译码成功对比编码表每个条与空的基准模块的个数译码成功对比编码表图19:译码流程图3.5本章总结本章针对条形码进行了介绍并列出了条形码的编码规则。程序部分主要介绍了条形码的定位以及译码。定位通过灰度化处理、膨胀腐蚀处理(闭运算)、计算轮廓面积、选出面积最大轮廓,得到条形码的轮廓。条形码的译码过程首先是计算出每个条与空的宽度,通过比较得到最小的条或空的宽度,将该宽度定为基准模块,通过公式得到每个空与条的基准模块的个数,再与Code128编码表对比,进而得到条形码所存储的内容,完成译码。智能分拣系统的硬件部分由MCU部分、电源部分、摄像头部分、存储电路部分、舵机部分、电机驱动部分、RS232串口部分、PC机部分组成,其智能分拣系统的硬件结构如下:MCU为整个硬件结构的核心,电源给MCU供电,PC机通过RS232串口与MCU进行交互,摄像头采集到的数据同样传送给MCU进行处理。电源给电机驱动进行供电,MCU的一个IO与一个PWM给到电机驱动,进而控制电机的速度。另外,电源也给舵机进行供电,MCU分出两路PWM给到舵机,控制舵机的旋转角度,因为该系统中存在两台舵机,所以需要分出两路PWM对舵机进行控制,一台舵机分得一路PWM。智能分拣系统的硬件结构如图20所示。图20:智能分拣系统硬件结构4.1MCU模块MCU全称为Microcontroller,中文意为微控制单元,又可以称作单片微型计算机或者单片机。本文由于涉及到动态图像处理,所以对于单片机有较高的要求。本毕设单片机选用STM32单片机。ST为意法半导体,M表示微处理器,32表示计算机处理器位数,相对于8为的51单片机,STM32的性能还是非常强的。STM32单片机常用于嵌入式领域,如智能车、无人机、机器人、无线通信、娱乐电子产品等。STM32采用ARM公司推出的cortex-A,R,M三个系列中的M系列,其架构主要是基于ARMv7-M实现。ARM公司推出的cortex-A系列表示较高级的处理器,一般手机便是使用cortex-A系列的处理器,可以实现较为复杂的功能,例如投影仪、电视机、路由器、交换机等。cortex-R系列的处理器针对实时性较高、安全性较高的领域,例如机顶盒、数字电视、相机等,目前cortex-R系列应用范围还是较小,并没有cortex-A与cortex-M系列的应该广泛。cortex-M系列即指MCU微控制器,广泛应用于智能手环、飞行器、平衡车、智能家电、3D打印、工农业等各个领域,可以完成终端的控制、完成边缘计算等任务,是AI、云计算、大数据背景下的信息和流量的入口。不同的场景、不同的具体应用选用不同的ST系列单片机。考虑到本系统需要运用到动态图像锁定、条形码识别、舵机控制等,以及考虑到经济效益、性价比,需要运用功能较为强大的单片机。本系统采用ST公司推出的STM32单片机,该系列的单片机已有多年的发展历史,具有多种系列产品。STM32主要有四个系列,分别为高性能系列、主流系列、超低功耗系列以及无线系列。其中高性能系列主要包含STM32F2、STM32F4、STM32F7、STM32H7这些型号的产品.主流系列主要包含F0、F1、F3这些型号的产品,超低功耗系列包含L0、L1、L4、L5等型号的产品,无线系列包含STM32WL与STM32WB型号。本系统采用了STM32H743VIT6单片机,该单片机是32为MCU组成的具有双精度浮点单元的高性能单片机,单片机实物图如图21所示。其内核为Cortex-M7,电源电压最大为3.6V,电源电压最小为1.71V,程序储存器大小为2M,内存能够达到的最高工作频率为400MHz。同时,该单片机外设有欠压检测、复位、PWM、LCD、POR、WDT等,可以完成A/D、D/A转化,携带有CAN、USB、SPI、SAI等接口。该单片机具有运算快、耗能低、价格实惠、在满足该系统的要求下,能够有效减少本系统的设计成本。本系统所选用的STM32单片机的原理图如图22所示。图21:STMH743VIT6实物图22:STM32H743VIT6单片机原理图STM32单片机主要基于ARM公司的Cortex-M内核以及外围的存储电路和外设构成。ST(意法半导体)公司于1987年成立,在2007年时,世界首批基于Cortex-M的通用MCU——STM32F1诞生,2009年世界首批Cortex-M超低功耗MCU——STM32L1诞生。2010年世界首个高性能的MCU——STM32F2诞生,其具有120MHz的频率。2011年首个高性能基于Cortex-M4的MCU——STM32F4诞生,其具有168MHz的频率。2012年,首个入门级STM32F0诞生,2013年,研发出了入门级超低功耗的STM32L0单片机。2014年,意法半导体公司又研发出了基于Cortex-M7内核的MCU——STM32F7。2015年,研发出了领先的超低功耗MCU,该MCU时基于Cortex-M4的内核,该MCU被命名为STM32L4系列。2016-2017年,研发出了目前最高性能的基于Cortex-M7的MCU——STM32H7。ST公司对于微型处理器的研发一直没有停止,除了STM32系列单片机还有STM8系列的单片机,顾名思义,STM8时8位处理器,STM8分为STM8A、STM8S、STM8L系列,分别表示为汽车级应用、标准系列以及超低功耗MCU。电机驱动模块主要作用是控制电机的转动,在机械部分提到电机是通过PWM(脉冲宽度调节)来控制电机的转速。电机驱动模块中,芯片选用TB6612FNG,该芯片是电机驱动控制中常用的,是东芝半导体公司生产的一种直流电机驱动件,是基于MOSFET的H桥集成电路,该芯片的效率比晶体管H桥电路要高。该驱动模块可以满足电机的四种控制模式,分别是正转、反转、制动和停止。PWM的支持频率达100kHZ,工作温度为零下28°到零上85°,并且具有低压检测电路和热停机保护电路。其引脚图如下。在众多信息获取途径中,图像是包含信息最丰富的,作为机器视觉识别领域的核心部件,摄像头广泛应用于安防、车牌识别等场合。摄像头按输出信号的类型分类,可以分为模拟摄像头和数字摄像头,模拟摄像头是将视频采集设备产生的模拟信号转化为数字信号,数字摄像头输出的是数字信号,是可以直接捕捉影响,通过串口传输。数字摄像头与模拟摄像头的接口也有所不同,数字摄像头接口一般有USB接口、IEE1394火线接口、千兆网接口等,而模拟摄像头的接口采用AV视频端子或者S-VIDEO。模拟摄像头的像素数一般为41万左右,而数字摄像

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论