一、项目背景
根据世界卫生组织报告,中国近视患者人数有6亿之多,这意味着几乎每两个中国人中就有一人受到近视问题困扰,而我国青少年的近视率高居世界第一。受这次疫情影响,开学时间进行延期,为了不影响学生学习,开展了停课不停学物联网上课的模式,学生可以通过手机、电脑、电视等多渠道进行学习,不仅保障了学生们的安全,还可以让学生们“有学可上”,但是如何保证我们学生视力不受影响,今天分享一个基于mind+平台的智能视力检测项目。
三、功能原理
1.通过虚谷物联SIOT,在Micro:bit和Mind+建立数据通信.
2.未检测手势时,在Mind+实时模式下随机播放视力表;micro:bit点阵屏显示跳动的心;
3.当哈士奇检测到不同手势的位置,将识别的结果在Micro:bit板led点阵屏上显示.
4.同时,将跟踪到手势信息通过虚谷物联SIOT在Mind+上进行判断和比对.
5.将检测视力结果通过虚谷物联SIOT在micro:IoT的 OLED 屏幕上显示出来。
四、视频演示
五、哈士奇的手势追踪说明
1. 通过学习哈士奇相关参考资料,我们知道哈士奇屏幕的分辨率是 320×240,屏幕左上角的顶点为屏幕的坐标原点(0, 0),水平向右方向为 X 轴正方向,竖直向下方向为 Y 轴正方向,因此屏幕右下角的坐标为(320, 240)。为了便于理解,我们将下图中哈士奇屏幕上的信息剥离出来,抽象成下图的几何数学模型, 这有助于我们了解彩色方框的坐标值。
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)之间,哈士奇发现手在摄像头屏幕的左方;
说明:
1.在哈士奇手势追踪模式下,我们把屏幕划分四个区域,定位手势在屏幕区域的位置 ;
2.当哈士奇识别学过的物体时,在屏幕上会有蓝色方框将其框选,屏幕方框随手势位置而改变;
3.当哈士奇发现手势出现上图黄色区域时,方向信息传递给bit,发出相关指令,实现物体跟踪的目的。
六、建立SIOT物联网服务器
1、运行虚谷物联SIOT 服务器,记住本机电脑IP地址,在本电脑上打开http://127.0.0.1:8080/html,账号:siot 密码:dfrobot 登陆SIOT服务器。
2、当micro:bit IoT扩展板接通电源,当联网指示灯led绿灯亮,说明正常接入siot网络,bit板的LED发出“对号图案”,hello发送服务器rzegkly/shili主题topic0,网络连接成功。
3、当接受到microbit主板发过来topic0主题信息,在实时模式Mind+进行手势方向比对 。视力检测结果通过topic1返回给microbit主板上显示出来。
七、Mind+编程
步骤1 Micro:bit编程环境配置
1.通过数据线连接micro:bit和计算机,用管理员模式打开Mind+1.6.2,将Mind+切换为“上传模式”下,连接设备,选择串口com19;
2、扩展模块中,添加主控板:micro:bit;扩展板:物联网microbitIoT,传感器:HuskyLens AI摄像头,
步骤2 哈士奇识别手势坐标位置
1.上电后,将二哈切换到物体识别模式,伸出手势放在哈士奇屏幕前,一个黄色的矩形框瞄准,按下学习按键 ,显示黄色方框正在学习,松开按钮完成学习,显示蓝色方框和物体ID1。(如果效果不理想,再次按下学习按键,进入遗忘信息界面,之前学习的内容全部清空,重新识别。 )
2.通过mind+程序,检测串口输出识别方框中心的X,Y坐标,对屏幕坐标认识。
说明:哈士奇物体跟踪效果很满意时,长按“功能按键”,进入物体识别功能的二级菜单参数设置界面,向右拨动“功能按键”关闭“学习多个”的开关,再短按“功能按键”,保存并返回物体跟踪界面,如果不关,受到光线或其他物体的干扰 ,影响物体跟踪的效果。
步骤3 micro:bit编程
1.在micro:IoT初始程序相关参数,当micro:bit的点阵屏显示“对号”,MQTT物联网连接成功!,在OLED 屏幕显示:micro:IoT 智能视力检测系统。
2.哈士奇检测到手势出现在屏幕的四个区域时,发出上、下、左、右四个方向消息到Topic0:rzegkly/shili,同时,在bit的点阵屏显示不同手势方向。
3.在Mind+实时模式,对手势和视力表进行比对,将检测到的视力结果通过虚谷物联siot的 Topic1:rzegkly视力级别,在micro:IOT板子上OLED 屏幕显示。
说明:由于扩展板micro:IOT没有清空命令,所以使用显示文字块中“空白”实时清空第4行文字内容。
步骤4 Mind+实时模式环境配置
1.用管理员模式打开Mind+1.6.2,将Mind+切换为“实时模式”下;
2.在背景库里添加logo背景,在角色库中分别添加小麦和视力表两个角色.
3.在Mind+扩展模块中,功能模块:添加文字朗读,网络模块:添加MQTT模块;
步骤5 Mind+视力表程序编写
1.编写视力表角色脚本——初始相关参数
程序启动后,初始相关变量参数,在Mind+左侧网络服务模块,设置物联网平台:SIOT ,服务器地址:192.168.0.103,账号:siot ;密码:dfrobot 接受bit发送过来的手势信息主题1:rzegkly/shili ;发送给bit检测视力结果信息给主题2:rzgekly/视力级别。
2.编写视力表角色脚本——添加初始化视力表和初始化视力方向系数
由于视力表中从0.1至2.0一共设定了11个级别,每个级别中我们按照开口次序准备了4张图片,我们的视力表角色编号是依次为1-44,对应视力表列表0.1--0.4;方向列表存储了四个方向,第1个是上,第4个是右,与角色视力表图片命名顺序完全一致!
3.编写视力表角色脚本——接收手势数据
当接收到物联网哈士奇识别到手势MQTT信息,由于接收手势信息是一个事件程序,会不停接收主题topic0中信息!
如果有信息传递,必须将收到数据赋值给手势方向变量,将结果存储下来。这数据才能在程序之间相互调用。
将显示变量图标赋值为1,为显示视力表中图片准备。
4.编写视力表角色脚本——显示图片
当显示变量为1时,开始随机播放不同开口方向的视力表
图片显示的规律是:(系数-1)×4+(1-4间的一个随机数),这个随机数只决定视力表开口朝向,不决定级别。
5.编写视力表角色脚本——处理图片
将收到手势方向与角色视力表开口方向进行比对,如果相等,文字朗读“ 正确“,正确次数加1,发送广播给Mind+,不相等,错误次数加1,发送广播给Mind+,文字朗读“ 错误“。
注意每次比对结束后,都要将手势方向变量 结果清0,等待接收下一次手势数据。
6.编写视力表角色脚本——反馈信息
测试视力结束包括两种情况,一是完成了12级要退出,二是错误次数超过3次以上要退出,发出广播end给Mind+
这里我们用到了视力系数列表11个等级(0.1- 2.0),因为如每一个级别中有4幅图片,答对3次进入下1个等级,视力系数累加1,所以完成12级后,视力系数就会变成13,所以播报结果时当前视力系数-1。如果用户累计答错2次,也要退出程序。
7.编写Mind+角色脚本
当接受广播小麦正确或者小麦错误时,让我们看到当前随机视力表开口方向,
当接受广播end时,将视力检测结果通过topic1返回给micro:IOT主板上显示出来!,进而实现人机互动的目的。
八、知识拓展
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+图形化编程两大平台。
九、参考案例
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
评论