所有分类
主题 主题
平台 平台
我的工作台
userHead
注册时间 [[userInfo.create_time]]
创造力 [[userInfo.creativity]]
[[userInfo.remark]]
[[d.project_title]]
articleThumb
[[d.material_name]]
timelineThumb
进入工作台
折叠
所有分类 我的工作台
展开
DF冬季AI挑战赛:AI智能秤
珠韵 珠韵 2020-01-23 15:17:34
3
1
简单

项目背景

        快过年了,“带娃水果店”的老板正发愁呢,最近员工都回家了,店里人手不够,称重和收款忙不过来。这时,水果店的老顾客珠韵老师正好来买水果,得知水果店人手不够,就拍拍胸脯说:“这事包在我身上,我这就回实验室给你去搞一个会自动称水果的智能秤。” 

        回到实验室,珠韵老师找出了前几天刚购买的重量传感器模块,联系了两个学生,组成“智能水果秤”项目攻坚小组,力争尽快完成项目,以解“带娃水果店”店燃眉之急!

         …… 

        经过一整天的奋战,经过十多次的修改,终于搞定了! 珠韵老师兴奋的带着成果直奔水果店。 刚好“带娃TV”的记者在水果店买水果,正在排队等称重。一听珠韵老师拿着神器来帮忙,于是自告奋勇,要成为“智能水果秤”的第一位体验客户,并用手机拍下这精彩的过程。 

        水果店老板看到此景,轻轻的松了一口气,这大难题总算解决了! “带娃TV” 记者把视频发到朋友圈,获得点赞无数,又把视频分享到“带娃玩智造”微信群,群里立马热闹起来了,纷纷提问,怎么做的。珠韵老师本着开源分享的精神,表示尽快会在DF论坛中发布制作文档。 

        第二天,珠韵老师去水果店,想看看“智能水果秤”的使用情况。一到门口,惊呆了,水果店门口拍着长队!向老板一打听,原来昨天“带娃TV”记者一报道,好多市民都赶来体验,现在朋友圈都被这秤霸屏了。老板说一台秤根本应付不了,请珠韵老师再搞几台。珠韵老师摇摇头答复:“现在都什么时候了,马上快到春节了,DF商城前两天就放假停止发货了,只能等年后,再给你做几台。” 

项目思路

1.本项目分成称重部分和图像识别部分,各自用一块主控板来实现。。

2.称重部分数据通过无线发送数据。主要作用是把商品的重量发送给另外一块板子。(编程采用上传模式)

3.图像识别部分,采用实施模式编程,电脑接上micro:bit板和摄像头。通过识别商品、获取重量值等来计算金额。

项目分享-外观

        接下来分享本项目,先来看一下外观。

projectImage
projectImage
projectImage
projectImage
projectImage
材料清单 材料清单
2x
micro:bit板
1x
micro:bit掌控I/O扩展板
1x
重量传感器模块 (电子称)
3x
数字大按钮模块
1x
电源模块
步骤1 步骤1
结构制作

        先制作重量传感器模块的底座。底座我刚好有个现成的亚克力底座,直接拿来用了,如果要自己设计一个底座,用激光切割也是很方便的。现在由于手里没有激光切割机,没法制作,开学后,我设计一个底座分享。

        先看看我的底座。上下两块亚克力板,分别架起固定住传感器。

projectImage

我们看下图,传感器和托板之间除了支点外,要悬空。要注意箭头朝下。我们可以根据尺寸自己设计结构件,DF的说明文档里,有3D打印模型文件下载,也可以参考。点击此处打开说明文档网页

projectImage
步骤2 步骤2
接线

 接线并不复杂,参考下图:

projectImage

        我们把称重传感器如上图接到模块上,然后模块的DOUT和SCK分别到micro:bit扩展板的P0和P1口,注意把蜂鸣器开关关闭。

       然后接上3个按钮模块,我接的是P14、P15和P16。

       插上micro:bit板。

步骤3 步骤3
程序设计一(称重端)

称重端程序不是很复杂。称重端采用上传模式。

主要功能是:

1.读取称重传感器的值,并能通过无线发送出去。

2.发送清零和支付的指令,P15的按钮按下,发送“88888888”,P16按钮按下,发送“99999999”。

设计好后,将程序写入板子。

具体程序图如下:

projectImage
步骤4 步骤4
程序设计二(接收端)

接收端板子一直要连着电脑,程序设计采用“实施模式”。

由于程序比较长,下面分段阐述。

首先是初始化和欢迎界面,这个是一个美化的效果,与程序功能没有多大关系。

先出现封面,然后出现说明文档。

本程序一共用到了6个变量,分别是:

识别(用于存储图像识别的内容,设置为不显示)

单价(临时存储商品的单价,单位是元)

价格(临时存储正在称重的商品的价格,价格=单价*重量,单位是元)

重量(临时存储正在称重的商品的重量,单位是千克)

总额(存储累加的称重商品金额,单位是元,按清零键后,它清零)

projectImage

接下来是初始化,将几个变量初始化。

包括各个变量设置为零或者空(水果这个变量设置为空)

开启摄像头,设置显示摄像头画面的模式,设置无线频道,并开启无线。

设置完毕后,显示几个主要变量,让顾客能够清楚看到当前的数值。

projectImage

接下来,编写当收到称重端发送的无线信息后,做出反应。

我们添加扩展里的“网络服务”-“AI图像识别”。

首先是检测图像,判断检测到的信息是那个商品。把值赋值给变量“水果”。

projectImage

如果接收到的无线数据是“88888888”,就执行清零初始化。

如果接收到的无线数据是“99999999”,就发送“打开支付二维码”的广播。

添加另外一个角色,角色的造型是支付二维码图片。当接收到“打开支付二维码”广播时,角色显示,当收到“关闭支付二维码”的广播后,角色隐藏。我们退到上图,在接收到无线信息后的第一条指令是“关闭支付二维码”,也就是除了接收到“99999999”,其他情况下,支付二维码是不出现的。

projectImage

当接收到的无线数据既不是“88888888"也不是“99999999”的时候,说明传过来的是重量值。

由于传过来的数值单位是克,而且还是小数,我先取整,然后除以一千,换算成千克。

然后通过判断指令,给单价赋值。

最后计算出价格和总价,显示并语音播报。

projectImage

程序大致的介绍到这里,虽然程序有点长,但是读起来并不难。

下图是整个程序的截图。

projectImage

本程序源码已经分享在码云,下载链接是:

https://gitee.com/zslqg/ai_intelligent_scale

Makelog作者原创文章,未经授权禁止转载。
3
1
评论
[[c.user_name]] [[c.create_time]]
[[c.parent_comment.count]]
[[c.comment_content]]