Arduino+APDS9960打造手势识别蓝牙音箱(一)

在上一篇文章中波波分享了利用树莓派3b+打造蓝牙音响,今天咱们再来点儿科技感强的小玩意儿。利用Arduino和APDS9960来制作一款支持手势识别的蓝牙音响。通过挥手来控制音乐上一曲,下一曲,打开列表等。

Arduino+APDS9960打造手势识别蓝牙音箱

需要准备的材料:

1、Arduino uno R3 开发板  x1

2、APDS-9960 RGB和手势传感器  x1

3、蓝牙音响套件  x1 (买套件比较省事儿,自己用模块DIY费劲)

4、导线若干

在上述材料中我们准备的是蓝牙音响套件,这样可以直接使用。如果你想用模块DIY,请参考《Arduino+APDS9960打造手势识别蓝牙音箱(二)》这篇笔记先让大家对手势识别有一个基础的了解。

一、初识手势识别模块APDS-9960

刚刚买回来的APDS-9960模块如下图所示

APDS-9960

其引脚参数如下所示

APDS-9960引脚参数

拿到模块后,我们首先需要给模块焊接上排针,以便后边连接导线。

需要注意的是:

  • PS-此跳线将传感器和IR LED的电源(也位于APDS-9960上)连接在一起。当跳线闭合(即已连接)时,您只需向VCC引脚供电即可为传感器和IR LED供电。如果跳线断开,则需要分别为VCC(2.4-3.6V)和VL(3.0-4.5V)引脚供电。默认情况下,此跳线是关闭的。
  • I2C PU-这是一个三向跳线,用于连接和断开I 2 C上拉电阻。默认情况下,此跳线是闭合的,这意味着SDA和SCL线均已在分支板上连接了上拉电阻。如果不需要上拉电阻器(例如,上拉电阻器位于I 2 C总线上的其他位置),请使用一些焊芯打开跳线。

二、将模块与Arduino开发板进行连接。

重要提示:您必须使用3.3V!如果尝试使用5V电源或5V I 2 C通信,则有损坏APDS-9960的风险。

连线如下图所示:

分线板连接到Arduino

 

APDS-9960分组讨论板 Arduino专业版3.3V
地线 地线
VCC VCC
SDA A4
SCL A5
INT 2

特别提示:在本例中波波没有按照上图连线,而是采用了V5扩展板,上面有I2C接口,可直接插入。建议玩的小伙伴也采用扩展板。提供上图方便动手力强的小伙伴用。

三、开发测试

1、安装Arduino_APDS9960库

关于手势识别的库文件一共有2个,一个是SparkFun_APDS9960(github:https://github.com/sparkfun/APDS-9960_RGB_and_Gesture_Sensor)需要自己手动安装,另外一个是Arduino_APDS9960,打开Arduino IDE管理库搜索安装。

安装Arduino_APDS9960库

2、Arduino_APDS9960手势识别测试

复制下方代码,粘贴到你的IDE编辑器中,编译并上传到Arduino,打开串口监视器,挥动手势,测试APDS9960工作状态。

  1. #include <Arduino_APDS9960.h>
  2. void setup() {
  3.   Serial.begin(9600);
  4.   while (!Serial);
  5.   if (!APDS.begin()) {
  6.     Serial.println("Error initializing APDS9960 sensor!");
  7.   }
  8.   //APDS.setGestureSensitivity(80);
  9. //上述参数默认值80,设置范围1-100,数值越高精度越高。高精度对应容错率低,过高的数值可能造成更多的错误。
  10.   Serial.println("Detecting gestures ...");
  11. }
  12. void loop() {
  13.   if (APDS.gestureAvailable()) {
  14.     //检测到手势
  15.     int gesture = APDS.readGesture();
  16.     switch (gesture) {
  17.       case GESTURE_UP:
  18.         Serial.println("Detected UP gesture");
  19.         break;
  20.       case GESTURE_DOWN:
  21.         Serial.println("Detected DOWN gesture");
  22.         break;
  23.       case GESTURE_LEFT:
  24.         Serial.println("Detected LEFT gesture");
  25.         break;
  26.       case GESTURE_RIGHT:
  27.         Serial.println("Detected RIGHT gesture");
  28.         break;
  29.       default:
  30.         // ignore
  31.         break;
  32.     }
  33.   }
  34. }

3、挥动手势,在监视器中就可以看到结果啦。

 

 

PS:支持的手势

这是当前支持的手势的列表。确保每个手势都在传感器范围之外开始,移入传感器范围,然后在传感器范围之外结束。

手势 描述
从板的底部向顶部滑动,并且超出传感器的范围。在滑动结束时,请确保手腕/手臂不在传感器的范围内!
从板的顶部向底部滑动并超出传感器范围。
从电路板的右侧向左滑动并超出传感器的范围。
从电路板的左侧向右滑动并超出传感器的范围。
由远到近 物体(例如手)从传感器上方开始远移,靠近传感器,徘徊至少1秒钟,然后移出传感器范围。
由近到远 物体从传感器附近开始,徘徊至少1秒钟,然后向上移动并超出传感器范围。
NONE 传感器无法正确猜测正在执行的手势。

下篇笔记波波将带朋友们动手制作Arduino版的蓝牙音响,并通过手势识别进行播放控制。敬请关注。

波波
你想把广告放到这里吗?

发表评论

您必须 登录 才能发表留言!