回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

【创意智造组】Mind+ V2 模型训练——校园科技教室智能门禁人脸识别系统 简单

头像 信息技术 2026.04.11 56 0

一、项目基本信息

  • 核心技术:Mind+ V2 图像分类模型训练、人脸识别、物联网 MQTT、图形化编程

二、项目背景与创作目的

1. 设计背景

智慧校园建设持续推进,科技教室作为学校创新实践核心场所,存放 3D 打印机、激光切割机、机器人套件等贵重设备,亟需智能化管理方案。本项目将AI 图像识别、物联网、开源硬件深度融合,贴合校园真实管理需求,是人工智能技术在教育场景的落地实践。

2. 创作目的

解决传统科技教室管理三大痛点:

  1. 权限管理粗放,无法精准区分师生权限;
  2. 安全监控不足,无进出记录与实时状态;
  3. 管理效率低,依赖教师现场开关门。

通过人脸识别 + 智能门禁实现授权人员无感通行、未授权人员自动阻拦,搭配物联网远程管理,提升教室安全性与使用效率,保障教学设备安全运行。

三、作品简介与设计思路

1. 作品简介

图片1.png

本项目基于Mind+ V2 模型训练完成人脸识别模型训练,搭配行空板、USB 摄像头、舵机实现智能门禁控制。系统可自动识别教师(teacher)、学生(student),授权人员自动开门,未授权人员提示离开;同时通过物联网平台实现远程控制、进出记录上传、声光提醒,完整实现 “AI 识别 + 硬件控制 + 物联网管理” 闭环。

作品功能演示视频:https://www.bilibili.com/video/BV1epQjBAEut/

豆包 (4).png

2. 整体设计

  • 硬件组成:行空板(主控)、USB 摄像头(图像采集)、舵机(门锁控制)、蜂鸣器(声光提醒)
  • 结构设计:激光切割木板制作外壳,预留舵机卡槽与设备安装位,布线规整、外观整洁
  • 流程设计:数据采集→模型训练→实时识别→门禁控制→物联网上传→远程管理
  • 四、硬件器材清单
  • table { border-collapse: collapse; width: 100%; } th, td { border: 1px solid #ccc; padding: 8px; text-align: left; }
器材名称数量功能说明
行空板 UNIHIKER1 块项目主控,AI 推理、屏幕显示、逻辑控制
行空板扩展板1 块扩展接口、方便接线、保护主板
USB 摄像头1 个采集人脸图像,用于 AI 图像分类识别
9g 舵机1 个控制门锁开关,实现自动开门 / 关门
LED 灯1 个识别成功 / 失败状态灯光提示
蜂鸣器1 个通行提醒、非法闯入声音报警
声音传感器1 个环境噪音监测、异常声音检测
TypeC 二合一线1 条行空板供电、程序上传
激光切割木板 / 结构件1 套门禁外壳、设备固定、结构安装
杜邦线 / 连接线若干舵机、LED、蜂鸣器、声音传感器接线

五、模型训练过程(Mind+ V2 核心步骤)

1. 数据采集

  • 采集对象:学生、老师人脸图像各 100 张
  • 采集工具:Mind+ V2 模型训练→图像分类
  • 分类标签:student(学生)、teacher(教师)
  • 说明:在本项目中,学生与教师由2名不同学生来模拟

2. 模型训练

  1. 打开 Mind+ V2,进入模型训练→图像分类;
  2. 采集的师生人脸数据集;
  3. 设置训练参数,启动模型训练;
  4. 训练完成,导出模型文件至指定路径。

3. 模型校验

通过摄像头实时预览,验证识别准确率,确保 student/teacher 分类准确、响应迅速。

训练.png

说明:学生人脸信息已打码

六、功能实现与技术创新

1. 核心功能

  1. 人脸识别门禁:实时识别师生身份,授权自动开门,未授权显示 “please leave”;
  2. 自动开关门:识别通过后,舵机旋转开门,延时自动复位关门;
  3. 声光提醒:授权通行、非法闯入对应不同声音与灯光提示;
  4. 物联网远程控制:支持远程开门、静音模式,实时上传识别记录;
  5. 状态可视化:行空板屏幕实时显示摄像头画面、识别结果与置信度。

2. 技术实现

  • 编程环境:Mind+ V2 Python 模式
  • 扩展库:模型训练推理库、WiFi 库、MQTT 库、舵机库
  • 物联网平台:Easy IoT
  • 通信方式:MQTT 协议
  • 逻辑流程:WiFi 联网→MQTT 连接→摄像头初始化→加载模型→实时识别→门禁控制→数据上传

screenshot-5程序文件-图像分类-1776239230550.png

图形化程序截图

3. 创新点

  1. AI + 校园场景深度结合:精准解决科技教室管理痛点,实用性强;
  2. 完整软硬件闭环:从模型训练到硬件控制、物联网远程管理全流程实现;
  3. 结构与工艺优化:激光切割一体化外壳,安装稳固、布线美观;
  4. 双权限管理:区分师生权限,适配校园管理规则。

七、实用价值

1. 校园管理价值

实现科技教室从 “人防” 到 “技防” 升级,保障贵重设备安全;通行数据可用于教室使用率分析、课程优化,为智慧校园提供数据支撑。

2. 教育育人价值

项目覆盖编程、AI、物联网多学科知识,提升学生计算思维、创新实践能力;成果可作为教学案例,激发全校学生学习人工智能的兴趣。

八、项目文件说明

  1. 程序文件:校园智能门禁系统
  2. 演示视频:智能门禁系统运行演示视频

附件

代码
#  -*- coding: UTF-8 -*-
#  MindPlus V2
#  python-block
import siot
import time
from pinpong.board import Servo
from pinpong.board import Board
from model_mp_io import IO_Windows
from model_mp_io import ImageReader
from pinpong.board import Board,Pin
from pinpong.extension.unihiker import *
from model_mp_core import ImageClassificationInference

# 变量
RenLian = 0
my_variable = []
ShiBieCiShu = 0
SuoYin = 0
ZhiXinDu = 0

# 事件回调函数
def on_message_callback(client, userdata, msg):
    if (msg.topic=="d8mZvwZvR"):
        # 订阅到物联网
        print("dingyueok")
        if (msg.payload.decode()=="open"):
            # 订阅到远程开门open指令
            print("open")
            KaiMenHouGuanMen()
        if (msg.payload.decode()=="quite"):
            # 订阅到quite指令
            print("quite")
            buzzer.play(buzzer.WEDDING,buzzer.Once)


# 自定义函数
def LianJieWuLianWang():
    siot.getsubscribe(topic="d8mZvwZvR")
    siot.publish(topic="d8mZvwZvR", data="连接成功")
def KaiMenHouGuanMen():
    servo1.write_angle(90)
    time.sleep(3)
    servo1.write_angle(180)
def JiaoShiZaoShengJianCeTiXing():
    if (p_p4_analog.read_analog()>250):
        siot.publish(topic="d8mZvwZvR", data="noise")
        p_p23_out.write_digital(1)
        p_p24_out.write_digital(1)
        p_p21_out.write_digital(0)
    else:
        p_p21_out.write_digital(1)
        p_p24_out.write_digital(0)
        p_p23_out.write_digital(0)


# 主程序开始
Board().begin()
siot.init(client_id="01683703607577458",server="iot.dfrobot.com.cn",port=1883,user="858kvwWvR",password="U58zDwZDgz")
windows_name = IO_Windows()
siot.set_callback(on_message_callback)
siot.connect()
siot.loop()
p_p4_analog=Pin(Pin.P4, Pin.ANALOG)
p_p23_out=Pin(Pin.P23, Pin.OUT)
p_p24_out=Pin(Pin.P24, Pin.OUT)
p_p21_out=Pin(Pin.P21, Pin.OUT)
my_variable = RenLian
LianJieWuLianWang()
image_reader = ImageReader(source=0)
image_reader.set_resolution(640, 480)
windows_name.open_window("windows1")
windows_name.set_size("windows1", 240, 320)
inference = ImageClassificationInference(get_asset_path_by_name("best.onnx"), get_asset_path_by_name("model.yaml"))
ShiBieCiShu = 0
RenLian = []
my_variable.append((str("student")))
my_variable.append((str("teacher")))
print(RenLian)
servo1 = Servo(Pin((Pin.P10)))
servo1.write_angle(180)

while True:
    SuoYin = result_output['result'][0]["class_name"]
    ZhiXinDu = result_output['result'][0]["score"]
    data = image_reader.read_frame()
    windows_name.show(data, "windows1")
    windows_name.wait_key()
    result_output = inference.inference(data)
    if (((my_variable[SuoYin])=="student") or ((my_variable[SuoYin])=="teacher")):
        if (ShiBieCiShu==3):
            KaiMenHouGuanMen()
            siot.publish(topic="d8mZvwZvR", data=(my_variable[SuoYin]))
            ShiBieCiShu = 0
        else:
            ShiBieCiShu = (ShiBieCiShu + 1)
    else:
        ShiBieCiShu = 0
    JiaoShiZaoShengJianCeTiXing()

评论

user-avatar