C1001毫米波人体探测传感器

概 述

C1001毫米波人体检测传感器是一款采用60GHz工作频率的毫米波雷达,与普通24GHz毫米波只能检测存在、速度、距离不同C1001毫米波人体检测传感器可以实现更多精细的检测功能。

跌倒检测功能

C1001毫米波人体检测传感器达可以通过点云成像算法实现人体姿态识别,对平躺状态有准确探知;并进行精准生命探测,对跌倒状态、停留时间,身体静止驻留状态都有准确上报。

接口介绍

睡眠检测功能

C1001毫米波人体检测传感器可以实现对人体生物存在感知及人体运动感知,持续记录人体存在情况,根据睡眠过程中的身体运动幅度变化和呼吸心率变化,对目标的睡眠状态、呼吸心跳频率进行实时判断,在一段睡眠过程结束后输出睡眠评分,根据相关睡眠参数的输出结合到健康康养的应用上。

接口介绍

产品参数

尺寸图

尺寸图

接口定义

定义 说明
VIN 电源(5V)
GND
RX 传感器串口接收
TX 传感器串口发送
IO1 人存在状态电平输出(3.3V)
IO2 跌倒状态电平输出(3.3V)

安装方式

跌倒模式顶装

雷达模块波束覆盖范围如下图所示。雷达覆盖范围为水平100°、俯仰100°的立体扇形区域。

接口介绍

确保雷达探测准确性,请置顶安装!如下图所示。

接口介绍

注意:需要避开房间内排风扇/金属百叶窗/遮光涂层窗帘等运动的物体

睡眠模式

雷达波束覆盖范围如下图所示。雷达覆盖范围为水平40°、俯仰40°的立体扇形区域。

接口介绍

在雷达探测范围内,为了满足人体存在以及睡眠呼吸心跳稳定探测,在雷达安装上有一定的安装要求。

  1. 雷达安装朝向:要求雷达朝向如下;
接口介绍
  1. 倾斜安装(向下倾角30~45°);
接口介绍

演示例程

存在信息获取

准备

接线图

毫米波 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);
}

结果

例程1结果

睡眠信息获取

准备

接线图

毫米波 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);
}

结果

例程1结果

跌倒信息获取

准备

接线图

毫米波 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);
}

结果

例程1结果

常见问题

还没有客户对此产品有任何问题,欢迎通过 qq 或者论坛联系我们! 更多问题及有趣的应用,可以访问论坛进行查阅或发帖

DFRobot 商城购买链接