一、制作背景
校园消防安全是保障师生生命财产安全的重要环节。然而,传统的消防器材检查方式存在效率低、易遗漏等问题。结合《信息科技》贵州科技出版社四年级上册第二单元活动3《探究图形编码》中学生对二维码的认识,以及草料二维码网站、行空板K10的特点,我们设计了一个基于语音识别和屏幕图像显示的学校灭火器和消防栓检查系统,旨在提高校园消防器材检查的效率和准确性,同时培养学生的科技实践能力和安全意识。
二、学生对二维码的认识
在《信息科技》贵州科技出版社四年级上册第二单元活动3《探究图形编码》中,学生初步接触了二维码的概念。通过课堂讲解和实践操作,学生了解到二维码是一种能够存储大量信息的图形编码,可以通过手机或其他设备扫描后获取信息。学生对二维码的用途产生了浓厚的兴趣,例如用于信息查询、商品溯源等。这种对二维码的好奇心和初步认识为本次项目的开展奠定了基础。


三、草料二维码中静态码和活码的运用
草料二维码网站提供了丰富的二维码生成和管理功能。在本项目中,我们了解了两种类型的二维码:静态码和活码。

本次制作我们主要运用了活码
活码是内容可以动态更新的二维码。我们为每个消防器材设备设置了一个活码,用于记录设备的检查状态和维护信息。每次检查后,检查人员可以通过行空板K10将检查结果上传到草料二维码平台,更新活码的内容。这样,后续的检查人员只需扫描活码,即可获取最新的检查记录,包括检查时间、检查人员、设备状态等信息。活码的动态更新功能使得消防器材的管理更加智能化和便捷化。



四、行空板K10的实践与运用
行空板K10是一款专为快速体验和学习人工智能而设计的开发学习板,100%采用国产芯片,知识产权自主可控,符合信息科技课程中编程学习、物联网及人工智能等教学需求。该板集成LCD彩屏、WiFi蓝牙、摄像头、麦克风、扬声器、RGB指示灯、多种传感器及丰富的扩展接口。凭借高度集成的板载资源,教学过程中无需额外连接其他设备,便可轻松实现传感器控制、物联网应用以及人脸识别、语音识别、语音合成等人工智能项目。
在本项目中,我们利用行空板K10的这些特点,开发了这个消防检查系统。


行空板K10的语音识别功能使得检查人员可以通过语音指令完成消防设备的检和查记录。例如,通过图形化程序编写,检查人员可以对着行空板K10说灭火器或消防栓的编号,系统会自动识别语音指令,并在行空板K10的屏幕上显示出该设备的二维码,使得检查人员能够快速查看设备的基本信息、检查状态和历史记录。屏幕图像显示功能不仅方便了检查人员的操作,还提高了检查的准确性和可靠性。这种语音交互方式大大提高了检查的便捷性,尤其适合在复杂的环境中使用。
五、图形化程序编写
为了实现基于语音识别和屏幕图像显示的检查系统,我们采用了图形化编程工具进行程序编写。图形化编程工具具有易于理解和操作的特点,适合学生进行实践学习。
(一)程序设计思路
程序设计的核心是实现语音识别、信息查询、结果显示和数据上传的功能。我们通过图形化编程工具,将这些功能模块化,方便学生理解和操作。程序的主要流程如下:

(二)程序编写



六、作品功能
本项目开发的消防检查系统具有以下功能:
(一)检查状态记录
巡查人员通过设备扫码,填写设备的检查状态,如设备是否完好、是否需要维护等,检查结果会实时更新到草料二维码平台。
(二)设备信息查询
通过语音指令,检查人员可以快速获取设备的基本信息,包括设备编号、安装位置、设备安全状态、巡检登记等。
(三)历史记录查询
通过扫描活码,检查人员可以查看设备的历史检查记录,了解设备的维护情况和使用频率。
(四)数据统计与分析
草料二维码平台提供了数据统计和分析功能,管理人员可以通过平台查看全校消防器材的检查情况,及时发现潜在的安全隐患,为校园消防安全管理提供数据支持。
(五)作品演示
七、制作体会
通过本次项目的开发,我们不仅巩固了对二维码的认识,还学习了图形化编程和开源硬件的使用方法。在实践过程中,体会到了科技在实际生活中的应用价值,提高了对消防安全的重视程度。
八、后期展望
本项目开发的检查系统在实际应用中取得了良好的效果,但仍有一些可以改进的地方。例如,可以进一步优化语音识别的准确率,提高系统的稳定性和可靠性。此外,还可以将系统与学校的消防管理系统进行对接,实现数据的自动同步和共享,提高校园消防安全管理的智能化水平。
总之,通过本次项目,我们不仅提高了校园消防器材检查的效率和准确性,还为学生提供了一个实践学习的平台,激发对科技的兴趣和创造力。未来,我们将继续探索科技在校园安全管理中的应用,为创建平安校园贡献力量。
/*!
* MindPlus
* esp32s3bit
*
*/
#include "asr.h"
#include <DFRobot_Iot.h>
#include "unihiker_k10.h"
#include <mPython_Weather.h>
#include "arduino_image_cache.h"
// 函数声明
void DF_BeiJing();
void DF_MieHuoQiMingLingCi();
void DF_MieHuoQi();
void DF_XiaoFangShuanMingLingCi();
void DF_XiaoFangShuan();
// 创建对象
UNIHIKER_K10 k10;
uint8_t screen_dir=2;
DFRobot_Iot myIot;
mPython_Weather myWeather;
ASR asr;
// 主程序开始
void setup() {
k10.begin();
k10.initScreen(screen_dir);
k10.creatCanvas();
asr.setAsrSpeed(1);
asr.asrInit(CONTINUOUS, CN_MODE, 20000);
while(asr._asrState == 0){delay(100);}
k10.canvas->canvasClear();
myIot.wifiConnect("TP-LINK_52DF", "l15685266866");
while (!myIot.wifiStatus()) {}
myWeather.init("server.mindplus.top", "31982666", "E6MtBcxQ");
asr.speak("你好,欢迎使用消防检查系统。");
DF_BeiJing();
asr.addASRCommand(1+1, "xiao fang jian cha");
asr.addASRCommand(2+1, "mie huo qi");
asr.addASRCommand(3+1, "xiao fang shuan");
DF_MieHuoQiMingLingCi();
DF_XiaoFangShuanMingLingCi();
k10.canvas->updateCanvas();
}
void loop() {
if (asr.isWakeUp()) {
if (asr.isDetectCmdID(1+1)) {
k10.canvas->canvasClear();
k10.canvas->canvasRectangle(20, 30, 200, 50, 0xFF6666, 0x009900, true);
k10.canvas->canvasText("请选择检查内容", 40, 43, 0x0000FF, k10.canvas->eCNAndENFont24, 50, false);
k10.canvas->canvasCircle(120, 190, 100, 0xFFFF00, 0x0000FF, true);
k10.canvas->canvasText("灭火器", 85, 140, 0x00FF00, k10.canvas->eCNAndENFont24, 50, false);
k10.canvas->canvasText("消防栓", 85, 200, 0x00FF00, k10.canvas->eCNAndENFont24, 50, false);
k10.canvas->updateCanvas();
}
if (asr.isDetectCmdID(2+1)) {
k10.canvas->canvasClear();
k10.canvas->canvasCircle(120, 190, 100, 0xFFFF00, 0x0000FF, true);
k10.canvas->canvasRectangle(20, 30, 200, 50, 0xFF6666, 0x009900, true);
k10.canvas->canvasText("请选灭火器序号", 40, 43, 0x00FF00, k10.canvas->eCNAndENFont24, 50, false);
k10.canvas->canvasText("灭1——灭33", 60, 170, 0x00FF00, k10.canvas->eCNAndENFont24, 50, false);
k10.canvas->updateCanvas();
}
if (asr.isDetectCmdID(3+1)) {
k10.canvas->canvasClear();
k10.canvas->canvasCircle(120, 190, 100, 0xFFFF00, 0x0000FF, true);
k10.canvas->canvasRectangle(20, 30, 200, 50, 0xFF6666, 0x009900, true);
k10.canvas->canvasText("请选消防栓序号", 40, 43, 0x00FF00, k10.canvas->eCNAndENFont24, 50, false);
k10.canvas->canvasText("消1——消24", 60, 170, 0x00FF00, k10.canvas->eCNAndENFont24, 50, false);
k10.canvas->updateCanvas();
}
DF_MieHuoQi();
k10.canvas->updateCanvas();
DF_XiaoFangShuan();
k10.canvas->updateCanvas();
}
else {
DF_BeiJing();
}
}
// 自定义函数
void DF_BeiJing() {
k10.setScreenBackground(0xFFFFFF);
k10.canvas->canvasDrawBitmap(20,46,200,203,image_data1);
k10.canvas->canvasRectangle(20, 15, 200, 30, 0x33FF33, 0x00FFFF, true);
k10.canvas->canvasText((String((String("今天天气:") + String(myWeather.getWeather("weather", "101260201")))) + String((String("---最高温度:") + String(myWeather.getWeather("temperaturHigh", "101260201"))))), 40, 25, 0xCC33CC, k10.canvas->eCNAndENFont16, 50, false);
k10.canvas->canvasRectangle(20, 250, 202, 50, 0xFFFF00, 0x006600, true);
k10.canvas->canvasText("消防检查系统", 50, 262, 0xFF0000, k10.canvas->eCNAndENFont24, 50, false);
}
void DF_MieHuoQiMingLingCi() {
asr.addASRCommand(11+1, "mi yi");
asr.addASRCommand(12+1, "mi er");
asr.addASRCommand(13+1, "mi shan");
asr.addASRCommand(14+1, "mi si");
asr.addASRCommand(15+1, "mi wu");
asr.addASRCommand(16+1, "mi liu");
asr.addASRCommand(17+1, "mi qi");
asr.addASRCommand(18+1, "mi ba");
}
void DF_MieHuoQi() {
if (asr.isDetectCmdID(11+1)) {
k10.canvas->canvasClear();
k10.canvas->canvasDrawBitmap(20,20,200,270,image_data2);
asr.speak("请手机扫码查看");
k10.canvas->updateCanvas();
}
if (asr.isDetectCmdID(12+1)) {
k10.canvas->canvasClear();
k10.canvas->canvasDrawBitmap(20,20,200,270,image_data3);
asr.speak("请手机扫码查看");
k10.canvas->updateCanvas();
}
if (asr.isDetectCmdID(13+1)) {
k10.canvas->canvasClear();
k10.canvas->canvasDrawBitmap(20,20,200,270,image_data4);
asr.speak("请手机扫码查看");
k10.canvas->updateCanvas();
}
if (asr.isDetectCmdID(14+1)) {
k10.canvas->canvasClear();
k10.canvas->canvasDrawBitmap(20,20,200,270,image_data5);
asr.speak("请手机扫码查看");
k10.canvas->updateCanvas();
}
if (asr.isDetectCmdID(15+1)) {
k10.canvas->canvasClear();
k10.canvas->canvasDrawBitmap(20,20,200,270,image_data6);
asr.speak("请手机扫码查看");
k10.canvas->updateCanvas();
}
if (asr.isDetectCmdID(16+1)) {
k10.canvas->canvasClear();
k10.canvas->canvasDrawBitmap(20,20,200,270,image_data7);
asr.speak("请手机扫码查看");
k10.canvas->updateCanvas();
}
if (asr.isDetectCmdID(17+1)) {
k10.canvas->canvasClear();
k10.canvas->canvasDrawBitmap(20,20,200,270,image_data8);
asr.speak("请手机扫码查看");
k10.canvas->updateCanvas();
}
if (asr.isDetectCmdID(18+1)) {
k10.canvas->canvasClear();
k10.canvas->canvasDrawBitmap(20,20,200,270,image_data9);
asr.speak("请手机扫码查看");
k10.canvas->updateCanvas();
}
}
void DF_XiaoFangShuanMingLingCi() {
asr.addASRCommand(51+1, "xiao yi");
asr.addASRCommand(52+1, "xiao er");
asr.addASRCommand(53+1, "xiao shan");
asr.addASRCommand(54+1, "xiao si");
asr.addASRCommand(55+1, "xiao wu");
asr.addASRCommand(56+1, "xiao liu");
asr.addASRCommand(57+1, "xiao qi");
asr.addASRCommand(58+1, "xiao ba");
}
void DF_XiaoFangShuan() {
if (asr.isDetectCmdID(51+1)) {
k10.canvas->canvasClear();
k10.canvas->canvasDrawBitmap(20,20,200,270,image_data10);
asr.speak("请手机扫码查看");
k10.canvas->updateCanvas();
}
if (asr.isDetectCmdID(52+1)) {
k10.canvas->canvasClear();
k10.canvas->canvasDrawBitmap(20,20,200,270,image_data11);
asr.speak("请手机扫码查看");
k10.canvas->updateCanvas();
}
if (asr.isDetectCmdID(53+1)) {
k10.canvas->canvasClear();
k10.canvas->canvasDrawBitmap(20,20,200,270,image_data12);
asr.speak("请手机扫码查看");
k10.canvas->updateCanvas();
}
if (asr.isDetectCmdID(54+1)) {
k10.canvas->canvasClear();
k10.canvas->canvasDrawBitmap(20,20,200,270,image_data13);
asr.speak("请手机扫码查看");
k10.canvas->updateCanvas();
}
if (asr.isDetectCmdID(55+1)) {
k10.canvas->canvasClear();
k10.canvas->canvasDrawBitmap(20,20,200,270,image_data14);
asr.speak("请手机扫码查看");
k10.canvas->updateCanvas();
}
if (asr.isDetectCmdID(56+1)) {
k10.canvas->canvasClear();
k10.canvas->canvasDrawBitmap(20,20,200,270,image_data15);
asr.speak("请手机扫码查看");
k10.canvas->updateCanvas();
}
if (asr.isDetectCmdID(57+1)) {
k10.canvas->canvasClear();
k10.canvas->canvasDrawBitmap(20,20,200,270,image_data16);
asr.speak("请手机扫码查看");
k10.canvas->updateCanvas();
}
if (asr.isDetectCmdID(58+1)) {
k10.canvas->canvasClear();
k10.canvas->canvasDrawBitmap(20,20,200,270,image_data17);
asr.speak("请手机扫码查看");
k10.canvas->updateCanvas();
}
}
DeadWalking2025.02.04
很好的创意设计,学习了!
rzyzzxw2025.02.02
很棒啊