3223| 9
|
[项目分享] 收银结算台 |
【项目背景】 超市里的收银员在结账的时候通过扫描条码来统计顾客所购买商品的金额。二哈识图(Huskylens)刚好有标签识别(二维码识别)功能,我们可以利用这个功能来设计一个作品,实现类似的效果。 【原理分析】 不同的二维码可以标记不同的商品。通过学习每种商品的二维码,记录该二维码的 ID。我们可以在 Mind+ 中建立两个列表,一个存放商品名,一个存放对应的价格,通过列表的下标与二维码的 ID 一一对应。这样就可以通过二维码来识别商品,获取单价了。 【材料准备】 主控板的选择余地很大,因为 Mind+ 中二哈识图支持三大主流平台。这里我选择 micro:bit 作为主控,为了方便连线,我选择了 micro:bit 掌控板两用扩展板。除了二哈识图传感器以外,还需要一个显示设备来显示商品单价及总金额等信息,这里选用 LCD 1602 液晶屏。因为二哈识图比较费电,所以需要强劲的电源来支撑,也可以用充电宝单独供电。我使用的是麦昆锂电池供电套装。 材料清单
步骤1 连接设备 因为液晶屏和二哈识图都是 I2C 接口,所以连接很简单,直接接到扩展板的 I2C 接口就好了。这个扩展板上没有额外电源供电接口,所以锂电池接到 micro:bit 上就可以了。 连接好后是这样的,看上去有点乱~ 步骤2 加载扩展 接下来就可以开始编写代码了。在正式开始之前需要加载用到的扩展。首先选择【主控板】分类下的【micro:bit】。 接着选择【传感器】分类下的【HUSKYLENS AI 摄像头】。 最后加载【显示器】分类下的【LCD1602 模块(IIC 接口)】。 步骤3 创建变量 正如原理分析所述,我们需要两个列表:【商品名】用来存放商品的名字,【单价】用来存放各个商品的单价。除此以外还需要设置【总价】变量,用来存储购买商品的总金额。【ID】变量用来记录当前二维码所代表的序号,也就是第几个二维码。通过这个变量可以找出这个二维码所对应的商品及单价。 步骤4 编写代码 首先要初始化变量。我们需要构建两个列表,将超市里的商品信息录进去。因为这个液晶屏只能显示英文字符,所以不能写中文! 接下来就是程序的主体部分。当检测到摄像头前方有二维码时,获取该二维码的 ID。然后蜂鸣器响一声,告诉收银员这个二维码已经识别好了。接着我们通过这个 ID 去找到这个商品的名称和单价,显示在液晶屏上,然后把金额加到总价中,并将总金额显示在液晶屏上。最后我们等候 1 秒,以免在操作的时候没来得及拿走商品,又录入一遍。 这里遇到一个小插曲。液晶屏显示总价的时候小数点后面有很长一串 0,看上去很不爽。没办法,我们只能通过字符串的形式找到小数点的位置,然后截取到小数点后两位。 步骤5 学习标签 根据录入的商品种类数,学习相应个数的二维码。注意开启【学习多个】选项。因为家里没打印机,二维码也不方便打印。我就用手机展示二维码,识别手机上的二维码图片。 二维码只能识别内置的这些,也就是上面的所有二维码。具体的学习过程可以参考《标签识别上手》这篇文章:https://makelog.dfrobot.com.cn/article-308244.html 步骤6 设计造型 找一个合适大小的盒子,挖两个孔。一个放液晶屏,一个开口给摄像头。 把器材全都装进去。 实际效果是这样的: 看上去还挺便携的。(摄像头横着放、竖着放都可以,二维码都可以识别出来) 步骤7 测试运行 通电,测试。程序开始的时候在液晶屏上显示“Welcome!”。 识别出二维码后会在第一行显示商品名称和单价,在第二行显示总金额。 具体可以看下面的演示视频。 附件 收银结算台.sb3 【后记】 1.程序可以添加清空功能,将上一个顾客的购买信息清空,以便后续顾客的结算。本来想加这个代码的,按 A 或 B 键清空总金额。但是这样子造型很难设计,盒子上没法开孔。比较好的方法是引出一个按钮,通过按钮来置零。然而手头没有按钮,只好作罢。 2.识别二维码/条形码还真是个技术活。角度和方向必须控制的很好,不然很难识别出来。难怪超市的条码枪和桌面式读码器都会有一个激光束来标定方位:) 3.液晶屏只能显示英文字符,对用户不够友好。可以考虑换成掌控板,这样可以显示中文,并且去掉 1602 液晶屏,减轻成本。 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed