35浏览
查看: 35|回复: 0

[M10项目] 行空板项目------------------自助收银机

[复制链接]
本帖最后由 刘睿鹏 于 2025-1-26 20:02 编辑

【制作背景】
众所周知,商铺运营最大的成本就是人工成本,大多用在了清点库存,雇佣收银员上。那么,如果有一个智能系统能完成这些工作,那将会大大降低商铺的运营成本,而今天我想给大家分享的就是这样一个项目-------自助收银机。【项目功能】
1.顾客可以自行通过扫描商品上的二维码的方式选择商品
2.选择完成后点击确定按钮打开支付二维码(我的代码里用的行空板官网的二维码大家记得改!)
3.支付完成后按按钮结束购物,返回开始的扫描界面
【所需材料】

1.行空板M10;
2.数字大按钮模块;
3.Husky 人工智能摄像头;
4.Mind+1.8;
【制作方法】
1.打开Mind+,点击左下的扩展按钮
行空板项目------------------自助收银机图1
2.选择行空板,MQTT-py,代码生成器三个库,再点击Pingpong库,选择HUSKYLENS AI摄像头和数字大按钮模块
行空板项目------------------自助收银机图2行空板项目------------------自助收银机图3
3.连接远程终端10.1.2.3(先连上行空板USB接口再做这一步)
行空板项目------------------自助收银机图4
4.将siot库更新至V2详见https://mindplus.dfrobot.com.cn/dashboard5.在浏览器中搜索10.1.2.3(一定要连接行空板!!!不然会加载不出来)
然后点击应用开关,打开siot的界面,再点击新建主题。
行空板项目------------------自助收银机图5
行空板项目------------------自助收银机图6
6.回到Mind+,我们先连接上硬件。
把HUSKY人工智能摄像头连接到任意一个I2C接口(4pin )
把按钮模块连接到行空板P21引脚(3pin )
(连接不同不影响,只要在最后稍作修改代码就行了。)
7.点击右上角的可视化界面按钮
行空板项目------------------自助收银机图7
进入可视化编辑之后点击新建项目,命个名(随便)。
行空板项目------------------自助收银机图8
从左边的框里选择柱状图,把名字改为“销售数量统计”,把各个柱子的名字分别改为商品1至商品6。(这里假设分别为商品1~6,分别单价为1~6元)。
8.训练HUSKY识别二维码
行空板项目------------------自助收银机图11
我用了前六个分别表示1~6号商品。
启动HUSKY,切换到标签的算法,长按按钮选择二级菜单,选择学习多个,学习标签。
详见网址https://wiki.dfrobot.com.cn/_SKU ... E%E8%AF%86%E5%88%AB
9.最后一步了!编写代码
功能实现:
预设变量goods 1~6作为总数(假设均为30个),顾客买一个东西减一个
MQTT初始化:点击齿轮按钮,设置参数如下
行空板项目------------------自助收银机图9
通过行空板多线程threading 库来分别执行扫描和付款两个界面
图形代码:
行空板项目------------------自助收银机图10
文本代码
  1. #  -*- coding: UTF-8 -*-
  2. # MindPlus
  3. # Python
  4. import siot
  5. import threading
  6. from unihiker import GUI
  7. from pinpong.board import Board
  8. from pinpong.board import Board,Pin
  9. from pinpong.extension.unihiker import *
  10. from pinpong.libs.dfrobot_huskylens import Huskylens
  11. # 事件回调函数
  12. def u_thread1_function():
  13.     global x,a1,a2,a3,b1,b2,b3,c1,c2,c3,d1,d2,d3,e1,e2,e3,f1,f2,f3,goods1,goods2,goods3,goods4,goods5,goods6,y,tot,a,b,c,d,e,f
  14.     tot = 0
  15.     u_gui.clear()
  16.     u_gui.add_button(text="确认付款",x=20,y=280,w=100,h=30,onclick=button_click1)
  17.     u_gui.draw_text(text="欢迎使用自助结账机",x=0,y=0,font_size=19, color="#0000FF")
  18.     u_gui.draw_text(text="请扫描商品条形码,支付完成按按钮",x=0,y=35,font_size=11, color="#0000FF")
  19.     u_gui.draw_text(text="总计:",x=120,y=280,font_size=15, color="#0000FF")
  20.     x=u_gui.draw_digit(text="0",x=177,y=287,font_size=15, color="#0000FF")
  21.     u_gui.draw_text(text="元",x=200,y=280,font_size=15, color="#0000FF")
  22.     while True:
  23.         p_huskylens.command_request()
  24.         if p_huskylens.is_appear(1, "blocks"):
  25.             goods1 = (goods1 - 1)
  26.             a1=u_gui.draw_text(text="商品1",x=0,y=y,font_size=14, color="#0000FF")
  27.             a2=u_gui.draw_digit(text="1",x=100,y=(5 + y),font_size=14, color="#0000FF")
  28.             a3=u_gui.draw_text(text="元",x=130,y=y,font_size=14, color="#0000FF")
  29.             y = (y + 18)
  30.             tot+=1
  31.             a+=1
  32.         elif p_huskylens.is_appear(2, "blocks"):
  33.             goods2 = (goods2 - 1)
  34.             b1=u_gui.draw_text(text="商品2",x=0,y=y,font_size=14, color="#0000FF")
  35.             b2=u_gui.draw_digit(text="2",x=100,y=(5 + y),font_size=14, color="#0000FF")
  36.             b3=u_gui.draw_text(text="元",x=130,y=y,font_size=14, color="#0000FF")
  37.             y = (y + 18)
  38.             tot+=2
  39.             b+=1
  40.         elif p_huskylens.is_appear(3, "blocks"):
  41.             goods3 = (goods3 - 1)
  42.             c1=u_gui.draw_text(text="商品3",x=0,y=y,font_size=14, color="#0000FF")
  43.             c2=u_gui.draw_digit(text="3",x=100,y=(5 + y),font_size=14, color="#0000FF")
  44.             c3=u_gui.draw_text(text="元",x=130,y=y,font_size=14, color="#0000FF")
  45.             y = (y + 18)
  46.             tot+=3
  47.             c+=1
  48.         elif p_huskylens.is_appear(4, "blocks"):
  49.             goods4 = (goods4 - 1)
  50.             d1=u_gui.draw_text(text="商品4",x=0,y=y,font_size=14, color="#0000FF")
  51.             d2=u_gui.draw_digit(text="4",x=100,y=(5 + y),font_size=14, color="#0000FF")
  52.             d3=u_gui.draw_text(text="元",x=130,y=y,font_size=14, color="#0000FF")
  53.             y = (y + 18)
  54.             tot+=4
  55.             d+=1
  56.         elif p_huskylens.is_appear(5, "blocks"):
  57.             goods5 = (goods5 - 1)
  58.             e1=u_gui.draw_text(text="商品5",x=0,y=y,font_size=14, color="#0000FF")
  59.             e2=u_gui.draw_digit(text="5",x=100,y=(5 + y),font_size=14, color="#0000FF")
  60.             e3=u_gui.draw_text(text="元",x=130,y=y,font_size=14, color="#0000FF")
  61.             y = (y + 18)
  62.             tot+=5
  63.             e+=1
  64.         elif p_huskylens.is_appear(6, "blocks"):
  65.             goods6 = (goods6 - 1)
  66.             f1=u_gui.draw_text(text="商品6",x=0,y=y,font_size=14, color="#0000FF")
  67.             f2=u_gui.draw_digit(text="6",x=100,y=(5 + y),font_size=14, color="#0000FF")
  68.             f3=u_gui.draw_text(text="元",x=130,y=y,font_size=14, color="#0000FF")
  69.             y = (y + 18)
  70.             tot+=6
  71.             f+=1
  72.         x.config(text=tot)
  73. def button_click1():
  74.     global thread1,thread2,a,b,c,d,e,f
  75.     thread2=u_gui.start_thread(u_thread2_function)
  76.     u_gui.stop_thread(thread1)
  77. def u_thread2_function():
  78.     global thread1,thread2,y,a,b,c,d,e,f
  79.     z=u_gui.draw_qr_code(text="https://unihiker.com",x=70,y=100,w=100)
  80.     while not (p_p21_in.read_digital()):
  81.         pass
  82.     siot.publish_save(topic="siot/智慧商店", data=str(a)+","+str(b)+","+str(c)+","+str(d)+","+str(e)+","+str(f))
  83.     z.remove()
  84.     y = 50
  85.     thread1=u_gui.start_thread(u_thread1_function)
  86.     u_gui.stop_thread(thread2)
  87. siot.init(client_id="8458671784972747",server="10.1.2.3",port=1883,user="siot",password="dfrobot")
  88. Board().begin()
  89. u_gui=GUI()
  90. siot.connect()
  91. siot.loop()
  92. p_p21_in=Pin(Pin.P21, Pin.IN)
  93. y = 50
  94. goods_ls = []
  95. a = 0
  96. b = 0
  97. c = 0
  98. d = 0
  99. e = 0
  100. f = 0
  101. # 分别为商品1,2,3,4,5,6的总个数均为30个
  102. # 设它们的单价分别为1,2,3,4,5,6元
  103. goods1 = 30
  104. goods2 = 30
  105. goods3 = 30
  106. goods4 = 30
  107. goods5 = 30
  108. goods6 = 30
  109. siot.getsubscribe(topic="siot/智慧商店")
  110. p_huskylens = Huskylens()
  111. thread1=u_gui.start_thread(u_thread1_function)
  112. while True:
  113.     pass
复制代码
大功告成!


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail