收银结算台

2020-03-176623
精华项目
AI 快速预览详细 收起
该项目利用二哈识图(Huskylens)的二维码识别功能,结合micro:bit主控板和LCD1602液晶屏,设计了一个简易的收银结算台。通过学习每种商品的二维码并记录其ID,可以在Mind+中建立两个列表,一个存放商品名,一个存放对应的价格。这样就可以通过二维码来识别商品,获取单价,并显示在液晶屏上。项目不仅提高了结账效率,还适用于STEM教育场景,让孩子们体验科技的乐趣。
【项目背景】
超市里的收银员在结账的时候通过扫描条码来统计顾客所购买商品的金额。二哈识图(Huskylens)刚好有标签识别(二维码识别)功能,我们可以利用这个功能来设计一个作品,实现类似的效果。

收银结算台图14

【原理分析】
不同的二维码可以标记不同的商品。通过学习每种商品的二维码,记录该二维码的 ID。我们可以在  Mind+ 中建立两个列表,一个存放商品名,一个存放对应的价格,通过列表的下标与二维码的 ID 一一对应。这样就可以通过二维码来识别商品,获取单价了。
【材料准备】
主控板的选择余地很大,因为 Mind+ 中二哈识图支持三大主流平台。这里我选择 micro:bit 作为主控,为了方便连线,我选择了 micro:bit 掌控板两用扩展板。除了二哈识图传感器以外,还需要一个显示设备来显示商品单价及总金额等信息,这里选用 LCD 1602 液晶屏。因为二哈识图比较费电,所以需要强劲的电源来支撑,也可以用充电宝单独供电。我使用的是麦昆锂电池供电套装。
材料清单

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

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

收银结算台图13

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

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

收银结算台图11

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

收银结算台图10

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

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

收银结算台图8
步骤4 编写代码
首先要初始化变量。我们需要构建两个列表,将超市里的商品信息录进去。因为这个液晶屏只能显示英文字符,所以不能写中文!


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

收银结算台图7

这里遇到一个小插曲。液晶屏显示总价的时候小数点后面有很长一串 0,看上去很不爽。没办法,我们只能通过字符串的形式找到小数点的位置,然后截取到小数点后两位。
步骤5 学习标签
根据录入的商品种类数,学习相应个数的二维码。注意开启【学习多个】选项。因为家里没打印机,二维码也不方便打印。我就用手机展示二维码,识别手机上的二维码图片。

收银结算台图6

二维码只能识别内置的这些,也就是上面的所有二维码。具体的学习过程可以参考《标签识别上手》这篇文章:https://makelog.dfrobot.com.cn/article-308244.html
步骤6 设计造型
找一个合适大小的盒子,挖两个孔。一个放液晶屏,一个开口给摄像头。

收银结算台图5

把器材全都装进去。

收银结算台图4

实际效果是这样的:

收银结算台图3

看上去还挺便携的。(摄像头横着放、竖着放都可以,二维码都可以识别出来)
步骤7 测试运行
通电,测试。程序开始的时候在液晶屏上显示“Welcome!”。

收银结算台图2

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

收银结算台图1

具体可以看下面的演示视频。


附件

收银结算台.sb3

【后记】
1.程序可以添加清空功能,将上一个顾客的购买信息清空,以便后续顾客的结算。本来想加这个代码的,按 A 或 B 键清空总金额。但是这样子造型很难设计,盒子上没法开孔。比较好的方法是引出一个按钮,通过按钮来置零。然而手头没有按钮,只好作罢。
2.识别二维码/条形码还真是个技术活。角度和方向必须控制的很好,不然很难识别出来。难怪超市的条码枪和桌面式读码器都会有一个激光束来标定方位:)
3.液晶屏只能显示英文字符,对用户不够友好。可以考虑换成掌控板,这样可以显示中文,并且去掉 1602 液晶屏,减轻成本。

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(7)
DFS1w2cb8o8
DFS1w2cb8o8
厉害厉害
44107900
44107900
楼主的哈士奇跟市面的不一样?摄像头有金属框?
汤果
汤果
作者
回复44107900
对的呢。我这是商城上未上架的 HuskyLens Pro 版,也就是教育版。区别是摄像头是 500 万像素的。标准版,也就是在售的是 200 万像素的。
王佩奇儿
王佩奇儿
可以试试用RFID
微笑的rockets
微笑的rockets
期待看到完整的系统。
gray6666
gray6666
很赞的创意
白吃白给
白吃白给
换成二哈装在一个手柄上,通过线连着主机估计会更好
汤果
汤果
作者
回复白吃白给
你的想法很赞。的确改成主动扫描识别速度和准确度提高很多。毕竟是带显示屏的。
rzyzzxw
rzyzzxw
特别赞啊。
- 没有更多了 -