查看: 770|回复: 3

[视觉识别入门教程] 【HUSKYLENS】Arduino视觉识别入门教程—03借还书系统

[复制链接]
本帖最后由 _木子_ 于 2020-6-12 13:47 编辑

项目三:借还书系统

生活趣事:
我们从小到大,对图书馆都不陌生吧。我小时候去学校的图书馆借书时都需要有一个借书证,这个证件上会有着我的一些相关信息,凭着这样一个证件我就能借到书了。而现在借书更加方便了,可以是一个二维码,也可以是学生证(甚至是自己的饭卡)就可以用来借书。先让我们来回忆一下我们借书的流程吧,如下图。
正常图书馆借书操作流程图:


图片1.jpg

而今天我们就使用哈士奇的标签识别功能,制作一个可以通过二维码来借书和还书的一个借还书系统。

功能介绍:
在这个项目中,我们将学习HUSKYLENS的标签识别功能,利用其内置的机器学习功能,分辨学习过的标签,而标签上面的信息录入我们在这就不进行设置了。我们假设这个标签包含了我们的信息,录入系统后就可以进行借书还书等操作,也可以通过SIoT的功能记录借书及还书的时间,并发送相应消息至管理员处,实现远程监控的功能。

材料清单:
               
1.jpg

知识园地:
我们仔细观察现在学习的借书过程,会发现无论是人工借还书还是自助借还书,都是通过扫码装置对借书证条形码(或是内置小芯片)进行扫码,每个借书者拥有的条码都是不一样的,所以我们只需找到扫码装置和条形码的替代品就可以实现我们的项目了。

图片2.jpg 图片3.jpg


扫码装置------>HUSKYLENS的标签识别功能
条形码------>AprilTag

一、什么是标签识别?—————————————————————————————————————————标签识别技术(简称标识技术)是指对物品进行有效的、标准化的编码与标识的技术手段,它是信息化的基础工作。随着人们对于健康和安全的意识越来越强,食品行业对产品的质量和安全性(从原料,运输,到生产、贮藏以及涉及的追溯和管理)的要求越来越高、越来越多。标识在满足企业对产品追踪追溯需求等方面也起到了很重要的作用。

标识技术主要有条形码技术、IC卡技术、射频识别技术、光符号识别技术、语音识别技术、生物计量识别技术、遥感遥测、机器人智能感知等技术。

图片4.jpg

二、什么是AprilTag?
—————————————————————————————————————————AprilTags是一个出自密歇根大学项目团队的视觉基准系统,主要用于AR,机器人和相机校准等领域。标签的作用类似于条形码,存储少量信息(标签ID),同时还可以对标签进行简单而准确的6D(x,y,z,滚动,俯仰,偏航)姿势估算。

图片5.jpg

三、HUSKYLENS识别AprilTag原理
—————————————————————————————————————————

AprilTag识别过程主要包含如下步骤:

1、边缘检测,寻找图像中的边缘轮廓。


图片6.jpg

2、四边形检测,找出轮廓中的四边形。

图片7.jpg

3、解码,对找出的四边形进行匹配、检查。

图片8.jpg

通过这些步骤,HUSKYLENS的标签识别功能就能识别不同的AprilTags,因此,我们只需要将不同的AprilTags贴在不同的商品上就可以实现识别对应商品了。

四、HUSKYLENS传感器-标签识别功能演示
—————————————————————————————————————————
1、侦测标签
当HuskyLens检测到二维码标签时,屏幕上会用白色框自动框选出检测到的所有二维码标签。

图片9.jpg

2、学习标签
将HuskyLens屏幕中央的“+”字对准需要学习的标签,短按或长按“学习按键”完成第一个标签的学习。松开”学习按键“后,屏幕上会提示:”再按一次按键继续!按其他按键结束“。如要继续学习下一个标签,则在倒计时结束前按下“学习按键”,可以继续学习下一个标签。如果不再需要学习其他标签了,则在倒计时结束前按下”功能按键”即可,或者不操作任何按键,等待倒计时结束。

图片10.jpg

标签ID与录入标签先后顺序是一致的,也就是:学习过的标签会按顺序依次标注为“标签:ID1”,“标签:ID2”,“标签:ID3”,以此类推,并且不同的标签对应的边框颜色也不同。

3、识别标签
HuskyLens再次遇到学习过的标签时,在屏幕上会有彩色的边框框选出这些标签,并显示其ID。边框的大小会随着二维码标签的大小进行变化,边框自动追踪这些二维码标签。

图片11.jpg

项目实践:
学会哈士奇的标签识别功能后,让我们一起来实现借书系统的功能。首先要实现的功能就是摄像头能识别不同标签,每一个标签代表着不同的借书者,这里我们自定义一个变量为借书者A表示一名借书者。通过液晶显示屏实时的对我们的操作进行显示。然而我们的借还书系统有借书也有还书,因此我们需要用一个按钮来对状态进行切换。最后通过物联网模块,实现远程监控。

任务一:实现借书和还书功能
在这步我们先学习如何使用HUSKYLENS摄像头对标签进行学习,如是已学习的标签就可进行借书和还书。这里我们设置一个变量,通过变量的变化进行借还书判断(0和1,0代表借书,1代表还书)。首先是借书,初始每人最多借两本书,当到达上限时,则需要先还书才能进行下一次借书。其次是还书,还书的基础是我们先有借书(所以初始要设置借书数为1或者2),借还书的数量变化我们都可以通过显示屏进行实时的显示。

任务二:实现功能切换
在完成借书和还书的功能后,我们需要把他们和在一起,因此需要用按钮对借书和还书的状态进行切换。

任务三:实现远程监控功能
完成以上功能后,我们想对每次借书和还书的时间都有一个记录(借还书的日期),以及可以提醒管理员某类书籍可能库存不足的问题。要实现这些功能,我们可以通过物联网模块实现远程监控功能。

任务一:实现借书和还书功能
—————————————————————————————————————————

1、硬件连接
HUSKYLENS:I2C引脚(T—SDA、R—SCL、+—5V、- —GND)
按钮:数字引脚4
物联网模块:UART口(T—RX(绿线)、R—TX(绿线)、+—VCC、- —GND),上传程序时需拔掉RX,上传成功后再插上。
LCD显示屏:I2C引脚(SDA—SDA、SCL—SCL、VCC—5V、GND—GND)

图片12.jpg

2、程序设计
我们需要通过HUSKYLENS扫码实现借书者A进行借书和还书功能,因此设置变量“借书数”并设置初始数值为0(说明没有进行借还书操作)。而我们借书数最大值可以设置为2代表每人最多能同时借两本书。如果使用HUSKYLENS对AprilTag码进行扫码操作时,液晶显示屏实时的显示“借书数”的值,每次扫码都对借书数进行增加1,当借书数到达2时,则显示屏提示“need to return”。当进行还书操作时,每次扫码对“借书数”进行减一操作,当没有书可还时,则提示“No return”。

STEP1 Mind+软件设置
打开 Mind+软件(1.6.2及以上版本),切换到“上传模式”,点击“扩展”,在“主控板”下点击加载“Arduino Uno”,在“传感器”下点击加载“HUSKYLENS AI 摄像头”,在“通信模块”下点击加载“OBLOQ物联网模块”,在“显示器”下点击加载“LCD1602模块”。

图片13.jpg
图片14.jpg
图片15.jpg
图片16.jpg

STEP2 指令学习
来认识一下主要用到的几条指令。

2.jpg

STEP3 流程图分析

图片17.jpg

3、程序示例
(1)借书示例程序,需设置“借书数”的初始值为0。

图片18.jpg

(2)还书示例程序,需设置“借书数”的初始值设为1或者2,这样才能实现还书操作。

图片19.jpg

4、运行效果
当选择示例程序(1)时,HUSKYLENS摄像头识别到AprilTags识别码,则可以进行借书操作。当扫描到之前学习过的标签时,显示屏会显示“YES”(显示屏只能显示英文,具体内容可以自行设置),说明是可以进行借书操作。3s后,屏幕显示“ move the QR ”,则提示需要把标签移开摄像头之外,之后显示此次借书数。

图片20.jpg

当选择示例程序(2)时,HUSKYLENS摄像头识别到AprilTags识别码,则可以进行还书操作。当扫描到之前学习过的标签时,显示屏会显示“YES”,说明是可以进行还书操作。3s后,屏幕显示“ move the QR ”,则提示需要把标签移开摄像头之外,之后显示还需还书数。

图片21.jpg

任务二:实现功能切换
——————————————————————————————————————————————————
1、程序设计:
综合上面的代码,把他们结合成一个项目,因此需要一个切换的功能,这里我们选择按钮来进行切换。程序逻辑上是要用一个变量去控制程序在不同的状态下的切换,因此我们设置一个名为“切换功能”的变量,并初始化值为0。当值为0时,我们设置为借书状态。当值为1时,则是还书状态。同时呢,我们可以完善我们的显示屏显示的内容,达到很好的提示借书者的功能。

2、程序示例:
图片22.jpg

3、运行效果:
在之前程序的基础上增加了按钮切换状态的功能。当程序运行时,屏幕显示“Press button to select status”,提示为按下按钮选择功能状态,默认为借书状态。此时直接用HUSKYLENS摄像头扫描标签时,则直接可以进行借书。当借好书之后,按下按钮就可以切换状态,从而进行还书。

(1)状态选择

图片23.jpg

(2)借书状态

图片24.jpg

(3)还书状态

图片25.jpg

任务三:实现远程监控功能
—————————————————————————————————————————————————

1、程序设计:
完成上面的设计之后,我们尝试增加物联网模块。可以记录借书和还书的时间。当然当库存的书小于两本时,可以通知管理员等。这些功能我们该怎么实现呢?首先时借书和还是的时间,其实很简单,因为我们的SIoT可以自动的记录收到消息的时间,因此只要使用物联网模块在借书或者还书的时候发生消息当网页端即可。而对于管理员的通知,为了方便实现效果,我们可以设置库存为3(库存可以自行设定,但这里方便实现效果我们设置为3),当小于3时,就通知管理员库存不足。

提示SIoT的相应设置详情链接:https://mc.dfrobot.com.cn/thread-281129-1-1.html

2、程序示例:


图片26.jpg
图片27.jpg


3、运行效果:
当程序运行时,需要等SIoT连接成功后(物联网模块亮绿灯后),才能通过按钮进行功能切换选择,当我们选择借书状态时。摄像头扫描到标签时,完成借书过程时,显示屏显示为“borrow:1”,网页端的“jieshuzhe”的消息显示为“已借1”,而网页端的“guanlizhe”显示为“库存不足”,正好满足我们的功能设计。

图片28.jpg

当SIoT连接成功后,在SIoT项目下生成了“jieshu”的项目。

图片29.jpg

点击“jieshu”项目下的“查看设备列表”,可以看我们发送的两个消息

图片30.jpg

点击“jieshuzhe”的“查看消息”可以看到

图片31.jpg

点击“guanlizhe”的“查看消息”可以看到

图片32.jpg

项目小结:
通过借还书系统项目,我们了解了”HUSKYLENS“的又一新功能标签识别功能,通过标签识别我们基本实现了借书和还书两个功能(以及显示借还书的日期),并且可以发送消息给管理者达到提示的功能。

知识点回顾:
1、了解标签识别的工作原理;
2、学习了HuskyLens标签识别的学习过程;
3、学习了HuskyLens标签识别的相关指令;
4、变量的灵活运用,实现不同的效果。

项目拓展:
这个项目中,我们只做了一个借书者的借书和还书,在此功能上你能不能增加2个新的借书者?完成添加新的借书者后,想一想如果是图书管书管理系统的话,还缺少什么功能呢?想到的话可以动手试试哦!






帅猫  中级技师

发表于 2020-6-12 14:34:02

ESP32它不香吗
回复

使用道具 举报

_木子_  中级技匠
 楼主|

发表于 2020-6-12 14:54:37


         
回复

使用道具 举报

shzrzxlee  中级技匠

发表于 2020-6-13 10:56:32

相比语音合成模块串口连接要交叉,obdq物联网模块的串口连接简单
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail