1. 概述
手势识别作为一种辅助的人机交互方式,在人机脱离的场景下可以提供方便的交互体验。本文介绍基于AliOS Things + STM32F413H Discovery开发板实现手势交互功能的演示。
2. 环境搭建
开发板:STM32F413H Discovery(附带麦克风阵列板)
手势传感器:Seeed Grove PAJ7620
温湿度传感器:HTS221
LED数码管:Seeed Grove LED Bar
硬件说明:
使用STM32F413H作为主控芯片,提供I2C接口、GPIO控制接口、显示控制接口等。
手势识别传感器和温湿度传感器均为标准I2C接口,连接到STM32F413H的I2C2上,通过slave address区分。
LED数码管的控制引脚连接到STM32F413H上的PC13、PA4两个gpio(PC13作为clock、PA4作为data),通过输出高低电平控制每一个LED的亮灭。
硬件连接:
3. 软件编译
软件:AliOS Things
下载AliOS Things后,切换到developer分支。
执行如下命令编译Application:
aos make sensordemo@stm32f413h-discovery
编译成功后,使用下面命令烧录镜像:
aos upload sensordemo@stm32f413h-discovery
4. 软件介绍
- AliOS Things
AliOS Things是面向IOT领域的轻量级物联网嵌入式操作系统。AliOS Things启动过程中,依次完成内核初始化、硬件资源初始化、功能组件初始化、外设驱动初始化。系统就绪后,通过用户定义的application_start()函数进入应用程序。
- 创建显示界面
在application_start()函数中调用display_init()创建LCD刷新任务、显存刷新任务、定义显示界面。
一共添加了3个显示界面:
界面1:显示声音方位。
界面2:显示音量。
界面3:显示温度和湿度
- 手势识别过程
在传感器驱动初始化函数drv_gesture_paj7620_init()中进行芯片设置和中断注册。当检测到物体距离变化后,触发中断,然后在中断处理函数中读取相关寄存器,得到识别的手势类型。
然后在显存刷新任务fb_refresh_task刷新界面时,根据当前手势类型判断是否需要进行显示界面切换或者控制LED数码管亮灭。
- 手势功能定义
向上 —— LED Bar逐渐点亮
向下 —— LED Bar逐渐熄灭
向左 —— 显示上一个显示界面
向右 —— 显示下一个显示界面
5. 功能演示
视频观看:AliOS-Things手势识别应用演示