在本篇文章中,我们主要介绍了如何使用Arduino开发板制作一个手势遥控器。本项目采用了APDS-9960 RGB和手势传感器扩展板。通过将手滑过传感器,您可以控制不同的电子设备,例如电脑、微控制器、机器人等。 采用APDS-9960极大方便了连接,并且它采用I2C接口进行通信。您可以将其用作电视的遥控器,像我们一样,但也可以将其用于控制其他使用红外线(IR)的设备。在本文中,我们会依次介绍项目制作的过程,包括电子电路设计、代码、3D打印部件以及组装。
手势遥控器的电路原理图
主要组件 ● SparkFun APDS-9960 - RGB和手势传感器 ● 红外(IR)LED 950nm ● 红外接收器二极管 - TSOP38238 ● 倾斜开关(可选) ● 锂聚合物电池 - 3.7v 1000mAh(3.5cmx5cm) ● USB迷你B电缆 ● Arduino Pro Mini 328 - 3.3V / 8MHz
其他次要组件 ● 220欧姆电阻 ● 晶体管 - NPN BC337 ● SparkFun FTDI扩展板 ● 面包板 ● 跳线 ● 原型PCB(3厘米x 7厘米)
硬件 ● M2钣金十字螺丝x 8 ● 烙铁 ● 3D打印机
将这些组件添加到面包板后,我们获得了完整的组件列表,并根据接线说明连接电路。
手势遥控器有四个主要部分:APDS-9960传感器实际上是四个不同的传感器!它可以用作环境光线传感器、RGB传感器、接近传感器,当然也可以用作非接触式手势传感器。 我们还使用红外LED将红外代码传输到电视机。Arduino pro mini 3.3v微控制器控制红外发光二极管和传感器,并且使用3.7伏锂聚合物电池为整个电路供电。
代码 本文使用的代码基于Ken Shirriff针对IR LED的IR遥控库和Sparkfun手势传感器库。
我们合并了这两个基本代码示例,一方面发送IR原始代码,另一方面感测不同的手势。该代码可在Github Repo上获得。确保安装上面的两个库以保证其正常工作。
设置功能 正如你在代码中看到的,我们用不同的手势设置了6个不同的功能: ● 向左或向右挥动,让你在不同的频道之间切换 ● 上下挥动控制音量 ● 将手靠近传感器可使电视机静音 ● 以及将手从传感器上移开即可打开和关闭电视机
查找红外信号 在我们实际制作遥控器电视之前,我们需要弄清楚发送给它的红外信号。为此,我们将红外接收器连接到另一个Arduino开发板,并上传IR远程库中的红外接收代码示例。
通过打开Arduino IDE上的串行监视器并单击电视遥控器按钮,我们可以确定为每个遥控功能使用哪个IR代码。
我们点击了我们想要使用的所有遥控按钮,并将数据复制到代码里面,然后我们将每个数组重命名为其实际的功能名称,并删除了我们不需要的所有部分。接下来,我们将所有红外数组复制到我们以前的手势代码中,并添加红外“send raw”函数,为每个手势使用正确的红外数组。例如,当感测到向上方向手势时,它发送VolUp的IR代码,等等。此时,我们使用FTDI Breakout上传代码进行一些测试。
降低功耗 我们在这个项目中处理的另一个问题是功耗。由于我们希望电池能够持续很长时间,因此我们在代码中添加了“深度睡眠”功能。这意味着除非手势传感器接收到信号,否则Arduino实际上会休眠。该信号通过其中断引脚唤醒Arduino。只有这时,Arduino才能执行解密不同手势并通过IR LED发送IR信号的任务。
一些最终的调整 为了使电路更小一些,我们使用焊接电路代替面包板。这次我们将这些元件直接焊接到了Arduino上。我们还使用了一块原型PCB,将其切割成3cm x 5cm以连接不同的地线和电源线,以及焊接IR LED晶体管和电阻。
我们添加了一个电池插头和2个接头,使我们能够轻松连接IR LED。 最后,我们增加了一个很酷的调整来节省更多的电池电量:我们在电池接地线和Arduino之间焊接了一个倾斜开关。这意味着你可以翻转电路来切断Arduino的电源,类似于电源开关。
组装 我们测量了所有组件并建模了一个可以容纳所有组件的3D塑料外壳。你可以在这里找到.stl文件。 然后,我们打印机箱,拧入手势传感器,将LED安装到其孔中,拧入PCB中,将电池装入机箱盖,然后将机箱盖拧紧到机箱上。
现在手势遥控器已经做好了!我们希望你能喜欢这个项目,并找到它的一些不错的用途。如果您对如何改进此项目有任何想法、意见或疑问,欢迎您在下面进行回复。如果您根据本文制作了这个项目,我们也很乐意听到!
|