基于Arduino的条形码扫描系统
2018-03-22崔子鹏
Arduino是一款电子互动开发的软硬件平台,以Arduino uno r3单片机为基础配置的条形码智能扫描系统,能够实现对各种货物上的多种形式条形码进行快速批量扫描,货物信息通过串口通信传送给Arduino单片机,再发送到移动数据终端,使得快递中心能够随时掌握货物信息。在日常生活中,此类扫描系统可以在各地的快递分拣中心使用,大大降低快递分拣成本,同时提高分拣效率。
【关键词】Arduino条形码扫描 分拣
1 引言
网购的流行促使快递业迅速发展,随着快递数量的剧增,分拣快递也成为一个难题。我国的快递业自动化相对于国外起步较慢,根据《中国快递行业发展报告》,在先进分拣设备及技术的应用上我国快递行业仍然落后。目前,国内几家大的物流公司,除了中国邮政和顺丰拥有自动化分拣设备之外,其他公司皆以人工+传送带方式为,主快递单号的获取方式仍是用手持扫描枪,分拣效率低下。分拣中心的扫描、搬运成本非常高,整个分拣中心作业时间的30%--40%更是被分拣环节所占。寻求一种更加高效、智能化的扫描方式是物流公司非常迫切的需求。基于Arduino的条形码扫描系统与人工+传送带模式相比更智能化,效率更高。
NLS-EM3296是近几年最新推出的条形码扫描模块,利用红外扫描精确快速地读取快递条形码上的信息,通过串口传输给上位机,在完成扫描快递信息的同时,实现了信息登记,同时智能小车依据扫描信息实现自动搬运、卸货,快递分拣成本将会大大降低。本文基于Arduino单片机以极低的成本实现NLS-EM3296的智能扫描功能。
2 Arduino模块概述
Arduino是目前较为流行的一款电子互动产品开发平台,由Arduino系列单片机和Arduino的IDE两部分组成,IDE有大量库函数支持,大大简化了程序的开发工作。Arduino具有使用简单,功能多样,价格低廉,可拓展性强等优点,广泛应用于电子系列和互动产品的开发方面,Arduino 编程过程采用的是交叉编译的手段。Arduino单片机不具有直接编译环境,对其编程需要两台计算机,Arduino单片机和PC。Arduino单片机的开发环境可以在多种主流操作系统中运行,包括Windows、Linux、Mac OS三个主流操作系统平台,适用面非常广泛。
Arduino uno是Arduino USB接口系列的最新版本,作为Arduino平台的参考标准模板。UNO的处理器核心是ATmega328,同时具有14路数字输入/输出口(其中6路可作为PWM输出),6路模拟输入,一个16MHz晶体振荡器,一个USB口,一个电源插座,一个ICSP header和一个复位按钮。目前UNO已经发布到第三版,如图1所示。
3 扫码模块
NLS-EM3296是一款智能化的条形码读识开发模块,如图2所示。模块自身具有先进的条形码识别算法,可以对Code-128、GSI-128、AIM-128、EAN-128、PDF-417、QR-Code等一维条形码和二维条形码进行读取,同时NLS-EM3296 可以轻松读取纸张、塑料卡、LCD 等各种印制介质和显示介质上的条码,性能强大。NLS-EM3296具有很好的开放性,能够与外接设备实现多种方式通信,实现信息的互联网化。除此之外,NLS-EM3296还具有体积小,操作简单,廉价等优势,可以在分拣小车、分拣机器人、货物信息统计等方面发挥重要的作用。
3.1 扫码模块的通信方式
3.1.1 串口通信
条形码扫描模块提供TTL-232串口通信接口,支持1200bps——115200bps速率,可以通过串口通信与外设进行通信。通过12pin 0.5mm的柔性线缆与外设进行连接,串口默认波特率为9600bps,8为数据位,无检验,1位停止位如图3所示,所使用到的端口如表1所示。
3.1.2 USB通信
条形码扫描模块可以与开发板EVK连接,通过USB线与PC机进行通信如图4所示。
4 整体调试
智能小车由循迹部分、卸货部分、控制部分和扫码部分共四部分组成,如图5和图6所示为智能小车程序框图和整体图。智能分拣小车的调试主要包括两个关键部分,即扫描模块和小车运行控制,下面分别介绍工作原理与调试方法。
4.1 Arduino与NLS-EM3296模块
NLS-EM3296扫描模块通过柔性线缆+FPC转接板与Arduino uno r3单片机进行串口通讯。NLS-EM3296扫描模块的默认波特率为9600bps,需要在程序编辑器(IDE)中对Arduino进行设置Serial.begin(9600),扫码程序如图7所示。
NLS-EM3296扫描模块的扫描模式默认为低电平扫描模式,也可使用openjumper串口助手通过EVK板对条形码模块调试,同时对NLS-EM3296模块的灵敏度和红外扫描光线的强弱等条件进行设置。
当NLS-EM3296的红外探头扫描到快递条形码时,对捕获的条形码进行解码,解码后的数据为16位字符,这些字符包含货物的基本信息,是實现快递自动化分拣的基础。Arduino单片机通过串口从NLS-EM3296获取快递的位置信息,控制智能分拣小车、机器人等智能分拣设备将快递搬运到指定位置。智能分拣能够利用自身的蓝牙、Wi-Fi等无线通信模块将快递信息上传给PC机,在搬运快件的同时,又可以实现快递信息的上传登记备案。
下面就以载有基于Arduino的NLS-EM3296扫描系统的智能小车为例介绍基于Arduino的NLS-EM3296扫描系统的实现效果。
4.2 智能分拣小车
以Arduino uno单片机为依托,通过XLDC-DC升压模块、L298N电机驱动模块,寻迹传感器,漫反射式红外避障实现对小车的智能控制,并通过arduino串行通信接口实现与EM3296条码扫描模块的即时通讯。
小车的循迹部分由四路循迹模块、XLDC-DC升压模块、漫反射式壁障传感器和L298N电机驱动模块。寻迹模块通过识别黑线将信号传给单片机,同时DC生压模块将18650电池组的电压升到12V接到L298N电机驱动模块上,从而驱动小车向前行走。
卸货部分由两个SG-90舵机和亚格力板组成,通过舵机的旋转完成卸货。如果所卸货物比较重,建议采用大扭矩的舵机模块,本文只是通过小车展示一下基于Arduino的NLS-EM3296扫码模块,所以采用扭矩较小的模块。
控制部分也称为核心部分是Arduino uno r3单片机,控制小车的整体运行。如果小车想要实现除扫码外其他功能,例如蓝牙、无线传输等,建议使用Arduino mega2560单片机,该单片机串口通信端较多,编程方式、接线方式与uno相同,本文不再做过多陈述。
扫码部分是NLS-EM3296条形码扫描模块,条形码扫描模块通过柔性线缆、FPC转接板和杜邦线与Arduino单片机串口(uno的串口为0,1)相连,图8所示为智能小车的控制电路图。
首先,通过NLS-EM3296扫描模块将条形码信息解码后传给Arduino单片机,Arduino单片机通过读取的信息确定每件货物送达的区域,智能小车运用自身的红外寻迹系统和漫反射式红外避障系统将货物自动运送指定的区域,触发单片机程序中断使用SG-90舵机将快递卸下,整体过程如图9所示。
智能小车的运行结果证明,装载有扫描系统的小车完成了快递信息扫描,同时还完成了快递的简单分拣工作,由此可见基于Arduino的NLS-EM3296的条形码扫描系统,如果配上智能的分拣设备,不仅可以降低快递分拣成本,还能提高分拣效率。
5 结束语
本文研究了一套基于Arduino的NLS-EM3296条形码扫描系統,NLS-EM3296读识模块通过柔性线缆与Arduino单片机连接,它可以对多种形式的一维,二维条形码进行精确扫描读取,解码后传输给Arduino单片机和PC机。同时解决了快递信息的读取和登记,节省时间。并以装载有基于Arduino的NLS-EM3296的条形码扫描系统的智能小车为例,对NLS-EM3296扫描系统和智能小车控制系统进行了设计和实现,实验证明该系统稳定可靠,在快递分拣及货物登记等领域具有较高的实用价值。
参考文献
[1]高小茜.浅析我国快递企业的分拣问题[J].商场现代化,2014(29):55-57.
[2]陈吕洲.Arduino程序设计基础[M].北京航空航天大学出版社,2015.
[3]Simonmonk,蒙克,Monk,et al.基于Arduino的趣味电子制作[M].科学出版社,2011.
[4]程晨.Arduino开发实战指南.AVR篇[M].机械工业出版社,2012.
[5]宋巍巍,王永,李旺,et al.基于巡线机器人的货物定位系统的设计和实现[J].自动化仪表,2009,30(01):16-19.
[6]胡文华,胡仁喜.Altium Designer 13从入门到精通(第3版)[M].机械工业出版社,2013.
作者简介
崔子鹏(1997-),男,河北省石家庄市人。
汪雨洋(1996-),男,四川省资阳市人。
魏晋文(1995-),男,甘肃省白银市人。
王璇(1996-),女,河北省张家口市人。
胡畅(1998-),女,湖南省益阳市人。
作者单位
石家庄铁道大学机械工程学院 河北省石家庄市 050043