面向智慧居家场景的手势交互式照明与窗帘控制系统 V3.2
本系统采用基于边缘AI(K230)与 MCU(STM32H743)的异构双核架构,实现多模态智能家居控制。
- 视觉感知层:K230 边缘计算芯片,通过 MIPI CSI-2 摄像头采集视频,利用 KPU 进行手势识别推理
- 逻辑控制层:STM32H743 单片机为调度中枢,接收手势/语音/传感器信号,控制执行器
- 协同控制逻辑:手势优先 → 语音辅助 → 光敏自动,三级优先级调度
| 模块 | 型号 | 功能 |
|---|
| 视觉AI板 | Kendryte K230 + MIPI 摄像头 | 手势识别,UART 发送指令 |
| 控制底板 | STM32H743IIT6 (反客科技) | 调度中枢,控制所有外设 |
| 语音模块 | HLK-V20 | 离线语音识别,UART2 通信 |
| 光照传感器 | BH1750 | 环境光照检测 (0~54612 lux) |
| 温湿度传感器 | AHT20 | 环境温湿度检测 |
| 继电器 | 5V 单路继电器 | 控制 LED 灯带通断 |
| 步进电机 | 28BYJ-48 + ULN2003 | 窗帘开合驱动 |
| 手势 | 动作 | 说明 |
|---|
| 五指张开 (PAPER) | 开灯 | 需保持 2 秒 |
| 握拳 (STONE) | 关灯 | 需保持 2 秒 |
| 左挥 (WAVE_LEFT) | 窗帘开 | 位移+速度双判定 |
| 右挥 (WAVE_RIGHT) | 窗帘关 | 位移+速度双判定 |
HLK-V20 3字节帧协议 00 xx yy,波特率 115200:
| 语音 | 帧数据 | 动作 |
|---|
| "打开窗帘" | 00 01 01 | 窗帘开 |
| "关闭窗帘" | 00 01 02 | 窗帘关 |
| "打开灯光" | 00 01 03 | 开灯 |
| "关闭灯光" | 00 01 04 | 关灯 |
| 条件 | 动作 |
|---|
| 光照 < 30 lux + 无手动操作 5 秒 + 未锁定 | 自动开灯 |
| 光照 ≥ 30 lux + 无手动操作 5 秒 + 未锁定 | 自动关灯 |
锁定机制:手动操作后进入锁定状态,防止 LED 自身光照干扰传感器。只有检测到真正的光照变化(lux > 80 或 < 10)才解锁。
- 关节角度法:计算 MCP/PIP 关节角度,>140°=伸直,<100°=弯曲
- 时序平滑:指数滑动平均 (α=0.4),减少关键点抖动
- 多帧投票:5帧窗口,3帧一致才触发
- 移动检测:手在移动时只识别挥手,静止时才识别张手/握拳
code1/
├── main.py # K230 手势识别 + UART 通信 + OSD 显示
├── readme.md # 本文件
├── wiring.md # 接线说明 + 交互逻辑详细文档
├── 语音/ # HLK-V20 语音模块工具和固件
│ ├── HLK-V20-串口升级工具-Update-Tool/
│ └── bin/
└── stm32_src/
└── gesture_project/ # Keil 工程 (STM32H743)
├── Core/
│ ├── Inc/ # main.h, hal_conf.h, it.h
│ └── Src/ # main.c, hal_msp.c, it.c, system.c
├── Drivers/
│ ├── CMSIS/ # ARM CMSIS 头文件
│ ├── STM32H7xx_HAL_Driver/ # HAL 库
│ └── User/ # led.c/h, usart.c/h
└── MDK-ARM/
├── FK743M2.uvprojx # Keil 工程文件
└── startup_stm32h743xx.s
- K230: 拷贝
main.py 到 SD 卡根目录
- STM32: DFU 模式(按 BOOT 键连 USB)+ STM32CubeProgrammer 烧录 HEX