颜色识别挥手传感器模块

            [[文件:]]

SEN0187.jpg
目录

1 概述
2 技术规格
3 引脚说明
4 使用教程

4.1 准备
4.2 接线方式
4.3 挥手样例代码
4.4 其他功能

5 协议说明
6 更多

概述
上帝说,要有光,于是便有了光,但我只要挥一挥手——还在幻想2020年的智能生活?说一声“Light up",打开所有的灯?手挥一下,关闭所有的音乐?这已经不用在幻想了,因为这个时代已经到来。
这是DFRobot新出的一款手势识别传感器,能够识别你手的运动方向。可以作为各种开关的触发装置,来帮助你实现智能控制。此外它还是一个颜色和光强传感器,可以分辨RGB三基色的各类组合。
模块采用了APDS-9960传感器,集成RGB、环境光、近程和手势传感器模块。I2C接口保证了它的可使用性,近程和手势检测配有红外LED。RGB和环境光检测功能可在多种光条件下以及通过多种减振材料包括深色玻璃的情况下,检测出光强度。此外,集成 UV-IR 遮光滤光片可实现精准的环境光和相关色温检测。着实是一款非常棒的传感器!

技术规格
工作电压: 3.3-5V
检测距离: 100mm
引脚接口:
I2C接口
中断引脚

模块尺寸: 18.3X16.4mm

引脚说明

RGB and Gesture Sensor正面示意图

RGB and Gesture Sensor反面示意图

名称
功能描述

SDA
I2C数据端口(A4)(模拟口4)

SCL
I2C时钟端口(A5)(模拟口5)

GND
电源地

VCC
电源正

INT
中断输出

使用教程

下面我们以一个简单的样例,来教大家如何使用传感器的手势功能。我们的目标就是让传感器检测到手势的上下左右前后的挥动。

准备

首先准备好下面的硬件及安装好软件

硬件
DF_UNO x1
DF_IO传感器扩展板 x1
RGB手势识别 x1
杜邦线 x5
软件
Arduino IDE V1.6.5 点击下载Arduino IDE

接线方式

准备好硬件后,按照下图将模块与UNO连接好

手势连接图.png

挥手样例代码

硬件连接部分弄完了以后,我们就来看看软件部分怎么弄吧。
首先你需要下载下面链接的库文件及一些参考资料。将这个文件夹解压后复制出来放到我们ARDUINO安装目录下的libraries文件夹中就可以了。

点击下载挥手传感器库文件。

具体的安装库文件方法可以参考下面的链接

如何安装库?

接下来我们就需要打开ARDUINO IDE了,将我们的下面的代码复制到IDE中,注意:将刚刚打开的IDE中的所有内容都删除掉!然后选好串口和板型(UNO),点击下载就OK了。然后再按照连接图的方向和面,对着它挥手吧,看看串口会出现什么吧!

注意:刚开始你可能会感觉识别的有些慢,这可能是你的挥手方式不够好,多练习几次,掌握最好的姿势,就很容易成功了。试试吧!

#include <Wire.h>
#include <SparkFun_APDS9960.h>

// Pins
#define APDS9960_INT 2 // Needs to be an interrupt pin

// Constants

// Global Variables
SparkFun_APDS9960 apds = SparkFun_APDS9960();
int isr_flag = 0;

void setup() {

// Initialize Serial port
Serial.begin(9600);
Serial.println();
Serial.println(F("--------------------------------"));
Serial.println(F("SparkFun APDS-9960 - GestureTest"));
Serial.println(F("--------------------------------"));

// Initialize interrupt service routine
attachInterrupt(0, interruptRoutine, FALLING);

// Initialize APDS-9960 (configure I2C and initial values)
if ( apds.init() ) {
Serial.println(F("APDS-9960 initialization complete"));
} else {
Serial.println(F("Something went wrong during APDS-9960 init!"));
}

// Start running the APDS-9960 gesture sensor engine
if ( apds.enableGestureSensor(true) ) {
Serial.println(F("Gesture sensor is now running"));
} else {
Serial.println(F("Something went wrong during gesture sensor init!"));
}
}

void loop() {
if( isr_flag == 1 ) {
handleGesture();
isr_flag = 0;
}
}

void interruptRoutine() {
isr_flag = 1;
}

void handleGesture() {
if ( apds.isGestureAvailable() ) {
switch ( apds.readGesture() ) {
case DIR_UP:
Serial.println("UP");
break;
case DIR_DOWN:
Serial.println("DOWN");
break;
case DIR_LEFT:
Serial.println("LEFT");
break;
case DIR_RIGHT:
Serial.println("RIGHT");
break;
case DIR_NEAR:
Serial.println("NEAR");
break;
case DIR_FAR:
Serial.println("FAR");
break;
default:
Serial.println("NONE");
}
}
}

其他功能

我们这个传感器不光能实现挥手识别,还能够实现测距,环境光测试,强光中断等应用,具体事例可以参考这个库中的EXAMPLES文件夹的实例。因为我们这个传感器还能够颜色识别和光强度识别,所以你还可以开发出你自己能想到的其他功能。

协议说明
I2C协议说明。

更多
原理图
APDS9960数据手册

更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖!

Shopping car.png Link

标签: Arduino传感器