Arduino提高篇25—手势识别

Arduino提高篇25—手势识别_第1张图片

随着科技的发展,人机交互也发生了翻天覆地的变化,从最开始的手动控制,到后来的遥控,再到语音识别以及图像识别。一切都是为了解放人类,毕竟能吵吵就不会动手对不对,现在都懒得吵吵了,图像识别分析就好。本篇我们来介绍高大尚的手势识别,用手比划就能进行控制了。

1. APDS-9960模块介绍

APDS-9960是一个体积非常小的传感器,它集成了非接触手势检测、接近检测、数字环境亮度测量和色彩检测等诸多功能。很多手机上也采用了该传感器,例如三星的Galaxy S5。

本篇我们使用搭载了APDS-9960传感器的模块,模块提供了APDS-9960传感器的外部工作电路,同时将管脚引出,方便接线使用,其实物图如下:

Arduino提高篇25—手势识别_第2张图片

模块特点:

  • 工作电压:3.3V
  • 环境光及RGB色彩感应
  • 接近检测
  • 手势检测
  • 测量范围:10-20cm
  • 通信接口:IIC通讯
  • IIC地址:0x39

管脚定义:

  • VL:如果PS跳线断开,则IR LED的可选电源。必须为3.0-4.5V
  • GND:接地
  • VCC:用于为APDS-9960传感器供电。必须为2.4-3.6V
  • SDA:IIC数据引脚
  • SCL:IIC时钟引脚
  • INT:外部中断引脚。中断事件时为低电平有效

2. 安装驱动库

本篇我们需要安装「Adafruit_APDS9960」驱动库。在Arduino IDE中,点击「项目」—「加载库」—「管理库」,搜索选择最新版本进行安装即可。

Arduino提高篇25—手势识别_第3张图片

3. 实验材料

  • Uno R3开发板
  • 配套USB数据线
  • 面包板及配套连接线
  • OLED显示屏
  • APDS-9960模块

4. 实验步骤

1. 根据原理图搭建电路图。

OLED屏和手势识别模块都使用了IIC通讯方式。将两个模块的VCC、GND分别连接开发板的3.3V、GND,两个模块的SDA、SCL分别连接开发板的A4、A5。

实验原理图如下图所示:

Arduino提高篇25—手势识别_第4张图片

实物连接图如下图所示:

Arduino提高篇25—手势识别_第5张图片

2. 新建sketch,拷贝如下代码替换自动生成的代码并进行保存。

#include "Adafruit_APDS9960.h"
#include 
#include 
#include 

Adafruit_APDS9960 apds;
Adafruit_SSD1306 oled(128, 64, &Wire, -1);

void setup() {
  oled.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  oled.setTextColor(WHITE);//开像素点发光
  oled.clearDisplay();//清屏
  oled.setTextSize(2); //设置字体大小

  apds.begin();
  apds.enableProximity(true);
  apds.enableGesture(true);
}

void loop() {

  uint8_t gesture = apds.readGesture();
  oled.clearDisplay();//清屏
  oled.setCursor(15, 2);//设置显示位置
  oled.println("APDS-9960");
  oled.setCursor(32, 40);//设置显示位置

  switch (gesture)
  {
    case APDS9960_UP: oled.println("[ Up ]"); break;
    case APDS9960_DOWN: oled.println("[Down]"); break;
    case APDS9960_LEFT: oled.println("[Left]"); break;
    case APDS9960_RIGHT: oled.println("[Right]"); break;
    default: oled.println("[----]"); break;
  }
  oled.display(); // 开显示
}

3. 连接开发板,设置好对应端口号和开发板类型,进行程序下载。

Arduino提高篇25—手势识别_第6张图片

5. 实验现象

我们从不同方向移动手进入传感器检测范围,然后慢慢移出,模块会对应识别出移动方向。当然识别结果也会受环境光影响,但大概率识别还是很准确的。


关注公众号「TonyCode」,更多精彩内容分享。
回复「1024」获取1000G学习资料。
个人博客
在这里插入图片描述

你可能感兴趣的:(Arduino,arduino,apds9960,手势识别)