【信息科技案例】结合koi人工智能摄像头,打造智能安全门锁 (文末有源文件)

[复制链接]
44 |5
rmq 发表于 2024-12-18 15:12:29 | 显示全部楼层 |阅读模式
本帖最后由 rmq 于 2024-12-21 09:18 编辑
【导语】


上个星期小喵带大家用纯软结合小喵AI制作了一款智能门锁,现在我们来结合未来板Lite、koi2人工智能摄像头等其他硬件来制作一把现实生活中的智能门锁,可以实现密码、人脸以及刷卡开门。

1.jpg
【材料准备】


上图中的风扇只是装饰道具,不需要编程。

2.png
【编程软件使用】

        Kittenblock1.89  点击进入在线编程

【功能概述】


这里的功能和上星期发布的仿真智能门锁案例很像,在原基础上还增加了RFID刷卡效果,本质上还是通过或运算判断开门的指令。
3.png
【前期准备】


门锁结构:

由于是两套木板结构,一套是门锁结构,一套是小屋房门结构。这里先介绍门锁结构。
在门锁中,需要放置RFID模块、矩阵键盘、碰撞模块和KOI模块,这些模块需要提前测量好各个方面的尺寸以确保能够放的进去,所以这里粗略的键了个模型(建模软件这里小喵选择3d某 Cut软件)。这里需要注意建模时需要考虑接线时的尺寸变化,所以在对应的接口部位会有一些凸起。

4.png

之后构想出门锁的实现方式,旋转门把手碰到碰撞开关然后把门打开,松手后门把手回到初始位置。根据这个功能简单构建出一个基本模型,仿真软件中可以看到旋转门把手时碰到了碰撞开关。

5.png

之后建造一块底板,并补充好门把手的造型,至于怎么样让门把手碰到开关后复位,则需要把木板切出来后才会看到效果,这里主要是给位看一下门把手的组成结构,方便后期安装,安装顺序不是动图顺序。

6.gif

后面根据底板和模块的位置构建出门锁的顶板,并调整一下位置,大概如下情况,这里唯一值得注意的是要预留好出线孔:

7.png

仔细检查后把模型导出为图纸并进行切割,由于尺寸较大,切割时选择两块A4大小的4mm木板。(如果嫌自己画图纸太复杂可以往文末查看白嫖方式哈~

8.png

切割完成后用热熔胶枪组装一下,这个过程蛮久的,需要有点耐心。注意侧面的木板不要装完,可以留一部分,从侧面看的效果大概是这样的。需要注意koi2的4pin线是经过延长的,如果有25cm以上的4pin线则不用延长。

9.jpg

接着找一条5cm大小的橡皮筋按照动图所展示的进行安装,当我转动把手时会拉动皮筋并且碰到碰撞开关,松开门把手后运用皮筋的弹性势能转化为动能从而使门把手复位。虽然结构简陋,但是能用就行~

10.gif

反复多试几次确认没有问题后再把门锁完整组装完整即可,其中各模块的线从侧面穿出并提前做好标记,免得接错位置。接线图会放在后面。

11.jpg

房屋准备:
这个图纸就简单画一下了,目的是做一个用舵机开门的场景。切割时用3mm的A4大小木板切割。(如果不想画也可以在文末白嫖哈)

12.png

准备如下积木,作为舵机与木板门的开门结构,这里最好选择用光滑销,确保不要有太大的摩擦力。

13.png

舵机和门的组装方式如图,强烈建议先上传程序把舵机的角度调整为40°后再安装关门时的状态,不然角度不一致容易在舵机运动后损坏结构:

14.jpg

最后不要忘记加上房屋顶,手动测试一下确保能够顺利开门(小喵这里用程序控制):

15.gif

接线准备:
组装好结构后开始接线

16.png

【程序编写】
【模型录入】


这里我们要做的是对koi2的模型进行录入,这部分在接线后进行。未来板Lite和软件连接,使用在线模式进行录入。
首先对koi2初始化,并且将模式调整到特征分类模式并前置摄像头。根据koi2的加载情况依次点击①②③积木即可,注意这里点击①和②后发现koi2会短暂重启,需要等koi2屏幕显示拍摄图像后再点击运行下一个积木。完成后koi2的初始化设置完毕。

1.png

创建一个名为【识别数据】的列表,列表存放三个英文字符,字符之间用英文逗号隔开:
empty意为没有检测到人脸时的标签;
master意为检测到房屋主人的标签;
stranger意为检测到陌生人的标签;
创建完之后点击④号积木才能设置这些标签,完成后开始录入图像。

2.png

将koi2摄像头对准周围没有人的环境,点击⑤号积木将图像进行学习,每点击一次koi2就学习一次,建议点击30次左右。
将摄像头对准主人的脸,可以是真实的脸也可以是打印出来的脸(可以参考上期小喵AI学习的图像),点击⑥号积木进行学习,建议学习50次左右。
之后对准陌生人的脸,点击⑦号积木,也是学习50次左右。
三个标签都学习了之后更新koi数据并查看学习效果,检测是否识别准确。

3.png
检测时舞台角色会说出当前摄像头识别到的分类情况,如果发现某一类标签的识别不太准确,可以单独对标签进行学习,完成后可以看到识别非常准确:

4.gif

效果不错的话可以点击⑨号积木将学习文件进行保存,文件名必须为英文且不能有空格,小喵这里写的是“open_door”,保存后会看到koi2屏幕会显示1s模型已存储,代表成功保存。如果效果不好可以点击10号积木删除数据重新学习。至此koi2模型学习完毕。接下来开始编写未来板Lite程序。

5.png

【初始化】


未来板Lite程序初始化包含以下几个方面:
首先是设备的初始化,由于koi2和键盘都是串口通讯的,在连接前需要根据接线位置进行初始化。
之后是koi2的初始化设置:需要确定识别模式、加载模型和摄像头的朝向。
其次是列表和变量的初始化,其中【开门密码】变量记录键盘开锁的密码1234,这里不能直接写,而是要写成单引号包裹且数字与数字之间要用一个空格隔开,也就是:‘1 2 3 4’
原因主要是后面列表转字符串时需要每个字符一一对应,而单引号和空格无法通过图形化编程剔除。
最后是舵机位置和屏幕显示初始化,直接参照图片参数设置即可。

6.png

【门锁功能】
对本次案例的功能进行拆分,可以分为六大板块,这里可以提前创建函数名称。
7.png
【环境录入功能】


首先,在用koi2识别各种复杂环境时,可能会把环境识别成人脸,所以对于新环境需要重新学习,这里我设置了按下板载M键持续学习新环境,直到koi2将当前环境识别成empty即可。

blocksPng-1734418274533.png

【卡片检测功能】

这个功能同样很简单,只要检测到卡片,就设置【开门】变量为1并且蜂鸣器响起正确音律。

9.png

【人脸识别功能】


每次进行分类识别时,和koi1不一样,koi2需要先更新数据,再开始获取结果。如果识别到陌生人会发出警报并等待2s。而如果识别到主人则使【人脸检测】变量设为1,意为关闭检测,并且设置【开门】变量为1。其实人脸识别程序的部分就这么多,难的就是前面koi2对图像的学习录入。

10.png

【键盘程序功能】


首先需要使用【键位】变量记录按下的键位,如果键盘上的某个键位被摁下,再键位松开后开始进行判断。先判断按下的键位是不是数字,判断的方法如图所示,如果是则需要把输入的键位存入【输入密码】列表中,并且在后面设置【显示密码】为1,这个意思为密码会在屏幕上显示出来。
由于在屏幕中显示列表的数字是会出现【】 ‘ ,等不希望出现的字符,所以需要用【密码】变量对列表的内容进行剔除。

11.png

很多人可能不理解,为什么要用列表存储密码而不是直接用变量,其实为了还原一个一个删除已输入的密码的功能,在图形化编程中只能用列表实现。下面来说一下如果键盘没有按下数字实现哪些功能:
如果按下键盘A键,播放门铃;
按下键盘*号键,删除最后一位密码;
按下键盘#号键,删除所有密码。

12.png

这里唯一特别的是*号,由于在micropython中*号是操作符,代表对数字类型的数据做乘法等等用法,为了使判断的使字符类型的数据,需要在*号前后加上单引号,不然会报错。具体情况我们可以打开代码模式查看两者的差异:

13.png

【显示内容功能】
在显示内容中需要根据变量的情况显示不同的内容,如果是在输密码时,则显示密码;如果什么都没做,则始终保持开机画面。
如果【密码】=【开门密码】则设置【开门】变量。

14.png

【开门程序功能】


无论是哪种方式实现的开门效果,都可以使【开门】变量设为1进入开门程序,此时屏幕会显示旋转把手开门,当木板结构中的把手碰到碰撞开关后会触发舵机转到180°自动把门打开,并且在一定时间后关上(这里可以替换为按下未来板按键按下关上),同时重置相应变量和列表。至此所有程序已完成。

15.png

【程序获取】


如果需要获取程序源文件和加工图纸的友友,可以在下方回复帖子免费获取哈!
游客,如果您要查看本帖隐藏内容请回复

功能演示
      
      智能门锁演示视频

1.jpg
创意科学家90 发表于 2024-12-18 15:13:57 | 显示全部楼层
关注了 能分享源文件嘛
FunSeeker90 发表于 6 天前 | 显示全部楼层
学习学习~~~~~~~~~~~
DreamChaser7 发表于 6 天前 | 显示全部楼层
谢谢楼主,我也看一下~
rmq楼主 发表于 6 天前 | 显示全部楼层
创意科学家90 发表于 2024-12-18 15:13
关注了 能分享源文件嘛

你有回复的话就能下载了 感谢关注
TechGuru8901 发表于 3 天前 | 显示全部楼层
kkkkkkkkkk
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门版块
快速回复 返回顶部 返回列表