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

【DF冬季AI挑战赛】基于mind+平台的智能视力检测系统

rzegkly rzegkly 2020-03-15 20:11:09
0
0
简单
projectImage

一、项目背景

        根据世界卫生组织报告,中国近视患者人数有6亿之多,这意味着几乎每两个中国人中就有一人受到近视问题困扰,而我国青少年的近视率高居世界第一。受这次疫情影响,开学时间进行延期,为了不影响学生学习,开展了停课不停学物联网上课的模式,学生可以通过手机、电脑、电视等多渠道进行学习,不仅保障了学生们的安全,还可以让学生们“有学可上”,但是如何保证我们学生视力不受影响,今天分享一个基于mind+平台的智能视力检测项目。

projectImage
材料清单 材料清单
1x
micro:IoT
1x
CR123A可充电式锂电池
1x
哈士奇 HuskyLens PRO
1x
micro:bit
1x
高品质 micro USB数据线
projectImage

二、搭建环境

 1、硬件:  micro:bit 

                     micro:bit物联网扩展板

                   HuskyLens 

 2、软件:Mind+_Win_V1.6.2_RC2.0 

                 物联网服务器 SIoT v1.2 

projectImage

三、功能原理

1.通过虚谷物联SIOT,在Micro:bit和Mind+建立数据通信.

2.未检测手势时,在Mind+实时模式下随机播放视力表;micro:bit点阵屏显示跳动的心;

3.当哈士奇检测到不同手势的位置,将识别的结果在Micro:bit板led点阵屏上显示.

4.同时,将跟踪到手势信息通过虚谷物联SIOT在Mind+上进行判断和比对.

5.将检测视力结果通过虚谷物联SIOT在micro:IoT的 OLED 屏幕上显示出来。

projectImage

四、视频演示

五、哈士奇的手势追踪说明

1.     通过学习哈士奇相关参考资料,我们知道哈士奇屏幕的分辨率是 320×240,屏幕左上角的顶点为屏幕的坐标原点(0, 0),水平向右方向为 X 轴正方向,竖直向下方向为 Y 轴正方向,因此屏幕右下角的坐标为(320, 240)。为了便于理解,我们将下图中哈士奇屏幕上的信息剥离出来,抽象成下图的几何数学模型, 这有助于我们了解彩色方框的坐标值。

projectImage

2.下图黄色区域为哈士奇摄像头“看到”的手势位置提供一个依据。 

当手触动在屏幕区域(80.20)--(200.20)和(80, 70)--(200, 70)之间,哈士奇发现手在摄像头屏幕的上方;

 当手触动在屏幕区域(20.80)--(70.80)和(20.140)--( 70.140)之间,哈士奇发现手在摄像头屏幕的右方; 

当手触动在屏幕区域(80.150)--(200.150)和(80, 220)--(200, 220)之间,哈士奇发现手在摄像头屏幕的下方;

当手触动在屏幕区域(220.80)--(290.80)和(220.140)--( 290.140)之间,哈士奇发现手在摄像头屏幕的左方;

projectImage

说明:

1.在哈士奇手势追踪模式下,我们把屏幕划分四个区域,定位手势在屏幕区域的位置 ;

2.当哈士奇识别学过的物体时,在屏幕上会有蓝色方框将其框选,屏幕方框随手势位置而改变;

3.当哈士奇发现手势出现上图黄色区域时,方向信息传递给bit,发出相关指令,实现物体跟踪的目的。

六、建立SIOT物联网服务器

projectImage

1、运行虚谷物联SIOT 服务器记住本机电脑IP地址,在本电脑上打开http://127.0.0.1:8080/html,账号:siot 密码:dfrobot 登陆SIOT服务器。

projectImage

 2、当micro:bit IoT扩展板接通电源,当联网指示灯led绿灯亮,说明正常接入siot网络,bit板的LED发出“对号图案”,hello发送服务器rzegkly/shili主题topic0,网络连接成功。 


projectImage

 3、当接受到microbit主板发过来topic0主题信息,在实时模式Mind+进行手势方向比对 。视力检测结果通过topic1返回给microbit主板上显示出来。

projectImage

七、Mind+编程

步骤1 步骤1
Micro:bit编程环境配置

1.通过数据线连接micro:bit和计算机,用管理员模式打开Mind+1.6.2,将Mind+切换为“上传模式”下,连接设备,选择串口com19

projectImage

2、扩展模块中,添加主控板:micro:bit;扩展板:物联网microbitIoT,传感器:HuskyLens AI摄像头

projectImage
projectImage
projectImage
步骤2 步骤2
哈士奇识别手势坐标位置
projectImage

1.上电后,将二哈切换到物体识别模式,伸出手势放在哈士奇屏幕前,一个黄色的矩形框瞄准,按下学习按键 ,显示黄色方框正在学习,松开按钮完成学习,显示蓝色方框和物体ID1。(如果效果不理想,再次按下学习按键,进入遗忘信息界面,之前学习的内容全部清空,重新识别。 ) 


projectImage

 2.通过mind+程序,检测串口输出识别方框中心的X,Y坐标,对屏幕坐标认识。

说明:哈士奇物体跟踪效果很满意时,长按“功能按键”,进入物体识别功能的二级菜单参数设置界面,向右拨动“功能按键”关闭“学习多个”的开关,再短按“功能按键”,保存并返回物体跟踪界面,如果不关,受到光线或其他物体的干扰 ,影响物体跟踪的效果。

projectImage
步骤3 步骤3
micro:bit编程
projectImage

1.在micro:IoT初始程序相关参数,当micro:bit的点阵屏显示“对号”,MQTT物联网连接成功!,在OLED 屏幕显示:micro:IoT  智能视力检测系统。

projectImage

2.哈士奇检测到手势出现在屏幕的四个区域时,发出上、下、左、右四个方向消息到Topic0:rzegkly/shili,同时,在bit的点阵屏显示不同手势方向。

projectImage

3.在Mind+实时模式,对手势和视力表进行比对,将检测到的视力结果通过虚谷物联siot的 Topic1:rzegkly视力级别,在micro:IOT板子上OLED 屏幕显示。

说明:由于扩展板micro:IOT没有清空命令,所以使用显示文字块中“空白”实时清空第4行文字内容。

projectImage
步骤4 步骤4
Mind+实时模式环境配置
projectImage

1.用管理员模式打开Mind+1.6.2,将Mind+切换为“实时模式”下;

projectImage
projectImage
projectImage

2.在背景库里添加logo背景,在角色库中分别添加小麦和视力表两个角色.

projectImage
projectImage

3.在Mind+扩展模块中,功能模块:添加文字朗读,网络模块:添加MQTT模块;

步骤5 步骤5
Mind+视力表程序编写

1.编写视力表角色脚本——初始相关参数

程序启动后,初始相关变量参数,在Mind+左侧网络服务模块,设置物联网平台:SIOT ,服务器地址:192.168.0.103,账号:siot ;密码:dfrobot 接受bit发送过来的手势信息主题1:rzegkly/shili ;发送给bit检测视力结果信息给主题2:rzgekly/视力级别。

projectImage

2.编写视力表角色脚本——添加初始化视力表和初始化视力方向系数

由于视力表中从0.1至2.0一共设定了11个级别,每个级别中我们按照开口次序准备了4张图片,我们的视力表角色编号是依次为1-44,对应视力表列表0.1--0.4;方向列表存储了四个方向,第1个是上,第4个是右,与角色视力表图片命名顺序完全一致!

projectImage

3.编写视力表角色脚本——接收手势数据

当接收到物联网哈士奇识别到手势MQTT信息,由于接收手势信息是一个事件程序,会不停接收主题topic0中信息!

如果有信息传递,必须将收到数据赋值给手势方向变量,将结果存储下来。这数据才能在程序之间相互调用。

将显示变量图标赋值为1,为显示视力表中图片准备。


projectImage

4.编写视力表角色脚本——显示图片

当显示变量为1时,开始随机播放不同开口方向的视力表

图片显示的规律是:(系数-1)×4+(1-4间的一个随机数),这个随机数只决定视力表开口朝向,不决定级别。

projectImage

5.编写视力表角色脚本——处理图片

将收到手势方向与角色视力表开口方向进行比对,如果相等,文字朗读“ 正确“,正确次数加1,发送广播给Mind+,不相等,错误次数加1,发送广播给Mind+,文字朗读“ 错误“。 注意每次比对结束后,都要将手势方向变量 结果清0,等待接收下一次手势数据。


projectImage

6.编写视力表角色脚本——反馈信息

测试视力结束包括两种情况,一是完成了12级要退出,二是错误次数超过3次以上要退出,发出广播end给Mind+ 

这里我们用到了视力系数列表11个等级(0.1- 2.0),因为如每一个级别中有4幅图片,答对3次进入下1个等级,视力系数累加1,所以完成12级后,视力系数就会变成13,所以播报结果时当前视力系数-1。如果用户累计答错2次,也要退出程序。

projectImage
projectImage

7.编写Mind+角色脚本

当接受广播小麦正确或者小麦错误时,让我们看到当前随机视力表开口方向,

当接受广播end时,将视力检测结果通过topic1返回给micro:IOT主板上显示出来!,进而实现人机互动的目的。


projectImage

八、知识拓展 

micro:IoT 物联网扩展板

1. micro:IoT扩展板在集成了WIFI物联网模块、OLED屏,方便数据的更新;

2.两路电机驱动、6路IO口、2路I2C、1路串口、1路蜂鸣器、3路RGB灯,编程资源丰富;

3.锂电池盒、充电电路、应急电源接口等众多功能。在供电上选用容量为1000mA的CR123A 3.6V可充电锂电池;

4.在电路上还专门设计了短路保护和防反接保护,更加完善了使用的安全。 

5.产品支持makecode图形化编程和Mind+图形化编程两大平台。


projectImage

九、参考案例

1.视力智能检测系统https://mc.dfrobot.com.cn/thread-302570-1-1.html

2. 写给小学生看的视觉PID巡线算法https://mc.dfrobot.com.cn/thread-300508-1-1.html

3.Huskylens|麦昆+二哈,都是追梦人_简易版 https://mc.dfrobot.com.cn/thread-300508-1-1.html

4.Mind+官方教程:https://mindplus.dfrobot.com.cn/ 

5.HUSKYLENS官方介绍:https://www.dfrobot.com.cn/goods-2050.html

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