概述
上帝说,要有光,于是便有了光,但我只要挥一挥手——还在幻想2020年的智能生活?说一声“Light up",打开所有的灯?手挥一下,关闭所有的音乐?这已经不用在幻想了,因为这个时代已经到来。 这是DFRobot新出的一款手势识别传感器,能够识别你手的运动方向。可以作为各种开关的触发装置,来帮助你实现智能控制。此外它还是一个颜色和光强传感器,可以分辨RGB三基色的各类组合。 模块采用了APDS-9960传感器,集成RGB、环境光、近程和手势传感器模块。I2C接口保证了它的可使用性,近程和手势检测配有红外LED。RGB和环境光检测功能可在多种光条件下以及通过多种减振材料包括深色玻璃的情况下,检测出光强度。此外,集成 UV-IR 遮光滤光片可实现精准的环境光和相关色温检测。着实是一款非常棒的传感器!
技术规格
- 工作电压: 3.3-5V
- 检测距离: 100mm
- 引脚接口:
- I2C接口
- 中断引脚
- 模块尺寸: 18.3X16.4mm
引脚说明
名称 | 功能描述 | - style align="center" | SDA |
SCL | I2C时钟端口(A5)(模拟口5) | - style align="center" | GND |
VCC | 电源正 | - style align="center" | INT |
使用教程
下面我们以一个简单的样例,来教大家如何使用传感器的手势功能。我们的目标就是让传感器检测到手势的上下左右前后的挥动。
准备
首先准备好下面的硬件及安装好软件
- 硬件
- DF_UNO x1
- DF_IO传感器扩展板 x1
- RGB手势识别 x1
- 杜邦线 x5
- 软件
- Arduino IDE V1.6.5 点击下载Arduino IDE
接线方式
准备好硬件后,按照下图将模块与UNO连接好
挥手样例代码
硬件连接部分弄完了以后,我们就来看看软件部分怎么弄吧。
首先你需要下载下面链接的库文件及一些参考资料。将这个文件夹解压后复制出来放到我们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文件夹的实例。因为我们这个传感器还能够颜色识别和光强度识别,所以你还可以开发出你自己能想到的其他功能。
协议说明
更多
更多问题及有趣的应用,可以 访问论坛 进行查阅或发帖! |