作者:曾成训(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智慧
标签: 树莓
②文章观点仅代表原作者本人不代表本站立场,并不完全代表本站赞同其观点和对其真实性负责。
③文章版权归原作者所有,部分转载文章仅为传播更多信息、受益服务用户之目的,如信息标记有误,请联系站长修正。
④本站一律禁止以任何方式发布或转载任何违法违规的相关信息,如发现本站上有涉嫌侵权/违规及任何不妥的内容,请第一时间反馈。发送邮件到 88667178@qq.com,经核实立即修正或删除。