在这里插入图片描述
在这里插入图片描述

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

主要特点
集成摄像头&内置算法,可进行离线图像检测
集成麦克风&内置算法,可进行离线语音识别
集成扬声器&内置算法,可进行离线语音合成
2.8寸彩色屏幕,数据展示更清晰
集成度高,利于教学
接口丰富,兼容软件多,扩展性好

在这里插入图片描述
主打:人工智能模块

在这里插入图片描述

识别二维码相关说明

在这里插入图片描述
辅助:屏幕显示相关积木

在这里插入图片描述
LED控制模块

在这里插入图片描述

知识点:行空板 K10 二维码检测

  1. 核心特性与显示机制
    在行空板 K10 的二维码识别模式下,算法机制与人脸或猫狗检测有所不同。当摄像头识别到二维码时,屏幕画面中并不会出现识别框进行叠加显示,而是直接获取并输出识别结果。

  2. 图形化编程指令
    在 Mind+ 等图形化编程环境中,实现二维码检测主要依赖以下积木指令:
    模式切换:使用 切换为 二维码识别 模式 指令,将机器视觉算法切换至二维码识别状态。
    结果获取:使用 获取二维码识别结果 K10 积木,用于获取当前摄像头识别到的二维码具体数据内容。
    状态判断:使用 检测到 二维码 积木,作为条件判断语句,用来确认当前画面中是否存在有效的二维码。

  3. 基础程序逻辑示例
    一个典型的二维码检测程序逻辑如下:
    主程序开始,显示摄像头画面。
    将模式切换为“二维码识别”。
    进入循环执行:
    判断“如果 检测到 二维码”;
    执行“显示文字”,将文字合并为“二维码结果:”加上“获取二维码识别结果”的值;
    设置显示坐标(如 X:0)、字号(如 16*16)及换行字数等参数;
    执行“显示更新”将结果刷新到 K10 的 2.8寸 LCD 彩屏上。

  4. 扩展应用
    除了基础的二维码识别,行空板 K10 还内置了二维码生成算法。开发者可以在离线状态下快速生成包含文字、简单图形或混合信息的二维码,并结合屏幕进行显示,常用于制作个人智能名片等互动项目。

在这里插入图片描述

二维码检测的几张案例图片

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
【花雕动手做】行空板 K10 系列实验之摄像头识别到二维码后显示在K10屏幕上
实验开源代码

// 引入行空板K10硬件综合驱动库,封装屏幕、画布、摄像头、RGB彩灯、绘图等全部外设操作接口
#include "unihiker_k10.h"
// 引入离线AI视觉识别库,提供NPU初始化、AI模式切换、二维码检测、读取二维码内容接口
#include "AIRecognition.h"

// 实例化行空板主控全局对象,所有屏幕、摄像头、灯光操作均通过k10调用
UNIHIKER_K10  k10;
// 屏幕旋转参数:2=竖直正向显示,二维码识别推荐竖屏摆放,横屏识别成功率大幅下降
uint8_t       screen_dir=2;
// AI视觉专用对象,负责启动NPU、切换识别模式、读取二维码解析数据
AIRecognition ai;

/**
 * @brief 上电初始化函数,开发板通电/复位仅执行1次
 * 功能:硬件初始化、AI加速器初始化、开启摄像头投屏、切换为二维码识别模式
 */
void setup() {
	k10.begin();                // 初始化主板底层IO、供电、通信总线等全部硬件外设
	k10.initScreen(screen_dir); // 根据screen_dir参数初始化LCD显示屏,设置屏幕正向竖直显示
	ai.initAi();                // 启动ESP32-S3内置NPU AI硬件加速器,加载二维码检测推理模型
	k10.initBgCamerImage();     // 初始化摄像头后台画面渲染功能,支持摄像头画面实时投屏到屏幕
	k10.setBgCamerImage(false); // 初始化阶段临时关闭摄像头画面,避免画面干扰初始化流程
	k10.creatCanvas();          // 创建绘图缓存画布,绘图先存入缓存再统一刷新,消除屏幕闪烁
	ai.switchAiMode(ai.NoMode); // 临时切换AI为无识别模式,清空上一轮残留AI算法,防止模式冲突黑屏
	k10.setScreenBackground(0x000000); // 设置屏幕底层默认背景色为纯黑色
	k10.setBgCamerImage(true);  // 开启摄像头实时画面投屏,屏幕持续显示镜头实时取景画面
	ai.switchAiMode(ai.Code);   // 切换AI工作模式为【二维码识别】,启动二维码扫描解析算法
	k10.canvas->updateCanvas(); // 刷新画布缓存,将初始化完成的空白界面输出到LCD屏幕
}

/**
 * @brief 主循环函数,上电后无限循环执行,二维码识别核心逻辑
 * 逻辑:检测到二维码后,屏幕打印标题+二维码解析内容,红灯亮起2秒后熄灭、清空屏幕
 * delay(2000)为阻塞延时,2秒内无法响应其他识别操作
 */
void loop() {
	// 判断摄像头画面中是否识别到有效二维码
	// ai.isDetectContent(AIRecognition::Code) 返回true=检测到二维码,false=无二维码
	if (ai.isDetectContent(AIRecognition::Code)) {
		// 在画布第3行,白色字体打印实验标题
		k10.canvas->canvasText("行空板K10系列实验", 3, 0xFFFFFF);
		// 在画布第5行,浅粉色字体打印功能说明
		k10.canvas->canvasText("AI 识别二维码", 5, 0xFFCCCC);
		// 在画布第7行,浅青色字体打印提示文字
		k10.canvas->canvasText("二维码结果:", 7, 0x99FFFF);
		// 读取二维码解析到的字符串内容,全屏显示、24号中文字体、透明度50、自动换行
		k10.canvas->canvasText(ai.getQrCodeContent(), 0, 220, 0xFF6666, k10.canvas->eCNAndENFont24, 50, true);
		// 将画布所有文字缓存统一刷新输出到实体LCD屏幕
		k10.canvas->updateCanvas();
		// 控制全部RGB彩灯亮起红色,作为识别成功提示
		k10.rgb->write(-1, 0xFF0000);
		// 阻塞延时2000毫秒=2秒,保持文字与红灯2秒
		delay(2000);
		// 2秒结束,关闭所有RGB彩灯
		k10.rgb->write(-1, 0x000000);
		// 清空画布所有文字,恢复仅显示摄像头画面的空白状态
		k10.canvas->canvasClear();
	}
}

代码解读

一、头文件与全局对象

#include "unihiker_k10.h"
#include "AIRecognition.h"

UNIHIKER_K10  k10;
uint8_t       screen_dir=2;
AIRecognition ai;

#include "unihiker_k10.h"

行空板 K10 硬件驱动库,封装屏幕、画布、摄像头、RGB 彩灯、绘图等所有外设操作。

#include "AIRecognition.h"

离线 AI 视觉库,依托 ESP32-S3 内置 NPU,提供人脸、猫狗、二维码三种离线检测算法。

UNIHIKER_K10 k10

全局主控对象,所有屏幕、灯光、摄像头操作都通过 k10 调用。

uint8_t screen_dir=2

屏幕旋转参数,2 代表竖直正向显示;二维码识别必须竖放设备,横屏识别成功率暴跌。

AIRecognition ai

AI 专用对象,负责初始化 AI 加速芯片、切换识别模式、读取二维码解析内容。

二、setup () 上电初始化(仅通电运行 1 次)

void setup() {
	k10.begin();                // 初始化主板底层IO、供电、通信总线全套硬件
	k10.initScreen(screen_dir); // 初始化LCD屏幕,设置屏幕竖直正向显示
	ai.initAi();                // 启动ESP32-S3内置NPU AI硬件加速器,加载二维码识别模型
	k10.initBgCamerImage();     // 初始化摄像头后台投屏功能,实现屏幕实时显示摄像头画面
	k10.setBgCamerImage(false); // 初始化阶段临时关闭摄像头画面,避免画面干扰初始化流程
	k10.creatCanvas();          // 创建绘图缓存画布,绘图先存缓存再统一刷新,消除屏幕闪烁
	ai.switchAiMode(ai.NoMode); // 清空上一轮AI运行模式,防止多算法冲突、设备黑屏
	k10.setScreenBackground(0x000000); // 设置屏幕底层背景为纯黑色
	k10.setBgCamerImage(true);  // 开启摄像头实时画面投屏,屏幕持续显示镜头取景画面
	ai.switchAiMode(ai.Code);   // 切换AI算法为【二维码识别模式】,开启扫码解析
	k10.canvas->updateCanvas(); // 刷新画布,把初始化空白界面输出到LCD
}

执行顺序:硬件初始化 → 屏幕初始化 → AI 加速器启动 → 画布 / 摄像头初始化 → 清空旧 AI 模式 → 开启摄像头画面 → 切换二维码识别算法。

三、loop () 主循环(无限循环,扫码核心逻辑)

void loop() {
	// 判断画面中是否检测到有效二维码
	if (ai.isDetectContent(AIRecognition::Code)) {
		// 简易文字格式:文字, 显示行数, 字体颜色
		k10.canvas->canvasText("行空板K10系列实验", 3, 0xFFFFFF);
		k10.canvas->canvasText("AI 识别二维码", 5, 0xFFCCCC);
		k10.canvas->canvasText("二维码结果:", 7, 0x99FFFF);

		// 完整文字格式:文本,X坐标,Y坐标,颜色,字体,透明度,自动换行
		// ai.getQrCodeContent() 读取二维码内存储的全部文字内容
		k10.canvas->canvasText(ai.getQrCodeContent(), 0, 220, 0xFF6666, k10.canvas->eCNAndENFont24, 50, true);

		k10.canvas->updateCanvas(); // 把所有文字刷新到实体屏幕
		k10.rgb->write(-1, 0xFF0000);// -1代表全部RGB灯,点亮红色提示识别成功
		delay(2000);                // 阻塞延时2秒,保持灯光和文字2秒
		k10.rgb->write(-1, 0x000000);// 2秒后关闭所有彩灯
		k10.canvas->canvasClear();  // 清空画布所有文字,只保留摄像头画面
	}
}
  1. 核心 AI 接口说明
    ai.isDetectContent(AIRecognition::Code)
    布尔判断函数,true= 画面识别到二维码,false= 无二维码;
    ai.getQrCodeContent()
    仅二维码模式可用,返回二维码内部存储的字符串(网址、文字、数字等)。
  2. 两种 canvasText 绘图格式区别
    短文本简易写法:canvasText(内容, 行数, 颜色)
    适合标题、提示短句,自动按行排布;
    长文本完整写法:canvasText(内容,X,Y,颜色,字体,透明度,自动换行)
    本代码用来展示二维码长文本,自定义坐标、大号中文字体,超长内容自动换行。
  3. 灯光与界面逻辑
    识别到二维码 → 屏幕打印标题 + 二维码内容 → RGB 全红灯亮起 → 停留 2 秒 → 灯光熄灭、清空屏幕文字。

四、完整运行流程
板子上电,自动初始化硬件、AI、摄像头,切换为二维码识别;
屏幕实时显示摄像头取景画面,无二维码时无任何文字;
将二维码对准镜头识别成功:
屏幕分多行打印实验标题、扫码结果;
RGB 红色氛围灯亮起;
等待 2 秒后,彩灯熄灭、屏幕文字清空,回到仅显示摄像头画面的状态。

五、使用注意事项
设备必须竖直摆放,横屏会大幅降低二维码识别成功率;
环境光线充足,逆光、反光、昏暗场景容易识别失败;
二维码完整出现在画面内,不能裁切边角、不能严重倾斜;
禁止在循环内频繁切换 AI 模式(二维码 / 人脸 / 猫狗),容易黑屏、设备重启。

Mind+图形编程

在这里插入图片描述
实验场景图与视频记录

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Logo

免费领 150 小时云算力,进群参与显卡、AI PC 幸运抽奖

更多推荐