28928| 34
|
[讨论] 【评测】你可见过如此丧病的条形码模块评测么 |
本帖最后由 ambersea 于 2014-5-20 15:36 编辑 可爱的小伙伴们,可有想念如此丧心病狂的测试报告么~话说阿婆主我最近很焦虑啊,发现看书效率极其缓慢,求各位路人推荐些提高自学效率的残忍的方法。 这次为大家带来的是基本上不会用到的条形码扫描模块。(原来想测试下二维码的,好贵orz,而且大家都有手机自带了……)下面的所有文字都可以只截取红字看= = 接下来稍微普及(顺便凑字)下背景知识 我是条码扫描的背景知识: 条形码是通过光线照射在条和空上,并产生不同的反射率(也就是条写空的对比度)来进行识读的。 一般来说,一个完整的条码包含了前静区,起始字符,数据字符,终止字符及后静区,某些条码还会加校正字元。 条码扫描器有光笔、CCD、激光、影像四种 ▲光笔:最原始的扫描方式,需要手动移动光笔,并且还要与条形码接触。 ▲CCD: LED作为发光光源的扫描器,以CCD感光元件作为光电转换器,再通过光电信号转换,因此中间没机械结构。在一定范围内,可以实现自动扫描。并且可以阅读各种材料、不平表面上的条码,成本也较为低廉。但是与激光式相比,扫描距离较短。 优势是:无转轴、马达,使用寿命长;价格便宜 ▲激光:以激光二极管作为发光源的扫描器。主要有转镜式和颤镜式两种。又可分为线型、全角度等几种。 转镜式:采用高速马达带动一个棱镜组旋转,使二极管发出的单点激光变成一线。 颤镜式:颤镜式的制作成本低于转镜式,内部激光打出一个激光光源点,激光点打在一个带机械结构装置的反光片上,再依靠震动马达摆动将激光点打成一成激光线。然而但这种原理的激光枪不易提高扫描速度。 线型:多用于手持式扫描器,范围远,准确性高。 全角度:全角度扫描器是通过光学系统使激光二极管发出的激光折射或多条扫描线的条码扫描器。多为工业级固定式扫描,自动化程度高,在各种方向上都可以自动读取条码及输出电平信号,结合传感器使用。 ▲影像:以光源拍照利用自带硬解码板解码,通常影像扫描可以同时扫描一维及二维条码,如Honeywell引擎。 注:由于红外与激光的波长和能量决定了在强光下红外的穿透性和抗干扰性要比激光差。所以强光还是用激光好点。 这次评测的两款都是CCD 扫描模块(因为便宜) (所以以上的那些话都可以略过= =) 选择CCD扫描仪时最重要的是景深和分辨率。 其次的有扫描宽度和一次识别率,误码率等。 可以参照http://www.acctrue.com/barcode/barcode6-5.html来了解这几个技术参数的意义。 我是测试模块的高清无码美图和自我介绍:
以下是官方资料,不同处红字表示 CHAMP 红光扫描头 CCD条形码扫描模块
MCR 14 条码扫描引擎模组 高性能小体积可编程开发
这里就需要对条形码的条空印刷对比度(PCS)进行一下简单的介绍。 (其实如果不想看的话可以直接看后面的红字就够了- -) 首先,从概念上来讲,条空印刷对比度(Print ContrastSignal,即PCS)是指条形码的空和条的反射率之差与条的反射率的比率,它是衡量条形码符号的光学指标之一。条形码PCS的计算公式如下: PCS=(RL-RD)/RL×100% 其中,RL为空的反射率,RD为条的反射率。条的反射率RL越低越好,空的反射率RD越高越好。条形码的PCS值越大,则表明条形码的光学特性越好,识读率就比较高。一般来说,当条形码的PCS值在67%~98%的范围之内时,就能够被条形码扫描设备正确识读。 (也就是这里的官方数据都是在这个条件下测得的)同时在自己做条形码的时候也要注意PCS,这就涉及到诡诡异异的条形码的空色和条色了。想什么白色空色,红色条色就识别不出来了,嘛亮绿和红色这种毁三观的也识别不出来。 DPI (dot peerinch) 每英寸点数 解析度 203dpi 约为 1mm = 8dot; 代表条码印刷机的印字头印出 8 个连续的点会刚好等于 1 厘米。 mil 单位名称(1 mil = 0.025mm) 如果是以标准的 200dpi 条码则它的公制解析度就等于 0.127mm (25.4mm 有 200 点), 约为 5 mil 的解析度。 好吧我偷懒找的是打印机,但是扫描机的换算也是一样的啦。 扫描分辨率指的是多功能一体机在实现扫描功能时,通过扫描元件将扫描对象每英寸可以被表示成的点数。dpi值越大,扫描的效果也就越好。 (不知不觉竟然废话了那么多……放心的微笑了下~) 我是评测(其实只是连线吧喂) 快乐的拿出水嫩弹滑的扫描模块,发现她们都悲剧的是RS232的接口。假如要逼迫她们与Arduino的板幸福的生活在一起我们还需要一块扩展板。木有经验的孩纸们也可以看下文的RS232接口定义。哦……悲剧的是由于扩展板和传感器都是母头(可以理解为两个蕾丝么= =),万不得已下我找了个DB9的公头连接器焊出了接线。 比如这样= = 介于可爱的伙伴们会问为毛要TTL转RS232扩展板,可以参考https://mc.dfrobot.com.cn/thread-1796-1-1.html《【教程】RS232与TTL的区别》 由于我做事一向认真负责,附上商品链接。 https://www.dfrobot.com.cn/goods-818.html 连接时可以参考下面的引脚图,我个人只焊出了2,3,5,9四个pin。(因为懒) 需要注意的是:扫描模块的TXD要和扩展板的RXD连接,扫描模块的RXD要和扩展板的TXD连接一起。(不过假如你直接DB9连接就不用考虑那么多了) 通常买回来的条形码扫描模块都是要设置的 产品会附赠纸质版设置流程,而且高端大气的用扫描条码来设置的捏。 需要修改的就是接口选择了,改成<键盘口模式>。记得扫描<储存参数>,否则断电后再启动时不会保存上次设置。 在烧入程序的时候记得将扩展板上的模式开关切换至OFF(编程模式) 以下是程序 String code = ""; char endbit=0; void setup() { Serial.begin(9600); //初始化串口 } void loop() { int temp; //串口数据临时缓存 if(Serial.available()>0) //如果串口接收到数据了 { temp=(Serial.read()); if(temp==0x0D) { endbit=1; } else if((temp==0x0A)&&(endbit=1)&&(code.length()>0)) //若接收到0D0A字符串结束输出字符串 { Serial.println(code); code=""; endbit=0; } else { code +=char(temp); } } } 就可以在串口观察到扫描到条形码表示的数值啦~ 由于本人写程序比较渣(羞涩)= =欢迎大家修改。 我才是真●评测,阿婆主想调皮下~ 然后……我没有节操的用口香糖,哦不是……用橡皮泥的改造成扫描模块v2.0(多了一个红外测距) (不过由于我很不靠谱……红外测距传感器没优化,和尺测出来的还是有一定差距的…) 使用的是SHARPGP2Y0A41SKOF 红外距离传感器(4-20cm)和SHARP GP2Y0A21 距离传感器 (10-80cm) 测量方法: 从远处靠近,测出能感应到的最远距离。 从近处拉远,测出开始感应到的最近距离。 测量十次,计算平均值和平方差。
(咳咳……那个6924开头的条形码是博士伦滴眼液= =) 这样看看…MCR14的条码扫描模块还是很有优势的。使用下来一次成功率也高很多。 大家可以去网上下各种条码制作软件。我下了一个FreeBarcod。 再推荐一个网址,可以条码查询的 http://www.liantu.com/tiaoma/ 但是条码模块扫描时,需要条码反射光到条码扫描器,所以你的条码打印得很好,却不怎么反光的话,条码扫描器就读不出了。当然,这也和条码打印到什么纸张上有关,因为条码标签纸一般都是反光性很好的,若打印在普通纸张上,性能就要差一些。 小伙伴们注意!!!EAN-13是有规范的,随便写写很悲剧的!读不出的! 要自己玩的话用code-39就可以了。 网上有很多规范,也可以去下面的网址在线生成条形码,上面也提示了不同规格条形码的规范。 http://app.baidu.com/app/enter?appid=140051 另外……小伙伴们有什么好想法……可以用条码做什么……求提示求骚扰。 最后附上满满的爱 ╮(╯▽╰)╭ |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed