Grove - 人体存在传感器 (AK9753)
Grove - 人体存在传感器可用于检测人体或任何其他红外物体的存在。此外,它由四个量子红外传感器和一个用于特性补偿的集成电路(IC)组成,因此可用于检测红外物体的运动以及红外物体移动的相对位置。集成的模数转换器提供16位数据输出。该模块适用于几英尺范围内的人体检测。
您可以在我们的网站上找到很多红外传感器,这款将是最有趣的之一。通过一定的算法,它甚至可以实现手势识别。我们希望您喜欢它。
特性
- 具有四个红外元件的量子型红外传感器
- 16位数字输出到I2C总线
- 集成温度传感器
- 中断功能
- 低电流消耗
规格参数
项目 | 值 |
---|---|
工作电压 | 3.3V / 5V |
工作温度 | -30℃ ~ 85℃ |
人体存在检测范围 | < 3m |
红外输出分辨率 | 16位 |
温度测量范围 | -10℃ ~ 60 ℃ |
接口 | I2C |
I2C地址 | 0x64(默认) 0x65 / 0x66(可配置) |
典型应用
- 人体检测
- 接近传感器
- 运动检测
硬件概述
引脚定义
原理图
电源
AK9763工作在低工作电压--1.71~3.63V,因此我们使用XC6206P332MR芯片提供稳定的3.3V。XC6206P33的输入范围为1.8V到6.0V,因此您可以在3.3V和5V下与Arduino一起使用此模块。
双向电平转换电路
这是一个典型的双向电平转换电路,用于连接I2C总线的两个不同电压部分。该传感器的I2C总线使用3.3V,如果Arduino的I2C总线使用5V,则需要此电路。在上面的原理图中,Q1和Q2是N沟道MOSFET 2N7002A,充当双向开关。为了更好地理解这部分,您可以参考AN10441
支持的平台
Arduino | Raspberry Pi | |||
---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
上述支持的平台表示该模块的软件或理论兼容性。在大多数情况下,我们只为Arduino平台提供软件库或代码示例。我们无法为所有可能的MCU平台提供软件库/演示代码。因此,用户必须编写自己的软件库。
入门指南
与Arduino一起使用
硬件
所需材料
Seeeduino V4.2 | Base Shield | Grove - 人体存在传感器 (AK9753) |
---|---|---|
![]() | ![]() | ![]() |
立即购买 | 立即购买 | 立即购买 |
-
步骤1. 将Grove - 人体存在传感器 (AK9753) 连接到Grove-Base Shield的I2C端口。
-
步骤2. 将Grove - Base Shield插入Seeeduino。
-
步骤3. 通过USB线将Seeeduino连接到PC。
如果我们没有Grove Base Shield,我们也可以直接将此模块连接到Seeeduino,如下所示。
Seeeduino | Grove线缆 | Grove - 人体存在传感器 (AK9753) |
---|---|---|
GND | 黑色 | GND |
5V or 3.3V | 红色 | VCC |
SDA | 白色 | SDA |
SCL | 黄色 | SCL |
软件
如果这是您第一次使用Arduino,我们强烈建议您在开始之前先查看Arduino入门指南。
-
步骤1. 从Github下载Grove_Human_Presence_Sensor库。
-
步骤2. 参考如何安装库为Arduino安装库。
-
步骤3. 现在您可以在Arduino IDE中通过点击文件 --> 示例 --> Grove Human Presence Sensor Library找到四个演示
Example1-BasicReading: 此示例读取四个红外传感器的原始(uint16_t)数据,并在串口中打印这些原始数据。
Example2-PlotDiff: 读取原始数据并在串口绘图器中绘制。
Example3-DetectPresence: 检测红外物体的存在。
Example4-PlotMovement: 检测运动并在串口绘图器中绘制。
或者,在您计算机的文件夹C:XXXX\Arduino\libraries\Grove_Human_Presence_Sensor-master\examples中找到它们,XXXX是您安装Arduino IDE的位置。
- 步骤4. 选择一个演示,上传代码。如果您不知道如何上传代码,请查看如何上传代码。
现在让我们看看会发生什么:
Example1-BasicReading:
当您上传example1代码时,通过点击工具-> 串口监视器打开Arduino IDE的串口监视器。或者同时按++ctrl+shift+m++键。将波特率设置为9600。
您可以看到以下结果:
Grove - Human Presence Sensor example
1:[432], 2:[288], 3[248], 4:[384], temp[20.87], millis[109]
1:[424], 2:[296], 3[232], 4:[400], temp[20.87], millis[215]
1:[448], 2:[280], 3[224], 4:[360], temp[20.87], millis[319]
1:[424], 2:[280], 3[224], 4:[368], temp[20.87], millis[424]
1:[440], 2:[256], 3[248], 4:[376], temp[20.87], millis[530]
1:[440], 2:[280], 3[224], 4:[384], temp[20.75], millis[634]
1:[464], 2:[296], 3[216], 4:[392], temp[20.75], millis[740]
1:[416], 2:[288], 3[240], 4:[376], temp[20.75], millis[844]
1:[432], 2:[288], 3[216], 4:[392], temp[20.75], millis[950]
1:[440], 2:[296], 3[208], 4:[384], temp[20.75], millis[1055]
1:[424], 2:[248], 3[192], 4:[376], temp[20.75], millis[1160]
1:[432], 2:[264], 3[200], 4:[384], temp[20.75], millis[1265]
1:[440], 2:[248], 3[208], 4:[352], temp[20.75], millis[1371]
1:[400], 2:[256], 3[192], 4:[320], temp[20.75], millis[1475]
1:[368], 2:[208], 3[152], 4:[296], temp[20.75], millis[1581]
1:[608], 2:[384], 3[368], 4:[560], temp[20.75], millis[1686]
1:[1320], 2:[912], 3[736], 4:[960], temp[20.75], millis[1790]
1:[2168], 2:[1664], 3[1336], 4:[1752], temp[20.75], millis[1896]
1:[2544], 2:[2192], 3[2112], 4:[2376], temp[20.75], millis[2001]
1:[2536], 2:[2256], 3[2280], 4:[2520], temp[20.75], millis[2007]
1:[2144], 2:[2064], 3[2168], 4:[2328], temp[20.75], millis[2212]
1:[]
表示红外传感器1的测量数据,2:[]
表示红外传感器2的测量数据,3:[]
表示红外传感器3的测量数据,4:[]
表示红外传感器4的测量数据。所有这些参数值的范围从 -32767 ~ 32767。此参数反映检测到的红外光强度。红外强度越强,参数值越大。
temp[]
表示集成温度传感器的测量数据,范围从 -10℃ 到 +60℃。
millis[109]
表示程序启动以来的系统时间,由 Arduino 提供。
示例2-PlotDiff
当您上传示例2代码时,通过点击 工具-> 串口绘图器 打开 Arduino IDE 的 串口绘图器。或者同时按下 ++ctrl+shift+l++ 键。将波特率设置为 9600。
您可以看到以下结果:
此示例读取四个红外传感器的数据并将其转换为电流 (pA),然后将 diff13 和 diff24 绘制到 Arduino IDE 串口绘图器中。
diff13 = IR1 - IR3 // 蓝线
diff24 = IR2 - IR4 // 红线
示例3-DetectPresence
当您上传示例1代码时,通过点击 工具-> 串口监视器 打开 Arduino IDE 的 串口监视器。或者同时按下 ++ctrl+shift+m++ 键。将波特率设置为 9600。
您可以看到以下结果:
Grove - Human Presence Sensor example
o o x o millis: 16949
o x x o millis: 17050
x x x x millis: 17153
x x x x millis: 17254
x x x x millis: 17355
x x x x millis: 17457
此示例检测红外物体的存在。检测基于传感器值的导数。如果导数大于阈值,我们认为有红外物体进入了传感器的视野。每个通道的导数通过以下公式计算:
Δt 表示时间间隔,ΔIR1 表示红外传感器1在时间间隔内的输出值变化。
在输出中,O 表示未检测到,X 表示检测到。输出的顺序对应红外传感器的物理位置。
例如:
o o x o
表示第三个红外传感器检测到红外物体,其他传感器没有检测到(红外物体可能来自顶部)。您可以在 引脚定义 中找到红外传感器的物理位置
示例4-PlotMovement
当您上传示例4代码时,通过点击 工具-> 串口绘图器 打开 Arduino IDE 的 串口绘图器。或者同时按下 ++ctrl+shift+l++ 键。将波特率设置为 9600。
您可以看到以下结果:
检测基于 IR1_IR3 或 IR2_IR4 差值的导数。IR1_IR3 或 IR2_IR4 的导数通过以下公式计算:
图中每条曲线的含义是:(按顺序)
- diff13 // IR1-IR3,蓝线
- 1-3方向的运动 // derivativeIR1_IR3,红线
(一个脉冲,正脉冲表示从1到3,否则从3到1) - diff24 // IR2-IR4,绿线
- 2-4方向的运动 // derivativeIR1_IR3,橙线
(一个脉冲,正脉冲表示从2到4,否则从4到2)
原理图在线查看器
资源
-
[Zip] Seeed 人体存在传感器库
-
[PDF] AK9753 数据手册
-
[PDF] XC6206 数据手册
技术支持与产品讨论
感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。