桌面有个 "AI 小伙伴"—— 会跟着你转头吹风、比手势亮灯的桌面伴侣
一、先看效果
先上成品图 —— 一个双层激光切割的木质小盒子,上层是电子件,下层留空做电池仓 / 储物,前脸刻着 "AI 桌面伴侣" 四个字:

我在办公桌上放了这么一个小东西:
- 它会 "看" 你:你坐到桌前,它通过人脸坐标判断你坐在左、中、右哪个位置,舵机带着风扇自动转向你;
- 它会 "感受" 温度:只有当室温超过 27℃ 时才启动风扇送风,没人的时候自动关机回中,不浪费电;
- 它会 "认" 你的手势:在桌前比一个 "666"🤙,灯带自动亮起暖黄色小夜灯;比一个 "手掌"🤚,灯带立刻熄灭;
- 它会自己 "看天色":环境光太暗(<50),哪怕你不做手势,它也会自动把灯带点亮;
它还有块小屏幕:实时显示温度、光线强度、人脸 X 坐标,像一个迷你桌面仪表盘。
效果演示
二、为什么想做这个
夏天在办公室久坐,风扇对着墙吹、对着空气吹,人一走开它还在转;晚上加班光线暗,还要伸手去摸台灯开关。
DFRobot 新出的 SEN0626 正好是一个 "离线视觉小助手"——3 米内识别人脸位置,还能识别 5 种手势,I2C 接口直接挂在行空板 K10 上,不需要额外的算力。我就想:能不能把它变成一个桌面级的 "小管家",用最少的积木,把 "看人位置 + 手势 + 温度 + 光线" 这几个感知揉到一起,让它真的能在桌面上用起来。
外壳:激光切割的 "小盒子"
外壳我没有用 3D 打印,而是用 3mm 椴木夹板 + 激光切割,画了一张展开图,拼起来就是一个前低后高的双层小架:
- 上层:横向一条梁用来嵌灯带,中间留出舵机 / 风扇 / 传感器 / 行空板的安装位;
- 下层:空仓,用来放电池或收纳 USB 线;
前脸:激光雕刻 "AI 桌面伴侣" 五个字,当装饰也当作品标识。

- 所有板件都用榫卯 / 卡扣结构拼接,不用螺丝,直接打胶固定即可。
四、接线表
| SEN0626 引脚 | 接到行空板 K10 |
| VCC(3.3~5.5V) | 3V3 / 5V |
| GND | GND |
| D/T(SDA) | I2C_SDA |
| C/R(SCL) | I2C_SCL |
| INT(中断) | 本项目未使用,悬空 |
| 外设 | K10 引脚 | 说明 |
| WS2812 灯带 DIN | P0 | 初始化灯数 64、亮度 255 |
| 舵机信号 | P1 | 0°/80°/95°/110° 四档 |
| 风扇控制端(经三极管 / MOS) | P2 | 高电平 = 开,低电平 = 关 |
五、SEN0626 关键参数(写代码前先对齐)
参考官方 Wiki,我把本项目真正用到的几个值整理成一张表,避免积木里写错:
- 人脸坐标范围:X / Y 均为 0 ~ 640,原点在视野左上角,(320, 320) 是画面正中心;
- 手势编号(Mind+ 积木里 "获取手势类型" 返回的数值):
| 数值 | 手势 | 板载指示灯 |
| 1 | 点赞 👍 | 蓝 |
| 2 | OK 👌 | 绿 |
| 3 | 手掌 🤚 | 红 |
| 4 | 耶 ✌️ | 黄 |
| 5 | 666 🤙 | 紫 |
- 识别距离:0.5 ~ 3 米,最佳 1 ~ 2 米;
- 识别前提:摄像头先确认 "人脸在画面里",再识别手势,所以做手势前要保证脸在镜头前。
六、编程思路(Mind+ 图形化)
整个程序只做了三件事,全部在一个 循环执行 里完成:
1. 初始化
行空板 K10 主程序开始AI 视觉手势/人脸检测传感器 初始化 I2C 模式,地址 0x72初始化 RGB 灯 引脚 P0,灯数 64RGB 灯 引脚 P0,灯带亮度 255清除全屏2. 温度 + 人脸位置 → 决定风扇和舵机
逻辑:只有室温 > 27℃ 才进入送风判断;然后按人脸 X 坐标把风扇分成左 / 中 / 右三档:
| 人脸 X 区间 | 舵机角度 | 风扇 P2 | 含义 |
| 150 ~ 250 | 80° | 高电平 | 人偏左,风扇左转 |
| 250 ~ 300 | 95° | 高电平 | 人在正中 |
| 300 ~ 400 | 110° | 高电平 | 人偏右,风扇右转 |
| 其他(无人脸) | 0° | 低电平 | 人离开,风扇停、舵机回中 |
为什么是 150/250/300/400?因为摄像头装在桌面正中,X 坐标 320 是中心,我把它左右各留 70~100 像素的 "中间区",避免风扇在小幅度晃动时来回抖。实际使用中可以根据自己坐姿微调这几个阈值。
3. 手势 + 环境光 → 决定灯带
如果 手势类型 = 5(666🤙) 或 环境光强度 < 50: RGB 灯 0 ~ 63 号显示黄色(暖光小夜灯)如果 手势类型 = 3(手掌🤚): RGB 灯 全部熄灭也就是说:
手动开灯:比一个 "666";
自动开灯:环境光 < 50,加班到天黑自动亮;
关灯:比一个 "张开手掌"。
4. 屏幕实时刷新
K10 屏幕上用 缓存显示文字 分四行刷出:
第 1 行:标题 "AI 桌面伴侣"
第 2 行:当前温度
第 3 行:光线强度
第 4 行:人脸 X 坐标
每次循环结束 将缓存内容显示/显示更新,这样屏幕就是一块迷你仪表盘。

七、实际效果与调试记录
舵机角度:一开始我把三档设成 60°/90°/120°,风扇转头太猛、桌面震动明显;后来改成 80°/95°/110°,中间档 95° 正好对准坐姿,两边只偏 15°,安静很多。
温度阈值:27℃ 是我自己测下来 "吹风扇会舒服、不吹也能忍" 的临界点,教室里可以按自己环境调整。
手势识别:666(🤙)和手掌(🤚)在桌面距离下识别最稳;点赞(👍)和 OK(👌)因为手势小,在 1.5 米外容易误判,所以本项目故意没选这两个做控制键。
无人脸判断:SEN0626 不返回 "人脸数量",我用的是 "X 坐标落在 150~400 之外" 来间接判断没人 —— 简单粗暴,但对单人桌面场景够用。
八、可以继续玩的扩展方向
把 "手势 = 1(点赞)" 绑定成 "风扇 +1 档","手势 = 2(OK)" 绑定成 "风扇 -1 档",实现无接触调速;
把舵机从单轴升级成双轴,配合人脸 Y 坐标实现上下俯仰;
用 SEN0626 的 INT 中断引脚,做 "检测到人才唤醒屏幕" 的低功耗模式;
把温度、光线、人脸坐标通过 EasyIoT 上传到云端,做一个桌面微环境周报。
九、写在最后
这次用行空板 K10 + SEN0626,没有写一行 Python/C,全靠 Mind+ 图形化积木,就把 "视觉 + 温度 + 光线 + 手势" 四种感知融合成一个真的能放在桌上用的小物件。SEN0626 的离线识别能力在 1~2 米桌面距离下非常稳,完全不需要联网,也不用担心隐私画面上传。
欢迎大家在评论区交流,也欢迎一起把它改造成更多形态 —— 比如台灯、笔筒、显示器挂灯。







呦呦呦,今天是个啥好日子,居然看到张老师更新了,哈哈哈哈哈哈
哈哈哈,到了最后时刻必须跟上