基于行空板K10的小学简易智能门锁实验方案

2025-01-15366
AI 快速预览详细 收起
基于行空板K10的小学简易智能门锁实验方案,旨在让学生了解智能门锁的工作原理,并通过实际操作掌握编程与硬件操作技能。实验中使用了行空板K10和9g小舵机,通过人脸识别技术实现门锁的自动开启。学生将学习如何连接硬件、编写人脸识别程序,并进行多次测试与优化。该实验不仅提升了学生的编程能力,还培养了他们的团队合作精神。

基于行空板K10的小学简易智能门锁实验方案

IMG_20250214_111147.jpg

一、实验背景:

内容模块.jpg

  在科技日新月异的当下,智能家居设备越发普及,其中智能门锁凭借其便捷性与安全性备受青睐。依据义务教育信息科技课程标准,开展此次实验,目的是让学生洞悉智能门锁基于人脸识别技术的工作原理,熟练掌握行空板 K10 的操作及相关编程技能,有效培养学生的跨学科思维与实践操作能力。本内容正好符合六年级信息科技“过程与控制”内容模块,结合跨学科主题的“小型开关系统”,根据人工智能逻辑主线,进行项目设计。项目参考了官方入门教程【行空板K10基础入门教程】第8课:K10人脸识别-AI校园门卫:https://mc.dfrobot.com.cn/thread-323598-1-1.html?fromuid=864588,根据教学实际情况适当进行了二次开发。

 

二、实验目标:

  1. 1、知识与技能
  • (1)助力学生深入理解基于人脸识别的智能门锁系统构成与运行机制。
  • (2)使学生熟练掌握行空板 K10 的操作要领,学会运用其内置摄像头与编程环境,实现人脸识别程序的编写。
  • (3)让学生掌握 9g 小舵机的工作原理与控制方法。
  1. 2、过程与方法
  • (1)通过亲自动手实验,切实提升学生的实践操作能力与解决实际问题的能力。
  • (2)借助小组协作模式,引导学生相互交流、协同合作,强化团队协作精神。
  1. 3、情感态度与价值观
  • (1)深度激发学生对信息科技领域的浓厚兴趣,培育学生的创新思维与探索精神。
  • (2)让学生切实体会到科技在日常生活中的广泛应用,增强学生对科技改变生活的切身体会。
  •  

三、实验准备:

  1. 1、硬件
  • (1)行空板 K10 若干(根据学生分组情况确定数量)
  • (2)9g 小舵机若干
  • (3)舵机支架
  • (4)电源适配器
  • (5)导线若干
  1. 2、软件
  • (1)行空板配套编程软件
  • (2)电脑(安装好编程软件,确保网络连接正常)
  •  

四、实验原理:

  行空板 K10 利用内置摄像头采集人脸图像信息,通过特定的算法对采集到的图像进行处理与分析,提取人脸特征,并与预先录入的人脸特征模板进行比对。若比对结果一致,行空板 K10 则发送控制信号给 9g 小舵机,小舵机通过转动模拟门锁打开的动作;若比对不通过,则发出提示信息。

 

五、实验步骤:

  1. 1、组建实验小组

  将学生分成若干小组,每组 4 - 5 人,明确小组内成员分工,如硬件连接负责人、编程负责人、记录员等。

  1. 2、认识硬件
  •   教师向学生详细介绍行空板 K10 的各个接口、功能按键、内置摄像头的位置与使用方法,以及 9g 小舵机的基本结构、工作原理和舵机支架的安装方式。
  • 学生在小组内仔细观察、讨论行空板 K10 和 9g 小舵机,熟悉硬件的外观、特点及各部分功能。
  1. 3、硬件连接
  •   参照行空板 K10 与 9g 小舵机的连接说明书,小组内成员合作完成硬件连接。将 9g 小舵机安装在舵机支架上,并通过导线连接到行空板 K10 的相应接口,确保连接牢固。
  • 连接完成后,检查线路是否正确,确认无误后接通电源,观察行空板 K10 和 9g 小舵机是否正常启动。
  1. 4、编程实现
  •   打开行空板配套编程软件,教师通过投屏展示编程界面,详细讲解人脸识别功能实现所需的编程指令和逻辑思路,绘制流程图分析逻辑顺序。
  •   学生根据教师的指导,在小组内共同编写基于人脸识别的智能门锁控制程序。程序主要实现以下功能:调用行空板 K10 的内置摄像头实时采集人脸图像,对采集到的图像进行人脸识别处理,将识别结果与预先录入的人脸信息进行对比,如果对比成功则控制 9g 小舵机转动一定角度,模拟门锁打开动作,同时语音提示 “欢迎回家”,亮绿灯;如果对比失败,则语音提示 “抱歉,无权限”,亮红灯。
  •   编写完成后,小组内进行程序调试,检查是否存在语法错误和逻辑错误。如有问题,及时修改程序。
  • screenshots-智能门锁1.0.mp-1739267355167.png

 

  1. 5、测试与优化
  •   各小组对编写好的程序进行测试,将预先录入人脸信息的人员面部对准行空板 K10 的摄像头,观察 9g 小舵机是否正常转动,以及屏幕显示和提示音是否正确。多次测试不同人员的人脸识别情况,检查程序的稳定性和准确性。
  •   根据测试结果,对程序进行优化和改进。例如,可以增加语音口令+人脸识别双重验证、添加人脸信息删除与更新功能等,提升智能门锁系统的实用性和安全性。同时,为了增强效果,使用了2个舵机,其中一个控制门锁,另一个控制门的自动开合。
  • K10智能门锁案例.png
  • screenshots-智能门1.1.mp-1739503640780.png
  •  
  1. 6、实验总结
  •   每个小组推选一名代表,向全班汇报实验过程、结果和遇到的问题以及解决方法。
  •   教师对各小组的实验情况进行点评,总结实验中涉及的信息科技知识和技能,强调实验过程中的注意事项和团队合作的重要性。
  •  

六、实验拓展

  1. (1)尝试增加个性化语音播报功能,当不同人脸识别时,进行相应的语音提示。
  2. (2)探索如何将多个行空板 K10 连接,实现多个区域的智能门锁联动控制。
  3. (3)研究如何进一步优化人脸识别算法,提高识别速度和准确率。
  4. (4)对比生活中正在销售的智能门锁,查找相关资料,思考它们是如何解决安全性问题的?
  5. (5)研究门的铰链设计,优化结构,使舵机模拟更好的效果,让门开合角度更符合实际需要。例如,将舵机转轴与门的转轴重合。
  6.  

七、注意事项

  1. (1)实验过程中,提醒学生注意用电安全,不要随意触摸电源和电路接口。
  2. (2)指导学生正确操作行空板 K10 和编程软件,避免因误操作导致设备损坏或程序出错。
  3. (3)强调团队合作的重要性,鼓励学生在小组内积极交流、互相协作,共同完成实验任务。
  4. (4)在使用 9g 小舵机时,提醒学生不要过度转动舵机,以免造成舵机损坏。

 

IMG_20250214_111031.jpg

代码
/*!
 * MindPlus
 * esp32s3bit
 *
 */
#include "asr.h"
#include "unihiker_k10.h"
#include "AIRecognition.h"
#include <DFRobot_Servo.h>

// 动态变量
volatile float mind_n_RenLianID, mind_n_XueXiRenLian, mind_n_YongHuShu;
// 函数声明
void DF_KaiMen();
void DF_GuanMen();
void DF_ShiBieRenLian();
void DF_ShuaXinXianShi();
void onButtonAPressed();
void onButtonBPressed();
// 创建对象
UNIHIKER_K10  k10;
uint8_t       screen_dir=2;
ASR           asr;
AIRecognition ai;
Servo         servo_P1;
Servo         servo_P0;


// 主程序开始
void setup() {
	k10.begin();
	k10.initScreen(screen_dir);
	ai.initAi();
	k10.initBgCamerImage();
	k10.setBgCamerImage(false);
	k10.creatCanvas();
	asr.asrInit(CONTINUOUS, CN_MODE, 12000);
	while(asr._asrState == 0){delay(100);}
	asr.setAsrSpeed(3);
	ai.switchAiMode(ai.NoMode);
	servo_P1.attach(P1);
	servo_P0.attach(P0);
	k10.buttonA->setPressedCallback(onButtonAPressed);
	k10.buttonB->setPressedCallback(onButtonBPressed);
	k10.canvas->canvasClear();
	mind_n_RenLianID = -1;
	mind_n_XueXiRenLian = 0;
	mind_n_YongHuShu = 0;
	asr.addASRCommand(0+1, "zhi ma kai men");
	k10.canvas->canvasText("简易智能门锁", 50, 20, 0x0000FF, k10.canvas->eCNAndENFont24, 50, true);
	ai.switchAiMode(ai.Face);
	DF_GuanMen();
}
void loop() {
	DF_ShuaXinXianShi();
	if ((mind_n_XueXiRenLian==1)) {
		k10.setBgCamerImage(true);
		ai.sendFaceCmd(ENROLL);
	}
	if ((ai.isDetectContent(AIRecognition::Face) && (asr.isDetectCmdID(0+1) && (mind_n_XueXiRenLian==0)))) {
		DF_ShiBieRenLian();
	}
}


// 自定义函数
void DF_KaiMen() {
	servo_P1.angle(abs(0));
	delay(500);
	servo_P0.angle(abs(0));
	k10.rgb->write(-1, 0x00FF00);
}
void DF_GuanMen() {
	servo_P0.angle(abs(180));
	delay(500);
	servo_P1.angle(abs(90));
	k10.rgb->write(-1, 0x000000);
}
void DF_ShiBieRenLian() {
	ai.sendFaceCmd(RECOGNIZE);
	while (!ai.isRecognized()) {}
	mind_n_RenLianID = ai.getRecognitionID();
	DF_ShuaXinXianShi();
	if ((mind_n_RenLianID==-1)) {
		asr.speak("抱歉,无权限进入");
		k10.rgb->write(-1, 0xFF0000);
		delay(2000);
	}
	else {
		if ((mind_n_RenLianID>=1)) {
			asr.speak("欢迎回家");
			DF_KaiMen();
			delay(5000);
			DF_GuanMen();
		}
	}
	k10.rgb->write(-1, 0x000000);
}
void DF_ShuaXinXianShi() {
	k10.canvas->canvasText((String("人脸ID:") + String(mind_n_RenLianID)), 0, 50, 0xFF6600, k10.canvas->eCNAndENFont16, 50, true);
	k10.canvas->canvasText((String("用户数:") + String(mind_n_YongHuShu)), 0, 70, 0x000000, k10.canvas->eCNAndENFont16, 50, true);
	if (asr.isWakeUp()) {
		k10.canvas->canvasText("识别中,请说口令:", 0, 110, 0x009900, k10.canvas->eCNAndENFont16, 50, true);
	}
	else {
		k10.canvas->canvasText("休眠中……", 0, 110, 0xCC33CC, k10.canvas->eCNAndENFont16, 50, true);
	}
	k10.canvas->updateCanvas();
}

// 事件回调函数
void onButtonAPressed() {
	k10.rgb->write(-1, 0xFFFF00);
	mind_n_XueXiRenLian = 1;
	delay(2000);
	asr.speak("开始人脸学习,请对准摄像头");
	while (!ai.isDetectContent(AIRecognition::Face)) {}
	mind_n_XueXiRenLian = 0;
	mind_n_YongHuShu += 1;
	DF_ShuaXinXianShi();
	asr.speak("完成人脸学习");
	k10.rgb->write(-1, 0x000000);
}
void onButtonBPressed() {
	k10.rgb->write(-1, 0x0000FF);
	ai.sendFaceCmd(DELETEALL);
	k10.setBgCamerImage(false);
	mind_n_RenLianID = -1;
	mind_n_YongHuShu = 0;
	DF_ShuaXinXianShi();
	delay(1000);
	k10.rgb->write(-1, 0x000000);
}

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(0)
- 没有更多了 -