概 述
C1001毫米波人体检测传感器是一款采用60GHz工作频率的毫米波雷达,与普通24GHz毫米波只能检测存在、速度、距离不同C1001毫米波人体检测传感器可以实现更多精细的检测功能。
跌倒检测功能
C1001毫米波人体检测传感器达可以通过点云成像算法实现人体姿态识别,对平躺状态有准确探知;并进行精准生命探测,对跌倒状态、停留时间,身体静止驻留状态都有准确上报。
睡眠检测功能
C1001毫米波人体检测传感器可以实现对人体生物存在感知及人体运动感知,持续记录人体存在情况,根据睡眠过程中的身体运动幅度变化和呼吸心率变化,对目标的睡眠状态、呼吸心跳频率进行实时判断,在一段睡眠过程结束后输出睡眠评分,根据相关睡眠参数的输出结合到健康康养的应用上。
产品参数
- 工作电压:5V
- 工作电流:≤100mA
- 工作频率:61~61.5Hz
- 发射功率:6dBm
- 最远探测距离:11m
- 雷达探测角度:100×100度
- 工作温度:-20~60℃
- 睡眠探测距离(胸腔):0.4-2.5m
- 呼吸心跳探测距离(胸腔):0.4-1.5m
- 呼吸测量精度:90%
- 呼吸测量范围:10-25次/分钟
- 心跳测量精度:80%
- 心跳测量范围:60-100次/分钟
尺寸图
接口定义
定义 | 说明 |
---|---|
VIN | 电源(5V) |
GND | 地 |
RX | 传感器串口接收 |
TX | 传感器串口发送 |
IO1 | 人存在状态电平输出(3.3V) |
IO2 | 跌倒状态电平输出(3.3V) |
安装方式
跌倒模式顶装
雷达模块波束覆盖范围如下图所示。雷达覆盖范围为水平100°、俯仰100°的立体扇形区域。
确保雷达探测准确性,请置顶安装!如下图所示。
注意:需要避开房间内排风扇/金属百叶窗/遮光涂层窗帘等运动的物体
睡眠模式
雷达波束覆盖范围如下图所示。雷达覆盖范围为水平40°、俯仰40°的立体扇形区域。
在雷达探测范围内,为了满足人体存在以及睡眠呼吸心跳稳定探测,在雷达安装上有一定的安装要求。
- 雷达安装朝向:要求雷达朝向如下;
- 倾斜安装(向下倾角30~45°);
演示例程
存在信息获取
准备
硬件
软件
Arduino IDE,点击下载Arduino IDE
DFRobot_HumanDetection库,点击下载DFRobot_HumanDetection库
如何安装库文件,点击链接
接线图
毫米波 | Arduino Uno |
---|---|
VIN | 5V |
GND | GND |
RX | D4 |
TX | D3 |
样例代码
复制以下代码到您的Arduino IDE中并上传。
/**!
* @file basics.ino
* @brief 这是人体毫米波雷达的基础使用例程
* @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
* @license The MIT License (MIT)
* @author [tangjie](jie.tang@dfrobot.com)
* @version V1.0
* @date 2024-06-03
* @url https://github.com/DFRobot/DFRobot_HumanDetection
*/
#include "DFRobot_HumanDetection.h"
DFRobot_HumanDetection hu(&Serial1);
void setup()
{
Serial.begin(115200);
// Serial.println(1000);
Serial1.begin(115200, SERIAL_8N1, 4, 5);
while (hu.begin() != 0)
{
Serial.println("init error!!!");
delay(1000);
}
Serial.println("init success");
delay(100);
while (hu.configWorkMode(hu.eSleepMode) != 0)
{
Serial.println("init error!!!");
delay(1000);
}
Serial.println("init success");
Serial.print("工作模式:");
switch (hu.getWorkMode())
{
case 1:
Serial.println("跌倒模式");
break;
case 2:
Serial.println("睡眠模式");
break;
default:
Serial.println("读取错误");
}
hu.configLEDLight(hu.eHPLed, 1); // 设置HP LED开关
Serial.print("HP LED状态:");
switch (hu.getLEDLightState(hu.eHPLed))
{
case 0:
Serial.println("关");
break;
case 1:
Serial.println("开");
break;
default:
Serial.println("读取错误");
}
Serial.println();
Serial.println();
}
void loop()
{
Serial.print("存在信息:");
switch (hu.smHumanData(hu.eHumanPresence))
{
case 0:
Serial.println("无人存在");
break;
case 1:
Serial.println("有人存在");
break;
default:
Serial.println("读取错误");
}
Serial.print("运动信息:");
switch (hu.smHumanData(hu.eHumanMovement))
{
case 0:
Serial.println("无");
break;
case 1:
Serial.println("静止");
break;
case 2:
Serial.println("活跃");
break;
default:
Serial.println("读取错误");
}
Serial.printf("体动参数:%d\n", hu.smHumanData(hu.eHumanMovingRange));
Serial.printf("呼吸频率:%d\n", hu.getBreatheValue());
Serial.printf("心跳频率:%d\n", hu.gitHeartRate());
Serial.println();
delay(1000);
}
结果
睡眠信息获取
准备
硬件
软件
Arduino IDE,点击下载Arduino IDE
DFRobot_HumanDetection库,点击下载DFRobot_HumanDetection库
如何安装库文件,点击链接
接线图
毫米波 | Arduino Uno |
---|---|
VIN | 5V |
GND | GND |
RX | D4 |
TX | D3 |
样例代码
复制以下代码到您的Arduino IDE中并上传。
/**!
* @file sleep.ino
* @brief 这是人体毫米波雷达的睡眠检测示例
* @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
* @license The MIT License (MIT)
* @author [tangjie](jie.tang@dfrobot.com)
* @version V1.0
* @date 2024-06-03
* @url https://github.com/DFRobot/DFRobot_HumanDetection
*/
#include "DFRobot_HumanDetection.h"
DFRobot_HumanDetection hu(&Serial1);
void setup()
{
Serial.begin(115200);
Serial.println(1000);
Serial1.begin(115200, SERIAL_8N1, 4, 5);
while (hu.begin() != 0)
{
Serial.println("init error!!!");
delay(1000);
}
Serial.println("init success");
delay(100);
while (hu.configWorkMode(hu.eSleepMode) != 0)
{
Serial.println("init error!!!");
delay(1000);
}
Serial.println("init success");
Serial.print("工作模式:");
switch (hu.getWorkMode())
{
case 1:
Serial.println("跌倒模式");
break;
case 2:
Serial.println("睡眠模式");
break;
default:
Serial.println("读取错误");
}
hu.configLEDLight(hu.eHPLed, 1); // 设置HP LED开关
Serial.print("HP LED状态:");
switch (hu.getLEDLightState(hu.eHPLed))
{
case 0:
Serial.println("关");
break;
case 1:
Serial.println("开");
break;
default:
Serial.println("读取错误");
}
Serial.println();
Serial.println();
}
void loop()
{
Serial.print("入床状态:");
switch (hu.smSleepData(hu.eInOrNotInBed))
{
case 0:
Serial.println("离床");
break;
case 1:
Serial.println("入床");
break;
default:
Serial.println("读取错误");
}
Serial.print("睡眠状态:");
switch (hu.smSleepData(hu.eSleepState))
{
case 0:
Serial.println("深睡");
break;
case 1:
Serial.println("浅睡");
break;
case 2:
Serial.println("清醒");
break;
case 3:
Serial.println("无");
break;
default:
Serial.println("读取错误");
}
Serial.printf("清醒时长:%d\n", hu.smSleepData(hu.eWakeDuration));
Serial.printf("深睡时长:%d\n", hu.smSleepData(hu.eDeepSleepDuration));
Serial.printf("睡眠质量评分:%d\n", hu.smSleepData(hu.eSleepQuality));
sSleepComposite qwe = hu.getSleepComposite();
Serial.println("睡眠综合状态:{");
Serial.print("\t存在状态:");
switch (qwe.presence)
{
case 0:
Serial.println("无人");
break;
case 1:
Serial.println("有人");
break;
default:
Serial.println("读取错误");
}
Serial.print("\t睡眠状态:");
switch (qwe.sleepState)
{
case 0:
Serial.println("深睡");
break;
case 1:
Serial.println("浅睡");
break;
case 2:
Serial.println("清醒");
break;
case 3:
Serial.println("无");
break;
default:
Serial.println("读取错误");
}
Serial.printf("\t平均呼吸频率:%d\n", qwe.averageRespiration);
Serial.printf("\t平均心跳频率:%d\n", qwe.averageHeartbeat);
Serial.printf("\t翻身次数:%d\n", qwe.turnoverNumber);
Serial.printf("\t大幅体动占比:%d\n", qwe.largeBodyMove);
Serial.printf("\t小幅体动占比:%d\n", qwe.minorBodyMove);
Serial.printf("\t呼吸暂停次数:%d\n", qwe.apneaEvents);
Serial.println("}");
Serial.print("睡眠异常:");
switch (hu.smSleepData(hu.eSleepDisturbances))
{
case 0:
Serial.println("睡眠时长不足4小时");
break;
case 1:
Serial.println("睡眠时长大于12小时");
break;
case 2:
Serial.println("长时间异常无人");
break;
case 3:
Serial.println("无");
break;
default:
Serial.println("读取错误");
}
sSleepStatistics abc = hu.getSleepStatistics(); //这个接口有问题
Serial.println("睡眠统计:{");
Serial.printf("\t睡眠质量评分:%d\n", abc.sleepQualityScore);
Serial.printf("\t睡眠总时长:%d\n", abc.sleepTime);
Serial.print("睡眠质量评级:");
switch (hu.smSleepData(hu.eSleepQualityRating))
{
case 0:
Serial.println("无");
break;
case 1:
Serial.println("睡眠质量良好");
break;
case 2:
Serial.println("睡眠质量一般");
break;
case 3:
Serial.println("睡眠质量较差");
break;
default:
Serial.println("读取错误");
}
Serial.print("异常挣扎状态:");
switch (hu.smSleepData(hu.eAbnormalStruggle))
{
case 0:
Serial.println("无");
break;
case 1:
Serial.println("正常状态");
break;
case 2:
Serial.println("异常挣扎状态");
break;
default:
Serial.println("读取错误");
}
Serial.println();
Serial.println();
delay(1000);
}
结果
跌倒信息获取
准备
硬件
软件
Arduino IDE,点击下载Arduino IDE
DFRobot_HumanDetection库,点击下载DFRobot_HumanDetection库
如何安装库文件,点击链接
接线图
毫米波 | Arduino Uno |
---|---|
VIN | 5V |
GND | GND |
RX | D4 |
TX | D3 |
样例代码
复制以下代码到您的Arduino IDE中并上传。
/**!
* @file tumble.ino
* @brief 这是人体毫米波雷达的跌倒检测示例
* @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com)
* @license The MIT License (MIT)
* @author [tangjie](jie.tang@dfrobot.com)
* @version V1.0
* @date 2024-06-03
* @url https://github.com/DFRobot/DFRobot_HumanDetection
*/
#include "DFRobot_HumanDetection.h"
DFRobot_HumanDetection hu(&Serial1);
void setup()
{
Serial.begin(115200);
Serial.println(1000);
Serial1.begin(115200, SERIAL_8N1, 4, 5);
while (hu.begin() != 0)
{
Serial.println("init error!!!");
delay(1000);
}
Serial.println("init success");
delay(100);
while (hu.configWorkMode(hu.eSleepMode) != 0)
{
Serial.println("init error!!!");
delay(1000);
}
Serial.println("init success");
Serial.print("工作模式:");
switch (hu.getWorkMode())
{
case 1:
Serial.println("跌倒模式");
break;
case 2:
Serial.println("睡眠模式");
break;
default:
Serial.println("读取错误");
}
hu.configLEDLight(hu.eHPLed, 1); // 设置HP LED开关
Serial.print("HP LED状态:");
switch (hu.getLEDLightState(hu.eHPLed))
{
case 0:
Serial.println("关");
break;
case 1:
Serial.println("开");
break;
default:
Serial.println("读取错误");
}
Serial.println();
Serial.println();
}
void loop()
{
Serial.print("入床状态:");
switch (hu.smSleepData(hu.eInOrNotInBed))
{
case 0:
Serial.println("离床");
break;
case 1:
Serial.println("入床");
break;
default:
Serial.println("读取错误");
}
Serial.print("睡眠状态:");
switch (hu.smSleepData(hu.eSleepState))
{
case 0:
Serial.println("深睡");
break;
case 1:
Serial.println("浅睡");
break;
case 2:
Serial.println("清醒");
break;
case 3:
Serial.println("无");
break;
default:
Serial.println("读取错误");
}
Serial.printf("清醒时长:%d\n", hu.smSleepData(hu.eWakeDuration));
Serial.printf("深睡时长:%d\n", hu.smSleepData(hu.eDeepSleepDuration));
Serial.printf("睡眠质量评分:%d\n", hu.smSleepData(hu.eSleepQuality));
sSleepComposite qwe = hu.getSleepComposite();
Serial.println("睡眠综合状态:{");
Serial.print("\t存在状态:");
switch (qwe.presence)
{
case 0:
Serial.println("无人");
break;
case 1:
Serial.println("有人");
break;
default:
Serial.println("读取错误");
}
Serial.print("\t睡眠状态:");
switch (qwe.sleepState)
{
case 0:
Serial.println("深睡");
break;
case 1:
Serial.println("浅睡");
break;
case 2:
Serial.println("清醒");
break;
case 3:
Serial.println("无");
break;
default:
Serial.println("读取错误");
}
Serial.printf("\t平均呼吸频率:%d\n", qwe.averageRespiration);
Serial.printf("\t平均心跳频率:%d\n", qwe.averageHeartbeat);
Serial.printf("\t翻身次数:%d\n", qwe.turnoverNumber);
Serial.printf("\t大幅体动占比:%d\n", qwe.largeBodyMove);
Serial.printf("\t小幅体动占比:%d\n", qwe.minorBodyMove);
Serial.printf("\t呼吸暂停次数:%d\n", qwe.apneaEvents);
Serial.println("}");
Serial.print("睡眠异常:");
switch (hu.smSleepData(hu.eSleepDisturbances))
{
case 0:
Serial.println("睡眠时长不足4小时");
break;
case 1:
Serial.println("睡眠时长大于12小时");
break;
case 2:
Serial.println("长时间异常无人");
break;
case 3:
Serial.println("无");
break;
default:
Serial.println("读取错误");
}
sSleepStatistics abc = hu.getSleepStatistics(); //这个接口有问题
Serial.println("睡眠统计:{");
Serial.printf("\t睡眠质量评分:%d\n", abc.sleepQualityScore);
Serial.printf("\t睡眠总时长:%d\n", abc.sleepTime);
Serial.print("睡眠质量评级:");
switch (hu.smSleepData(hu.eSleepQualityRating))
{
case 0:
Serial.println("无");
break;
case 1:
Serial.println("睡眠质量良好");
break;
case 2:
Serial.println("睡眠质量一般");
break;
case 3:
Serial.println("睡眠质量较差");
break;
default:
Serial.println("读取错误");
}
Serial.print("异常挣扎状态:");
switch (hu.smSleepData(hu.eAbnormalStruggle))
{
case 0:
Serial.println("无");
break;
case 1:
Serial.println("正常状态");
break;
case 2:
Serial.println("异常挣扎状态");
break;
default:
Serial.println("读取错误");
}
Serial.println();
Serial.println();
delay(1000);
}
结果
常见问题
还没有客户对此产品有任何问题,欢迎通过 qq 或者论坛联系我们! 更多问题及有趣的应用,可以访问论坛进行查阅或发帖