收银结算台
userHead 汤和果 2020-09-21 16:45:07
projectImage

超市里的收银员在结账的时候通过扫描条码来统计顾客所购买商品的金额。二哈识图(Huskylens)刚好有标签识别(二维码识别)功能,我们可以利用这个功能来设计一个作品,实现类似的效果。


projectImage

 

亮点 

- 用二维码标签替代商品条形码,模拟真实场景

- 液晶屏显示商品名和价格,直观清晰


硬件清单
1x
micro:bit 编程入门开发板
1x
micro:IO Extend micro:bit 掌控板 IO扩展板
1x
麦昆 CR123A 锂电池电源管理模组
1x
Gravity: 二哈识图(HuskyLens)AI 视觉传感器
1x
Gravity: I2C LCD1602 液晶显示屏 (蓝底)

主控板的选择余地很大,因为 Mind+ 中二哈识图支持三大主流平台。这里我选择 micro:bit 作为主控,为了方便连线,我选择了 micro:bit 掌控板两用扩展板。除了二哈识图传感器以外,还需要一个显示设备来显示商品单价及总金额等信息,这里选用 LCD 1602 液晶屏。因为二哈识图比较费电,所以需要强劲的电源来支撑,也可以用充电宝单独供电。我使用的是麦昆锂电池供电套装。


使用到的软件

Mind+


原理分析 

不同的二维码可以标记不同的商品。通过学习每种商品的二维码,记录该二维码的 ID。我们可以在 Mind+ 中建立两个列表,一个存放商品名,一个存放对应的价格,通过列表的下标与二维码的 ID 一一对应。这样就可以通过二维码来识别商品,获取单价了。



制作过程

步骤1
连接设备

因为液晶屏和二哈识图都是 I2C 接口,所以连接很简单,直接接到扩展板的 I2C 接口就好了。这个扩展板上没有额外电源供电接口,所以锂电池接到 micro:bit 上就可以了。

projectImage

连接好后是这样的,看上去有点乱~

projectImage
步骤2
加载扩展

接下来就可以开始编写代码了。在正式开始之前需要加载用到的扩展。首先选择【主控板】分类下的【micro:bit】。

projectImage

接着选择【传感器】分类下的【HUSKYLENS AI 摄像头】。

projectImage

最后加载【显示器】分类下的【LCD1602 模块(IIC 接口)】。

projectImage
步骤3
创建变量

正如原理分析所述,我们需要两个列表:【商品名】用来存放商品的名字,【单价】用来存放各个商品的单价。除此以外还需要设置【总价】变量,用来存储购买商品的总金额。【ID】变量用来记录当前二维码所代表的序号,也就是第几个二维码。通过这个变量可以找出这个二维码所对应的商品及单价。  

projectImage
步骤4
编写代码

首先要初始化变量。我们需要构建两个列表,将超市里的商品信息录进去。因为这个液晶屏只能显示英文字符,所以不能写中文!  

projectImage

接下来就是程序的主体部分。当检测到摄像头前方有二维码时,获取该二维码的 ID。然后蜂鸣器响一声,告诉收银员这个二维码已经识别好了。接着我们通过这个 ID 去找到这个商品的名称和单价,显示在液晶屏上,然后把金额加到总价中,并将总金额显示在液晶屏上。最后我们等候 1 秒,以免在操作的时候没来得及拿走商品,又录入一遍。

projectImage

这里遇到一个小插曲。液晶屏显示总价的时候小数点后面有很长一串 0,看上去很不爽。没办法,我们只能通过字符串的形式找到小数点的位置,然后截取到小数点后两位。

步骤5
学习标签

根据录入的商品种类数,学习相应个数的二维码。注意开启【学习多个】选项。因为家里没打印机,二维码也不方便打印。我就用手机展示二维码,识别手机上的二维码图片。

projectImage

二维码只能识别内置的这些,也就是上面的所有二维码。

具体的学习过程可以参考《标签识别上手》这篇文章:https://makelog.dfrobot.com.cn/article-308244.html

步骤6
设计造型

找一个合适大小的盒子,挖两个孔。一个放液晶屏,一个开口给摄像头。

projectImage

把器材全都装进去。

projectImage

实际效果是这样的:

projectImage

看上去还挺便携的。(摄像头横着放、竖着放都可以,二维码都可以识别出来)

步骤7
测试运行

通电,测试。程序开始的时候在液晶屏上显示“Welcome!”。  

projectImage

识别出二维码后会在第一行显示商品名称和单价,在第二行显示总金额。

projectImage


后记

1. 程序可以添加清空功能,将上一个顾客的购买信息清空,以便后续顾客的结算。本来想加这个代码的,按 A 或 B 键清空总金额。但是这样子造型很难设计,盒子上没法开孔。比较好的方法是引出一个按钮,通过按钮来置零。然而手头没有按钮,只好作罢。  

2. 识别二维码/条形码还真是个技术活。角度和方向必须控制的很好,不然很难识别出来。难怪超市的条码枪和桌面式读码器都会有一个激光束来标定方位:)  

3. 液晶屏只能显示英文字符,对用户不够友好。可以考虑换成掌控板,这样可以显示中文,并且去掉 1602 液晶屏,减轻成本。



关于作者 

汤和果是台州市新桥中学的一名信息技术教师,同时也是学校的创客空间负责人。有 4 年创客经验,热爱三维建模、影像创作。目前主要方向为 3D 打印、开源硬件,擅长 SketchUP 建模与 Mind+ 图形化编程。 


关于台州市新桥中学创客教室  

台州市新桥中学创客教室筹建于 2017 年,占地面积 50 平方米,位于行政楼五楼机房隔壁。2018 年完成教室简易装修,采购了 4 台 3D 打印机,组合桌椅,希沃 65 寸一体机,打印机等设备,于 2019 年正式投入使用。目前运营方式以社团活动形式开展,共有 6 名学生参与,活动时间为每周二、三、四中午,内容为图形化编程与开源硬件,后期结合 3D 打印。

联系我们
联系邮箱:makercarnival@hotmail.com
官方微信公众号:创客嘉年华
官方微博:上海创客嘉年华
© Copyright Zhiwei Robotics Corp. All Rights Reserved
code 上海创客嘉年华