pos机如何换成新(「人工智能」自制以「秤重」来计算价格的 AI POS 收款机)

快鱼网 29 0

作者:曾成训(CH.Tseng)

现实生活中除了单纯以「物品数量」结帐外,还有其他情况是以「秤重」来计算价格的,也就是「重量乘上单位价格」,这类的场景比如水果摊、糖果铺、自助餐、中药行、菜市场等。

如果有一台 POS 机,能够识别物品并自动切换以重量或数量的方式来结帐,该有多方便啊!下面我们就来实际操作一台自动 POS 机,能够识别商品并依据商品种类来决定所采用的计价方式,比如西瓜用斤,鸡蛋用颗数来计算等。

所需材料只要一块普通的树莓派,不需要任何硬件加速器,大约 1000 元就能搞定,对于不需要打印发票或链接后台 POS 系统的小商家可说是相当方便!

功能需求自动识别商品秤重功能

各个商品可设定自己的秤重单位和单位价格(如公斤、斤、克)

连续物品的结帐功能(一位顾客会购买多样商品,因此需一样样依次识别秤重后再一起结帐)不同类商品但单位重量价格相同,可放在一起同时结帐使用零件树莓派板子 x1 (约 350~500 元)

其实使用树莓派 3B+ 即可,识别秤重约 3 秒可完成,但当然如果能使用 4 版当然会更好,使用者体验会更佳!

树莓派 7” 官方屏幕(含触控) x1 (约 450~600元)

您也可以使用其它种类的屏幕(只是后面我所附的 3D 打印外壳可能就不适用了),另外程序中的互动方式是以触控方式来设计,因此有触控功能会比较方便。

HX711 模组+5 kg 压力感测器 x1 (约 35~70元)

这类的压力感测器是将应变片贴附在钢或铝的柱状体上,主要是通过感应这个柱状体上微小的变化来探知物体的重量:另外,HX711 为 24 位元的 A/D 转换器,由于其感应的数值很小,需通过 HX711 模组来放大。

Web Camera x1 (约 60~200 元)

摄像头使用的是 C310(只要是标准的 USB WebCam 都可以使用),而由于 YOLO V3-Tiny 模型的图片尺寸需求为 416×416,因此使用一般最便宜的 VGA 即可。

3D 打印外壳

外壳设计如下,分别为主体和秤重盘,可一体化树莓派和秤重模组等零件;我是以白色来打印,不过由于屏幕为黑色,因此模型颜色使用黑色其实会更适合。

组装和接线

由于零件不多,因此组装相当容易,基本上就是把秤重模组放入圆形凹槽、树莓派含屏幕倒扣在方形凹槽即可。

HX711 模组与树莓派的接法如下:

VCC 5VGND 接地DT Pin 29(GPIO 5)SCK Pin 31(GPIO 6)

组装后的样子:

程序设计使用者动作流程:同一位顾客的多个商品,可使用结帐按钮来累积其金额:清空按钮则可清除目前的购物车,开始下一位客人的结帐。

秤重模组程序 :HX711 在网络上有现成的 python module 可直接使用,我参考的是这个,有稍加修改后再整合到程序中;这个程序每次执行时,会先侦测目前的重量,以其作为基准(代表重量为零),所以一开始执行程序时记得不要放任何东西在秤盘上。程序和参数说明

如果您使用的零件都相同,基本上只要修改设定 pos.ini 的内容,并改成您自己训练好的模型即可。

各项参数说明如下:

[products]#格式为 Label ID: [品名, 单价(每重量单位或每个), 计价单位]#计价单位 --> g:斤, kg:公斤, gram:克, one:一个labels_tw = {"v1":["橘子", 42, "g"], "v2":["鸡蛋", 10, "one"], "v3":["绿辣椒", 18, "g"], "v4":["玉米荀", 0.25, "gram"],\ "v5":["小蕃茄", 12, "g"], "v6":["枣子", 30, "one"], "v7":["哈密瓜", 65, "kg"], "v8":["苹果", 25, "one"], \ "v20": ["红萝卜", 8, "g"], "v22":["牛奶芭乐", 20, "one"], "v23":["带壳玉米荀", 0.15, "gram"] } [camera]cam_id = 0#(H, V) 是否水平或垂直翻转画面flipFrame = (False,False) #是否将过程录制成影片record_video = True #影片名称video_out = output.avi #每秒帧数frame_rate = 2 [desktop]#背景图片的路径名称bg = images/bg.jpg #(y,x) 购物车的显示尺寸cart_list_size = (350,250) #仅仅显示用, 侦测种类detection_txt = 蔬菜 [operation]#CN, ENlang = cn#seconds 商品结帐的结果, 要显示几秒wait_for_next = 3 [yoloModel]# yolov3-tiny, yolov3 可选择YOLO-Tiny或YOLOV3版本modeltype = yolov3-tinyobjnames = model/obj.namesweights = model/yolov3-tiny_.weightscfg = model/yolov3-tiny.cfg [system]#是否切换到全屏幕来执行full_screen = Truename_win = AI_POS小结

不同种类的物品可设定专属的秤重单位(公斤、克、斤),或换成以数量计价;商品的识别时间约为 4 秒,如果想要更快的速度,可将树莓派 3 替换成第四代,或者加上 NCS 加速棒甚至改用 Jetson Nano,相信能得到更好的识别效率。

编辑:AI智慧

标签: 树莓

抱歉,评论功能暂时关闭!