描述
ZX距离与手势传感器连接指南
一、引言
ZX距离与手势传感器是与XYZ Interactive合作的产品。XYZ Interactive的技术人员创造了一种独特的技术,能利用简单的红外光束在二维空间中检测物体的位置。该传感器是无接触式的,不仅能在空中识别简单手势(如左右滑动),还能识别物体距离传感器的距离(“Z”轴,最远约10英寸即25厘米),以及物体在传感器上方左右的位置(“X”轴,跨度约6英寸即15厘米)。
文件下载:SEN-12780.pdf
二、教程涵盖内容
本教程将展示如何将传感器连接到Arduino和计算机,具体分为以下几个部分:
- 板载概述:介绍ZX传感器的各种引脚和跳线设置。
- 硬件连接:讲解如何将传感器连接到Arduino。
- Arduino库安装:若计划将其与Arduino配合使用,需安装ZX传感器库。
- Arduino:ZX示例:演示如何在Arduino上读取传感器的Z轴和X轴数据。
- Arduino:手势示例:展示如何使用Arduino读取手势。
- PC:ZX示例:说明如何在Windows计算机上读取Z轴和X轴数据。
- 资源与拓展:提供更多使用ZX传感器的额外资源。
三、所需材料
除传感器本身外,若要进行Arduino示例,还需以下额外组件:
- ZX手势和距离传感器(SEN - 12780):无接触式传感器,具备相应检测功能。
- SparkFun USB Mini - B电缆(CAB - 11301):USB 2.0 A型到Mini - B 5针电缆。
- SparkFun RedBoard(DEV - 12757):预编程Arduino的开发板。
- 面包板(PRT - 12043):白色迷你面包板,用于小型项目原型搭建。
- 6英寸公对公跳线(PRT - 08431):SparkFun独家产品,155mm长。
- 直排引脚(PRT - 00116):40针引脚,可按需切割。
若要在基于Windows的PC上尝试ZX传感器,还需要一个FTDI转接板(SparkFun FTDI Basic Breakout - 5V,DEV - 09716)。
在开始使用ZX传感器之前,建议熟悉以下概念:
- Arduino基础:部分示例使用Arduino控制传感器。
- I²C协议:ZX传感器使用的通信协议之一。
- 串口通信:用于编程Arduino、查看调试信息和传输传感器数据。
- 面包板使用:面包板用于连接Arduino和ZX传感器。
- FTDI驱动安装:编程Arduino或使用传感器演示应用程序时可能需要。
四、板载概述
4.1 工作原理
ZX传感器通过两侧的两个LED发射红外(IR)光束,光束从传感器上方的物体反射回来,反射光被传感器中心的接收器接收,传感器背面的微控制器对数据进行解读。我们可以通过I²C或UART连接读取结果。
4.2 引脚描述
| ZX传感器提供了2个连接端口:I²C和UART。需要注意的是,只能使用I²C或UART中的一种与传感器通信。各引脚功能如下: |
引脚标签 |
描述 |
| GRN |
未使用 |
| TXO |
传感器的UART发送输出 |
| RXI |
UART接收,当前未使用 |
| VCC |
3.3 - 5V电源 |
| GND |
接地 |
| BLK |
未使用,但连接到GND |
| DR |
数据就绪,通过I²C有数据可读时为高电平 |
| CL |
I²C时钟 |
| DA |
I²C数据 |
4.3 跳线设置
传感器板背面有几个跳线,可以用烙铁打开或关闭。
- I²C上拉电阻:默认情况下,SDA和SCL I²C线上有4.7kΩ上拉电阻。移除该跳线的焊锡可断开上拉电阻。
-
| I²C地址:默认情况下,此跳线是打开的。关闭它可以更改传感器的I²C地址。 |
跳线状态 |
I²C地址 |
| 打开 |
0x10 |
| 关闭 |
0x11 |
4.4 红外屏蔽罩
传感器LED上的小铜管用于阻挡LED发出的直接照射到接收器的红外光,确保光线先从物体反射回来。这些屏蔽罩用强力胶水固定,若要移除可能需要一些丙酮。如果要将ZX传感器安装在自己的外壳中,需确保红外光不会从LED侧面直接到达接收器,即需要制作自己的红外屏蔽罩。
五、硬件连接
5.1 添加引脚
将一排可断开的公引脚焊接到板上的9个引脚孔中。
5.2 连接转接板
| 对于Arduino示例,我们将使用I²C。将转接板连接到RedBoard的以下引脚: |
ZX传感器 |
RedBoard |
| VCC |
5V |
| GND |
GND |
| DR |
2 |
| CL |
A5 |
| DA |
A4 |
需要注意的是,我们连接了DR引脚,但仅在Arduino手势示例中使用。DR表示“数据就绪”,当传感器有数据可读时为高电平。我们可以将其连接到Arduino中断,这样就无需持续轮询传感器。
六、Arduino库安装
ZX传感器的大部分工作由传感器本身的微控制器完成,我们只需读取结果。为了更方便地使用,我们创建了一个Arduino库。点击按钮下载最新版本的ZX传感器Arduino库,下载后解压文件,按照Arduino库安装指南将文件安装为Arduino库。
七、Arduino示例
7.1 ZX示例
- 加载ZX演示:打开Arduino程序,选择“文件” -> “示例” -> “SparkFun_ZX_Distance_and_Gesture_Sensor” -> “I2C_ZX_Demo”。
- 连接USB:用USB迷你电缆将计算机连接到RedBoard。若之前未安装,需安装FTDI驱动。
- 运行程序:确保在“工具” -> “串口”中选择正确的串口,在“工具” -> “开发板”中选择“Arduino Uno”。点击上传按钮,等待程序上传到Arduino。选择“工具” -> “串口监视器”打开串口终端,串口监视器设置为默认设置(9600,8,n,1)。此时应看到“ZX Sensor初始化完成”的消息。
- 测试:将手悬停在传感器上方4到10英寸(10到25厘米)处,移动手,应在串口终端中看到Z(传感器上方高度)和X(左右位置)数据。Z和X数据为0到240之间的无符号整数。
7.2 手势示例
- 加载手势中断演示:选择“文件” -> “示例” -> “SparkFun_ZX_Distance_and_Gesture_Sensor” -> “I2C_Gesture_Interrupt”。
- 运行程序:上传草图并打开串口监视器,应看到初始化完成的消息。
- 测试手势:将手放在传感器一侧(带有黄铜罩的红外LED一侧),距离传感器4到10英寸(10到25厘米),水平划过传感器,若手势正确,应在串口监视器中看到消息。需要注意的是,手势的“速度”衡量手势发生的快慢,数字越小,手势速度越快(如3表示非常快,25表示非常慢)。
- 支持的手势:目前支持的手势包括右滑(从板左侧向右滑出传感器范围)、左滑(从板右侧向左滑出传感器范围)、上滑(物体靠近传感器,悬停至少1秒,然后向上移出传感器范围)和无手势(传感器无法正确识别手势)。
八、PC示例
ZX传感器除了响应I²C命令外,还会通过其UART端口持续传输ZX数据。我们可以将FTDI转接板直接连接到ZX传感器并读取输出,可使用串口应用程序或屏幕命令(Linux或Mac)查看输出。可以使用3.3V或5V的FTDI转接板,5V转接板能让传感器获得更好的检测范围。
8.1 设置
- 将FTDI转接板连接到ZX传感器,确保引脚对齐(如GRN连接到GRN,BLK连接到BLK)。
- 用USB电缆将FTDI转接板连接到计算机。
- 下载ZX演示应用程序并解压。
8.2 运行
- 双击运行ZX演示应用程序。
- 在右侧的“输入:”下拉列表中选择与FTDI转接板对应的COM端口(若需要查找COM端口的帮助,可查看终端基础教程的相关部分),无需选择“输出:”端口。
- 点击“打开”连接到FTDI转接板。
- 移动手在传感器上方,应看到红色球移动。还可以尝试应用程序中的其他选项卡,如“Z - 控制”选项卡可尝试让手靠近和远离传感器,“手势”选项卡可根据Z和X数据计算不同的手势。
九、资源与拓展
9.1 其他示例
尝试完基本的ZX和手势演示后,可以尝试Arduino库中的其他示例:
- I2C_Gesture_Demo:通过I²C轮询传感器,查看是否有手势发生。
- I2C_Gesture_Interrupt:检测到手势时,DR引脚从低电平变为高电平,此示例通过I²C读取手势并通知传感器清除DR。
- I2C_ZX_Demo:通过I²C定期轮询传感器获取Z和X轴数据。
- I2C_ZX_Interrupt:当有效ZX数据准备好时,ZX传感器将DR引脚置为高电平。
- UART_Gesture_Demo:目前不支持通过UART进行手势识别,此演示暂时作为占位符。
- UART_ZX_Demo:从软件串口读取Z和X轴数据并在串口监视器上显示。
9.2 资源
以下是一些有助于使用ZX传感器的额外资源:
- ZX传感器数据手册
- 使用Arduino与ZX传感器
- ZX传感器原理图
- ZX传感器GitHub仓库
9.3 其他教程
如果你需要一些灵感,可以查看以下相关教程:
- 连接Arduino到Processing
- 串行图形LCD连接指南
- RGB面板连接指南
- APDS - 9960 RGB和手势传感器连接指南
你是否已经准备好使用ZX传感器开发自己的项目了呢?不妨尝试一下这些示例,看看能创造出什么有趣的应用!
打开APP阅读更多精彩内容