116| 2
|
[项目] 行空板K10+APP Inventor制作的物联网模拟人脸识别门禁 |
本帖最后由 卍卍卍 于 2025-2-18 10:07 编辑 一、项目简介本项目旨在利用行空板K10的人脸识别功能实现一个模拟门禁的效果,具体功能有: 1.本地人脸库的建立及录入。 2.本地人脸识别自动开门及提示。 3.手动关门及提示。 4.基于物联网的本地环境数据上传及手机端显示。 5.手机端的物联网远程手动开门。锁门。 二、软硬件清单 1.硬件:行空板K10、超声波传感器 2.软件:Mind+软件、WxBit版APP Inventor 三、技术原理 ![]() ![]() 四、编程实现 1.行空板K10代码块描述:主线程开始就首先显示摄像头画面,以便使用者能够确认人脸是否进入识别范围,同时切换至人脸识别模式并清空原有的人脸ID。之后声明需要测量的距离、温度、湿度、光线强度、噪音和门锁状态变量并初始化。接着建立人脸库,,设置人脸ID数值并将其命名(这里以设置两个人脸为例,分别将其命名为Tom和Mike)。 ![]() 2.行空板K10代码块描述:首先设置WIFI的用户名和密码并设置WIFI连接循环,如果连接不成功则每隔0.5秒输出一个点,直到连接成功,则输出提示和IP地址。然后设置MQTT连接参数并发起MQTT连接,这里选择了DF的EasyIOT为MQTT服务器,同样设置了MQTT连接循环。接下来启动线程1。 ![]() 3.行空板K10代码块描述:子线程1负责读取温度、湿度等环境数值并赋值给设置的全局变量,然后将变量值发送到指定的MQTT服务器的主题topic,每发送一次就给出相应的提示。设置子线程的目的是为了避免和主线程先后顺次执行,从而影响数据的发送和人脸识别的响应,两条线程可以互不干扰。 ![]() 4.行空板K10代码块描述:主线程开始执行,首先会读取超声波传感器的数值赋值给距离变量,当距离小于15里面并检测到人脸时就开始识别人脸,如果人脸识别完成,那么就和人脸库中的人脸ID进行比对,如果成功必中的话就在K10的屏幕上用红色字体显示“门锁已开,欢迎你 XXX”,同时亮起红灯,并将欢迎词合成语音播放,之后等待1秒,清空屏幕并关灯。 ![]() 5.行空板K10代码块描述:这里设置了当收到订阅的主题topic的消息,即手机APP端发送的开关门数据时的动作,首先串口打印消息用于提示,之后判断收到的消息如果是1的话就开门并亮起红灯,同时合成语音门锁已打开,如果是0的话就反之操作。 ![]() 6.行空板K10代码块描述:这里设置了两个按钮事件,当按下按钮A的时候会学习人脸并将人脸信息录入建立的人脸库,当按下按钮B的时候会模拟手动关门,给出门锁已关闭的的语音和文字提示并亮起黄灯。 ![]() 7.手机APP制作界面,主要组件有:可见——文本框、按钮和水平布局、垂直布局,不可见——MQTT客户端、文本对话框、声音和震动。 ![]() 8.手机APP代码块描述:创建主题topic全局变量。 ![]() 9.手机APP代码块描述:设置了当MQTT连接建立之后订阅相关主题和连接断开后给出提示。 ![]() 10.手机APP代码块描述:设置了当手机MQTT客户端收到消息后将消息内容显示在APP的界面上。 ![]() 11.手机APP代码块描述:设置了按钮事件,当开锁按钮被点击后就通过主题发送数字1,反之发送数字0。 ![]() 12.EasyIOT服务器端设置:设置了温度、湿度、光线强度、噪音、门锁5个主题。 ![]() 五、项目演示 1.人脸录入 ![]() 2.人脸识别开门和手动关门 ![]() ![]() 3.手机APP端数据显示 ![]() ![]() 4.EasyIOT MQTT服务器端数据 ![]() ![]() 5.K10串口输出 ![]() |
© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed