一、 项目来源
依据《义务教育信息科技教学指南》八年级“物联网实践与探索”中的内容要求,在第二单元第10课“物物互通有新径”及第三单元第15课“面容钥匙显智能”的基础上,结合物联网MQTT工作原理及人工智能中的人脸识别技术,设计了《基于行空板K10的中小学AI午餐打卡机》,旨在让学生通过简易物联系统的设计与搭建,探索物联网中的数据采集、处理、反馈等基本功能,探究人工智能科技,体验物联网、大数据及人工智能的关系。




二、 项目背景及简介:
以南京市为例,有很多中小学生的午餐都是由学校食堂提供盒饭之类的套餐,到了午餐时间,学生们会在指定地点领取,因为人数较多,难免会出现错领、多领、漏领的问题,一个通过人脸识别技术的人工智能午餐打卡机可以很好的规避这些问题,方便提醒学生和记录学生午餐领用的数据,方便老师进行审核及管理。
在《基于行空板K10的中小学AI午餐打卡机》项目中,学生可以利用行空板K10的摄像头、人脸识别模块识别和记录每个领取午餐的学生,同时通过无线路由器构建网络,通过MQTT通讯协议,将午餐领取的数据传输到SIoT物联网服务器平台上提供给老师。
三、 知识点
1. 学习使用行空板K10和Mind+图形化编程
2. 学习人脸识别技术原理
3. 学习MQTT协议的工作原理
4. 学习通过SIoT物联网平台进行数据管理,包括数据采集、数据处理和数据可视化
四、 项目硬件
1. 硬件清单:
行空板K10
TF存储卡
电脑
手机
无线路由器
USB连接线
2. 硬件简介

行空板K10是一款专为信息科技课程中的编程学习、物联网及AI项目教学需求而开发的学习板。它集摄像头、LCD彩屏、麦克风、扬声器、WiFi蓝牙模块、RGB指示灯及多种传感器和扩展接口于一体,无需额外设备即可实现传感器控制、物联网应用、图像检测、语音识别、语音合成等AI项目。
3. 接口&器件说明

五、 项目原理
《基于行空板K10的中小学AI午餐打卡机》项目中,物联网硬件架构如下图:

在项目实施过程中,通过无线路由器构建局域网,通过电脑构建SIoT物联网服务器,实现服务器终端、数据采集终端与数据显示终端的数据交换。在局域网中,使用行空板K10作为数据采集终端,采集学生人脸数据和午餐领用数据,上传至服务器数据库;使用手机作为数据显示终端,访问服务器数据库,老师可以通过手机随时查看午餐领用的数据。
六、 软件准备
1. 下载行空板K10公测版Mind+压缩包:
· 网页下载(20250103版):点击下载
· 百度网盘下载(20250103版): https://pan.baidu.com/s/15ORx5VbobeZjiQvOxar21g?pwd=d2aa 提取码: d2aa
· 夸克网盘下载(20250103版): https://pan.quark.cn/s/db00cf6ae510
· 将压缩包解压,注意解压过程中关闭杀毒软件,解压后文件夹路径不含中文,解压后文件夹路径不易过长。
· 若编译任何代码都报错,请查看:公测版解压问题
· 打开解压后的文件夹,找到Mind+.exe,双击打开,切换到上传模式。

2. 开始Mind+图形化编程
· 点击“扩展” ,在扩展页面中,点击“主控板”,选择“行空板K10” ,点击“返回” ,完成加载。

· 使用USB线将行空板K10的Type-C口接到电脑USB口,在mind+中点击“连接设备”,找到对应的K10设备并点击,完成设备连接。


3. 下载安装SIoT服务器软件
SIoT是一个针对学校场景的开源免费的MQTT服务器软件,可一键创建本地物联网服务器。SIOT包含一个MQTT服务器和一个数据库以及一个网页界面,MQTT服务器负责数据的转发以及判断是否存储,网页界面可以方便的查看数据或者简单的测试程序。
SIoT V2版本下载链接:
· 腾讯微云下载(推荐):
链接: https://share.weiyun.com/6SFhgLQj
· 百度云盘下载:
链接:https://pan.baidu.com/s/17clVjJXWTZh02FteKy3mcA?pwd=mind
提取码:mind
在电脑上运行SIoT
下载完成后解压,打开文件夹双击start SIoT.bat即可启动新版SIoT,启动之后会弹出小黑窗启动服务器。
*注意运行的是start SIoT.bat而不是main.exe


*注意启动时需要将SIoT添加到允许应用通过防火墙,勾选专用网络和公用网络,否则外部设备可能无法访问。

在电脑浏览器中输入 127.0.0.1:8080 或者电脑主机IP地址:8080(在SIoT的小黑窗里能看到主机IP,如192.168.16.159:8080)即可打开网页端口,登录账号为siot,密码为dfrobot,打开后可以新建Topic或查看消息。


也可以通过手机浏览器访问服务器,请确保手机和电脑、行空板K10都接入同一个WIFI,在手机浏览器中输入电脑主机IP地址:8080(如192.168.16.159:8080)即可打开网页端口,登录账号、密码与上述相同。

在Mind+中点击“扩展”,在扩展页面中,点击“网络服务”,选择“Wi-Fi”和“MQTT”,点击“返回”,完成网络服务程序模块加载。

七、 程序编写与调试
1. 程序流程图

2. 程序编写
STEP1:编写初始化程序
初始化程序主要作用是设置好WIFI和物联网服务器的连接。

MQTT初始化参数设置如下:

SIOT服务器连接成功的关键就是,电脑、星空板K10和手机务必连在同一个WIFI下,主题设置要注意在前面加上“siot/”。
STEP2:编写人脸学习程序,建立班级学生人脸数据库
建立一个变量“学习人脸”来表示是否要进行人脸学习,初始值为 0。当值为 1 时,表示进行人脸学习,当值为 0 且检测到人脸时,进行人脸识别,流程图如下:

为了给“学习人脸”变量赋值,使用事件回调函数,当按键 A 按下时赋值变量“学习人脸”为 1,进行人脸学习,同时亮起黄灯。等待 3秒之后,学习完成,将其值变为 0,关闭灯光,并语音提示“已完成人脸学习”。行空板 K10 已经封装好了“学习人脸”和“语音合成”指令的积木模块,非常方便,可以直接使用。


人脸数据库录入完成后,就可以进入到人脸检测步骤。
STEP3:编写人脸识别程序
人脸识别程序中主要有两个条件判断,第一个是判断识别到的人脸是不是本班级学生:如果不是本班级学生,则用合成语音提醒学生到自己班级领取午餐;如果是本班级学生,则进入第二个条件判断,也就是该学生有没有领取过午餐:如果已经领取过午餐,则用合成语音提醒学生不要重复领取;如果未领取午餐,则提醒学生领取午餐,并将学生的学号发送到SIOT服务器的“已领用午餐学生ID”主题列表中,方便老师通过手机访问SIOT服务器进行查看,同时给学生拍照储存在行空板K10的TF卡中,以备查询。
这里将识别人脸程序封装成一个函数:

通过“学习人脸”指令模块录入学生人脸数据库时,学习成功后会自动给每个人脸分配一个ID号,ID号从1开始,最多可学习48个人脸。在实际操作中,可以按照学号顺序录入学生人脸数据,这样一来,人脸数据的ID号就和学生的学号一一对应起来了。如果是未学习过的人脸,识别后的人脸ID号为“-1”。因此,可以设置变量“学生ID”为“获取识别到的人脸ID”,通过变量“学生ID”的数值进行第一个条件判断。如果“学生ID”的数值等于-1,则判断该学生不是本班级学生,如果“学生ID”的数值大于等于1,则该学生是本班级学生。
设置一个列表变量“已领用午餐学生ID”,每次学生领取完午餐之后,把对应的“学生ID”存入该列表变量,这样通过在列表变量中查询是否包含对应的“学生ID”,就可以进行第二个条件判断了。如果列表变量“已领用午餐学生ID”中包含检测到的“学生ID”,则该学生已经领用过午餐,如果列表变量“已领用午餐学生ID”中不包含检测到的“学生ID”,则该学生还没有领用过午餐。
判断之后,通过对应的合成语音对学生分别进行不同的提醒,这里需要注意的是,K10语音合成模块合成的语速较快,如果语句很长,可能听不清楚,可以分成两段话进行合成。
其他的文字和灯光提醒,具体见程序截图,不再一一赘述。拍照和灯光函数如下:


AI午餐打卡机的完整程序如下:
八、 程序运行效果
点击“上传到设备”,把完成的程序上传至行空板K10,便可以运行了。WIFI和SIOT服务器连接成功后,首先将摄像头对准人脸,按下A键,进行人脸录入,全部的人脸录入完成后,就可以进行人脸识别和领取午餐打卡了。
程序模拟效果见下方视频
领取午餐后,老师可以通过手机访问SIOT服务器,打开主题“已领用午餐学生ID”查看午餐领用情况,示例效果如下:

九、 改进思路
如果做一个专门存放学生午餐的餐柜,通过舵机、继电器和电磁门锁等执行部件,还可以实现用行空板K10控制餐柜柜门的关闭与打开,还可以通过温度传感器监测餐柜内部温度,控制餐柜内部的加热器给午餐保温,把AI午餐打卡机升级为AI午餐领用机。
数据显示终端目前是通过手机浏览器访问SIOT服务器页面查看数据,后续可以通过微信小程序或者手机APP接入SIOT服务器进行数据查看和终端执行部件的控制。
十、 项目体会
第一次参加信息科技教学活动案例的征集活动,感谢活动主办方DFROBOT的赞助和支持,自己也是一边摸索一边学习。这个项目虽然简单,但也让我感受到行空板K10真是一块非常适合学生进行人工智能应用探索和编程的好工具,集成的各种AI指令模块、显示器、摄像头、传感器等等都非常实用,搭配上各种的传感器和执行部件,可以非常方便的搭建各种物联网和人工智能应用方案,解决生活中遇到的很多实际问题,培养学生的编程思维、动手能力和解决实际问题的能力。
十一、 附件
评论