在上一篇文章中波波分享了利用树莓派3b+打造蓝牙音响,今天咱们再来点儿科技感强的小玩意儿。利用Arduino和APDS9960来制作一款支持手势识别的蓝牙音响。通过挥手来控制音乐上一曲,下一曲,打开列表等。
需要准备的材料:
1、Arduino uno R3 开发板 x1
2、APDS-9960 RGB和手势传感器 x1
3、蓝牙音响套件 x1 (买套件比较省事儿,自己用模块DIY费劲)
4、导线若干
在上述材料中我们准备的是蓝牙音响套件,这样可以直接使用。如果你想用模块DIY,请参考《Arduino+APDS9960打造手势识别蓝牙音箱(二)》这篇笔记先让大家对手势识别有一个基础的了解。
一、初识手势识别模块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的风险。
连线如下图所示:
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管理库搜索安装。
2、Arduino_APDS9960手势识别测试
复制下方代码,粘贴到你的IDE编辑器中,编译并上传到Arduino,打开串口监视器,挥动手势,测试APDS9960工作状态。
- #include <Arduino_APDS9960.h>
- void setup() {
- Serial.begin(9600);
- while (!Serial);
- if (!APDS.begin()) {
- Serial.println("Error initializing APDS9960 sensor!");
- }
- //APDS.setGestureSensitivity(80);
- //上述参数默认值80,设置范围1-100,数值越高精度越高。高精度对应容错率低,过高的数值可能造成更多的错误。
- Serial.println("Detecting gestures ...");
- }
- void loop() {
- if (APDS.gestureAvailable()) {
- //检测到手势
- int gesture = APDS.readGesture();
- switch (gesture) {
- case GESTURE_UP:
- Serial.println("Detected UP gesture");
- break;
- case GESTURE_DOWN:
- Serial.println("Detected DOWN gesture");
- break;
- case GESTURE_LEFT:
- Serial.println("Detected LEFT gesture");
- break;
- case GESTURE_RIGHT:
- Serial.println("Detected RIGHT gesture");
- break;
- default:
- // ignore
- break;
- }
- }
- }
3、挥动手势,在监视器中就可以看到结果啦。
PS:支持的手势
这是当前支持的手势的列表。确保每个手势都在传感器范围之外开始,移入传感器范围,然后在传感器范围之外结束。
手势 | 描述 |
---|---|
上 | 从板的底部向顶部滑动,并且超出传感器的范围。在滑动结束时,请确保手腕/手臂不在传感器的范围内! |
下 | 从板的顶部向底部滑动并超出传感器范围。 |
左 | 从电路板的右侧向左滑动并超出传感器的范围。 |
右 | 从电路板的左侧向右滑动并超出传感器的范围。 |
由远到近 | 物体(例如手)从传感器上方开始远移,靠近传感器,徘徊至少1秒钟,然后移出传感器范围。 |
由近到远 | 物体从传感器附近开始,徘徊至少1秒钟,然后向上移动并超出传感器范围。 |
NONE | 传感器无法正确猜测正在执行的手势。 |
下篇笔记波波将带朋友们动手制作Arduino版的蓝牙音响,并通过手势识别进行播放控制。敬请关注。