所有分类
主题 主题
平台 平台
我的工作台
userHead
注册时间 [[userInfo.create_time]]
创造力 [[userInfo.creativity]]
[[userInfo.remark]]
[[d.project_title]]
articleThumb
[[d.material_name]]
timelineThumb
进入工作台
折叠
所有分类 我的工作台
展开

基于mind+平台及DFRduino开源硬件的共享篮球项目

luyi luyi 2020-02-12 17:18:04

一、项目简述

       体育迷应该都碰到过这样的事。不经意间来到篮球场、足球场,忽然心血来潮,希望进入场地锻炼一下或许显露身手,但却往往“没带球”。是的,很多篮球爱好者在打球进程中面临着忘记带球、带球麻烦、临时打球、买球轻易丢、经常被借球、带球人先走以及随身物品存放等麻烦,希望通过篮球共享、物品存放的模式来解决以上痛点。

       于是,共享篮球应运而生,只要通过简单的验证,注册激活,就可以借到球。赶快来畅享一下吧!


projectImage

二、器材清单

1. 硬纸板 若干                       制作箱子
2. DFRduino               *1        主控板
3. 摄像头                    *1         人脸及证件图像获取
4. HC-SR04 超声波    *1         根据箱内距离大小判断是否有球
5. 9g 舵机                   *1         开启或关闭箱门
6. 无源蜂鸣器             *1         播放开启或关闭箱门提示音
7. LED灯                     *1         箱内照明
8. LCD1602显示屏     *1         实时显示箱内是否有球


三、硬件连接图

projectImage

四、业务流程图

    (1)信息流导向图

projectImage

    (2)逻辑流程图

projectImage

五、视频演示

六、mind+程序解说

(1)舞台设计

projectImage

(2)初始化程序,启用篮球场背景,显示“借球”、“还球”按钮。

projectImage

(3)点击绿旗,启动程序,使用超声波测距,检测箱内是否有篮球,并在LCD1602显示屏上显示。

projectImage

(4)定义输入电子邮箱函数。当用户点击“借球”按钮时,需要用户输入电子邮箱。然后,将电子邮箱通过MQTT发送到Python后台程序,交给Python进行邮箱格式验证,激活验证,以及黑名单验证。

projectImage

(5)MQTT接收后台程序对电子邮箱验证的结果,如果邮箱格式错误,则重新输入。如果已被拉入黑名单,则需要电话联系管理员。如果邮箱没有被激活,则输入邮件中的4位整数验证码,Python后台程序继续校对验证码是否正确,是否超时,完全符合要求才允许进行“身份证拍照”。

projectImage

(6)采集身份证信息,采集人脸信息,进行人脸识别对比验证。如果认证通过,则打开箱门、开启LED照明灯、播放“滴”提示音。等待15秒后,再次利用超声波检测球是否被用户取走。如果被取走,则将信息发送给Python后台存进数据库。

projectImage

(7)如果用户点击“还球”按钮,让用户输入电子邮箱,打开箱门、开启LED照明灯、播放“滴”提示音。等待15秒后,再次利用超声波检测球是否被放入。如果被放入,则将信息发送给Python后台存进数据库。

如果接受到Python后台返回的“huanOK",则表明还球成功。

如果接受到Python后台返回的”huanHei“,则表明还球超时,已被拉入黑名单。

projectImage

七、数据库设计

    (1)数据库E-R图

projectImage

    (2)用户信息表设计

projectImage

    (3)借还记录表设计

projectImage

八、Python程序解说

(1)引入库文件

projectImage

(2)建立MQTT,开启订阅话题

projectImage

(3)利用正则封装电子邮箱验证函数

projectImage

(4)如果接受到用户发来电子邮箱,判断是否为新用户,新用户则通过邮件发送激活码,老用户则判断其是否被列入黑名单

projectImage

(5)封装发送邮箱函数,由于发送验证码

projectImage

(6)如果收到用户发来的4位整数验证码,判断其是否正确,判断其是否过期,如果正确且不过期,则激活成功

projectImage

(7)如果篮球被用户取走,将记录存入到借还记录表

projectImage

(8)如果接受到用户还球操作,将记录存入借还记录表,并判断用户还球是否超时。如果超时,直接拉入黑名单

projectImage

(9)定时监测,排查超过24小时还没有还球的用户,直接拉入黑名单

projectImage

九、运行方法

(1)解压“共享篮球程序”。

(2)运行SIoT目录下的 “SIoT_windows_1_2.exe”

(3)如下图所示,修改“shareball.py”文件中第193、194、195、197行的电子邮箱配置成自己的邮箱服务器

projectImage

(4)在Python3.8模式下运行“shareball.py” 和 “jiance.py” 

(5)运行“共享篮球.sb3”

十、随笔体会

     想法是突发奇想,受到"章"老师”爱的传递——爱心储物柜“启发,才想到”共享篮球“的。网上一搜,确实也已经存在这样的项目了。开始像简单的做,只是有人靠近自动打开箱门,借球、还球。这样显得苍白无力,不能掌控,不够严谨。想想,有人借了球不还怎么办?于是想到了,人脸识别。只能使用mind+实时模式了,直接提供了图像识别和语音朗读功能。哈哈。

     原本想使用人脸识别进行借球和还球操作就可以了。可是,mind+可以保存视频截图,却不能获取该截图的文件名,导致,该截图不能重复调用。

     没有哈士奇,只能实时模式,而mind+实时模式和外界数据交换的网络功能,只有MQTT和TinyWebDB。因为MQTT可以使用谢老师和他的朋友们搭建的SIot平台,因此,我直接采用的这个。并且,在SIOT的基础上编写Python程序,来做更细致的数据处理。

     这是我第4次使用正式的使用mind+编程程序,每用一次,感觉一次它的强大。特别是Arduino开源套件这一块,集成了非常丰富的类库,直接调用,很方便。

     此次项目仅仅是在现有条件下开发,使用Emall电子邮箱激活通讯。实际上,如果申请到微信扫描登陆、微信支付等接口。或者,使用短信接口,发送激活验证码,会更好,更便捷。

十一、参考案例

(1) "云天"老师   [项目分享]Python与Slot本地物联网实现互通  https://mc.dfrobot.com.cn/thread-302643-1-1.html#pid441933

(2) DFEDU   [求助问答] I2C LCD1602液晶显示屏无法显示怎么解决  https://mc.dfrobot.com.cn/thread-297811-1-1.html

(3)"章"老师   [项目分享]爱的传递——爱心储物柜 https://mc.dfrobot.com.cn/thread-281075-1-1.html

同时,感谢群里各位大佬的技术指导,谢谢各位!

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