17浏览
查看: 17|回复: 7

[K10教程] 【花雕动手做】K10 系列实验之屏幕上获取移动检测结果

[复制链接]
【花雕动手做】K10 系列实验之屏幕上获取移动检测结果图2

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

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

【花雕动手做】K10 系列实验之屏幕上获取移动检测结果图1

驴友花雕  高级技神
 楼主|

发表于 2 小时前

【花雕动手做】K10系列实验之屏幕上获取移动检测结果

主打:人工智能模块

【花雕动手做】K10 系列实验之屏幕上获取移动检测结果图1

移动检测相关说明

【花雕动手做】K10 系列实验之屏幕上获取移动检测结果图2

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2 小时前

【花雕动手做】K10系列实验之屏幕上获取移动检测结果

辅助:屏幕显示相关积木

【花雕动手做】K10 系列实验之屏幕上获取移动检测结果图1

LED控制模块

【花雕动手做】K10 系列实验之屏幕上获取移动检测结果图2


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2 小时前

【花雕动手做】K10系列实验之屏幕上获取移动检测结果

知识点:行空板 K10 移动侦测 AI 检测 + 屏幕显示综合介绍
一、整体方案原理
1. 硬件基础
行空板 K10 搭载ESP32-S3 主控,内置硬件 NPU 神经网络加速器,搭配前置 200 万像素摄像头、2.8 寸彩色 LCD 屏幕、RGB 氛围灯,无需外接模块、无需联网,本地离线实时画面动态检测。
整套功能分为三部分:摄像头采集画面 → NPU 移动 AI 算法运算 → 屏幕文字 + RGB 灯光同步展示检测结果。
2. 移动检测算法逻辑
算法对比前后两帧摄像头画面像素差异,识别画面内物体移动、光影变化;
内置灵敏度阈值可调,过滤微小光影抖动,只识别有效物体运动,区别于人脸 / 猫狗 / 二维码目标识别:
人脸 / 猫狗:识别特定生物面部;
二维码:识别特定图形码;
移动检测 (Move):不区分物体,只要画面产生位移变化就触发。

二、功能清单(屏幕 + 灯光联动)
摄像头实时画面投屏
屏幕底层持续显示摄像头取景画面,检测文字叠加在画面上层,直观看到现场画面。
状态双区分显示
画面静止无移动:清空屏幕文字,RGB 红灯常亮;
检测到物体移动:屏幕打印提示文字,RGB 绿灯同步亮起,视觉双重提醒。
自定义检测灵敏度
可设置阈值 0~100,数值越大越难触发,解决窗外树影、灯光频闪误触发问题。
RGB 亮度可调
限制灯光亮度,避免强光刺眼,适配室内长时间使用。
无阻塞实时检测
代码无延时卡死,画面持续刷新,物体一移动立刻响应,无延迟。

三、完整运行流程
上电初始化:硬件、屏幕、NPU、摄像头依次启动,切换移动检测 AI 模式,设置灯光亮度与移动灵敏度;
待机静止状态:屏幕仅显示摄像头画面,无任何文字,RGB 红灯常亮;
镜头前出现移动物体(手、宠物、行人):
AI 瞬间识别画面像素变化;
屏幕上层叠加白色、浅粉色提示文字;
RGB 灯同步切换为绿色;
物体完全静止不动:
画布文字立刻清空;
RGB 灯切回红色待机,等待下一次移动触发。

四、适用项目场景
室内简易人体感应报警器:有人经过自动亮灯提示;
宠物活动监测:宠物跑动触发灯光提醒;
仓库简易异动监控:画面出现物体移动屏幕报警;
楼道人体感应提示装置;
教学 AI 视觉实验:学习帧差法动态检测、屏幕交互外设联动。

五、使用优势
纯离线本地运算,不用 WiFi、不消耗流量,无网络延迟;
屏幕实时可视化,肉眼同步看到监控画面与检测状态;
红绿灯光状态区分清晰,远距离也能判断是否检测到移动;
灵敏度可调,适配卧室、窗边、仓库等不同光线环境;
代码无阻塞,实时响应,不会出现扫码类项目 2 秒卡死的问题。

【花雕动手做】K10 系列实验之屏幕上获取移动检测结果图1

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2 小时前

【花雕动手做】K10系列实验之屏幕上获取移动检测结果

【花雕动手做】行空板 K10 系列实验之摄像头识别移动检测后显示在K10屏幕上
实验开源代码

  1. // 引入行空板K10硬件驱动库,封装屏幕、画布、RGB彩灯、摄像头、屏幕渲染等全部外设接口
  2. #include "unihiker_k10.h"
  3. // 引入离线AI视觉识别库,提供NPU初始化、多种AI模式切换、移动检测功能
  4. #include "AIRecognition.h"
  5. // 实例化行空板主控全局对象,所有屏幕、灯光、摄像头操作统一通过k10调用
  6. UNIHIKER_K10  k10;
  7. // 屏幕旋转参数:2=设备竖直正向显示,移动检测推荐竖屏摆放,识别更稳定
  8. uint8_t       screen_dir=2;
  9. // AI视觉专用对象,负责启动NPU、切换AI算法、读取移动检测状态、调节灵敏度
  10. AIRecognition ai;
  11. /**
  12. * @brief 上电初始化函数,开发板通电/复位仅执行一次
  13. * 功能:硬件初始化、AI加速器启动、开启摄像头画面、切换移动检测模式、设置灯光亮度、调节移动检测灵敏度
  14. */
  15. void setup() {
  16.         k10.begin();                // 初始化主板底层IO、供电、通信总线等全套硬件外设
  17.         k10.initScreen(screen_dir); // 根据screen_dir参数初始化LCD显示屏,设置屏幕正向竖直显示
  18.         ai.initAi();                // 启动ESP32-S3内置NPU AI硬件加速器,加载移动目标检测模型
  19.         k10.initBgCamerImage();     // 初始化摄像头后台画面渲染功能,支持摄像头画面实时投屏到屏幕
  20.         k10.setBgCamerImage(false); // 初始化阶段临时关闭摄像头画面,避免画面干扰初始化流程
  21.         k10.creatCanvas();          // 创建绘图缓存画布,绘图先存入缓存再统一刷新,消除屏幕闪烁
  22.         ai.switchAiMode(ai.NoMode); // 临时切换AI为无识别模式,清空上一轮残留AI算法,防止模式冲突黑屏
  23.         k10.setScreenBackground(0x000000); // 设置屏幕底层默认背景色为纯黑色
  24.         k10.setBgCamerImage(true);  // 开启摄像头实时画面投屏,屏幕持续显示镜头实时取景画面
  25.         ai.switchAiMode(ai.Move);   // 切换AI工作模式为【移动物体检测】,开启画面动态侦测算法
  26.         k10.rgb->brightness(round(3)); // 设置RGB彩灯全局亮度,有效范围0~10,3为柔和低亮度不刺眼
  27.         k10.canvas->updateCanvas(); // 刷新画布缓存,将初始化空白界面输出到LCD屏幕
  28.         ai.setMotinoThreshold(50);  // 设置移动检测灵敏度阈值,数值越大越难触发检测,50为中等灵敏度
  29. }
  30. /**
  31. * @brief 主循环函数,上电后无限循环执行,移动侦测核心逻辑
  32. * 逻辑:画面检测到移动物体 → 屏幕打印提示文字、RGB绿灯亮起;无移动 → RGB红灯常亮,清空文字
  33. */
  34. void loop() {
  35.         // 判断摄像头画面中是否检测到移动物体
  36.         // ai.isDetectContent(AIRecognition::Move) 返回true=画面存在移动目标,false=画面静止无变化
  37.         if (ai.isDetectContent(AIRecognition::Move)) {
  38.                 // 在画布第4行,白色字体打印实验标题
  39.                 k10.canvas->canvasText("行空板K10系列实验", 4, 0xFFFFFF);
  40.                 // 在画布第6行,浅粉色字体打印移动检测提示
  41.                 k10.canvas->canvasText("检测到移动", 6, 0xFFCCCC);
  42.                 k10.canvas->updateCanvas(); // 将画布文字缓存刷新输出到实体LCD屏幕
  43.                 k10.rgb->write(-1, 0x00FF00);// -1代表控制全部RGB灯珠,0x00FF00纯绿色,检测到移动亮绿灯
  44.         }
  45.         else {
  46.                 // 画面无移动物体,清空画布文字,灯光切换为红色
  47.                 k10.canvas->canvasClear();
  48.                 k10.rgb->write(-1, 0xFF0000);// 0xFF0000纯红色,静止状态常亮红灯
  49.         }
  50. }
复制代码


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2 小时前

【花雕动手做】K10系列实验之屏幕上获取移动检测结果

代码解读
一、头文件与全局对象

  1. #include "unihiker_k10.h"
  2. #include "AIRecognition.h"
  3. UNIHIKER_K10  k10;
  4. uint8_t       screen_dir=2;
  5. AIRecognition ai;
  6. #include "unihiker_k10.h"
复制代码

行空板 K10 硬件库,封装屏幕、画布、RGB 彩灯、摄像头、画面渲染全部外设操作。
  1. #include "AIRecognition.h"
复制代码

离线 AI 视觉库,依托 ESP32-S3 内置 NPU,提供人脸、猫狗、二维码、移动侦测四种离线视觉算法。
  1. UNIHIKER_K10 k10
复制代码

全局硬件主控对象,屏幕、灯光、摄像头所有操作都通过k10调用。
  1. uint8_t screen_dir=2
复制代码

屏幕朝向参数,2= 竖直正向显示;移动检测推荐竖屏,横屏容易误触发、识别不稳定。
  1. AIRecognition ai
复制代码

AI 专用对象,负责 NPU 初始化、切换识别模式、设置移动灵敏度、判断画面是否存在移动物体。

二、setup () 上电初始化(仅开机执行 1 次)

  1. void setup() {
  2.         k10.begin();                // 初始化主板底层IO、供电、通信总线等全部硬件
  3.         k10.initScreen(screen_dir); // 初始化LCD屏幕,设置竖直正向显示
  4.         ai.initAi();                // 启动ESP32-S3内置NPU AI加速器,加载移动检测模型
  5.         k10.initBgCamerImage();     // 初始化摄像头后台投屏功能,屏幕实时显示摄像头画面
  6.         k10.setBgCamerImage(false); // 初始化阶段临时关闭摄像头画面,避免画面干扰初始化流程
  7.         k10.creatCanvas();          // 创建绘图缓存画布,绘图先存缓存再统一刷新,消除屏幕闪烁
  8.         ai.switchAiMode(ai.NoMode); // 清空上一轮AI运行模式,防止多算法冲突、设备黑屏
  9.         k10.setScreenBackground(0x000000); // 设置屏幕底层背景为纯黑色
  10.         k10.setBgCamerImage(true);  // 开启摄像头实时画面投屏
  11.         ai.switchAiMode(ai.Move);   // 切换AI算法为【移动目标检测】,开启画面动态侦测
  12.         k10.rgb->brightness(round(3)); // 设置RGB彩灯亮度,取值0~10,3亮度柔和不刺眼
  13.         k10.canvas->updateCanvas(); // 刷新画布,输出初始化空白界面到屏幕
  14.         ai.setMotinoThreshold(50);  // 设置移动检测灵敏度阈值
  15. }
复制代码

关键接口说明:ai.setMotinoThreshold(50)
阈值范围:0 ~ 100
数值越小:轻微光影、微小移动就会触发检测;
数值越大:需要大幅度物体移动才会判定为移动;
本代码设 50,中等灵敏度,兼顾灵敏与抗光影误触发。
初始化执行顺序
硬件初始化 → 屏幕初始化 → AI 加速器启动 → 画布 / 摄像头初始化 → 清空旧 AI 模式 → 开启摄像头画面 → 切换移动检测算法 → 设置灯光亮度、移动灵敏度。

三、loop () 主循环(无限循环,核心侦测逻辑)

  1. void loop() {
  2.         // 判断摄像头画面是否检测到移动物体
  3.         if (ai.isDetectContent(AIRecognition::Move)) {
  4.                 // 第4行白色文字:实验标题
  5.                 k10.canvas->canvasText("行空板K10系列实验", 4, 0xFFFFFF);
  6.                 // 第6行浅粉色文字:检测提示
  7.                 k10.canvas->canvasText("检测到移动", 6, 0xFFCCCC);
  8.                 k10.canvas->updateCanvas(); // 刷新文字到屏幕
  9.                 k10.rgb->write(-1, 0x00FF00);// -1=全部RGB灯,0x00FF00纯绿色,检测到移动亮绿灯
  10.         }
  11.         else {
  12.                 // 画面静止无移动
  13.                 k10.canvas->canvasClear(); // 清空屏幕所有文字,只保留摄像头画面
  14.                 k10.rgb->write(-1, 0xFF0000);// 0xFF0000纯红色,静止状态常亮红灯
  15.         }
  16. }
复制代码

1. AI 判断函数
  1. ai.isDetectContent(AIRecognition::Move)
复制代码

返回布尔值:
true:画面存在移动的物体 / 光影变化;
false:画面完全静止,无动态变化。
2. 两大分支逻辑
分支 1:检测到移动(if)
在屏幕固定行数打印两行提示文字;
刷新画布,文字显示在摄像头画面上层;
全部 RGB 灯切换为绿色,作为移动提醒。
分支 2:画面静止(else)
清空画布所有文字,恢复纯净摄像头画面;
RGB 灯切换为红色常亮,代表待机静止状态。

四、完整运行流程
开发板上电,自动初始化硬件、AI、摄像头,开启移动侦测;
镜头前无物体移动:屏幕仅显示摄像头画面,RGB 红灯常亮;
手、物体在镜头前移动:屏幕弹出文字提示,RGB 立刻切换绿灯;
物体静止不动后,文字瞬间清空,灯光切回红色待机。
全程无delay()阻塞,实时持续侦测,响应速度快;
红绿灯光区分两种状态,直观易懂;
可自定义移动灵敏度阈值,适配室内、强光等不同环境;
限制 RGB 亮度,灯光柔和不刺眼。

五、使用注意事项
设备必须竖直摆放,横屏会大幅降低检测稳定性、增加误触发;
避开持续晃动的光影(窗帘、窗外树影、频闪灯光);
阈值调节参考:居家室内 40~60,强光窗边 70~90;
禁止在 loop 循环里频繁切换 AI 模式(移动 / 人脸 / 二维码),容易黑屏、设备重启。

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2 小时前

【花雕动手做】K10系列实验之屏幕上获取移动检测结果

Mind+图形编程

【花雕动手做】K10 系列实验之屏幕上获取移动检测结果图1
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2 小时前

【花雕动手做】K10系列实验之屏幕上获取移动检测结果

实验场景图与视频记录

【花雕动手做】K10 系列实验之屏幕上获取移动检测结果图1

【花雕动手做】K10 系列实验之屏幕上获取移动检测结果图2

【花雕动手做】K10 系列实验之屏幕上获取移动检测结果图3

【花雕动手做】K10 系列实验之屏幕上获取移动检测结果图4

【花雕动手做】K10 系列实验之屏幕上获取移动检测结果图5
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2026 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail