331浏览
查看: 331|回复: 26

[项目] 【花雕】168种系列实验(217)---C4002 毫米波人体存在模块

[复制链接]
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器执行器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百一十七:C4002 毫米波运动与静态存在检测模块人体存在传感器

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块图1

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块图2

驴友花雕  高级技神
 楼主|

发表于 2026-5-24 10:21:27

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百一十七:C4002 毫米波运动与静态存在检测模块人体存在传感器
案例一:使用DFRobot_C4002库来获取C4002传感器的所有结果

  1. /*
  2. 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3. 实验二百一十七:C4002 毫米波运动与静态存在检测模块人体存在传感器
  4. 案例一:使用DFRobot_C4002库来获取C4002传感器的所有结果
  5. */
  6. // 引入DFRobot C4002毫米波雷达传感器的驱动库头文件
  7. #include "DFRobot_C4002.h"
  8. /* ---------------------------------------------------------------------------------------------------------------------
  9.   * 硬件接线对照表(不同开发板引脚对应关系)
  10.   *    开发板   |             MCU                | Leonardo/Mega2560/M0 |    UNO    | ESP8266 | ESP32 |  microbit  |   m0  |
  11.   *     VCC    |              5V                |         5V           |     5V    |    5V   |   5V  |     X      |   5V  |
  12.   *     GND    |              GND               |        GND           |    GND    |   GND   |  GND  |     X      |  GND  |
  13.   *     RX     |              TX                |     Serial1 TX1      |     5     |   5/D6  | 25/D2 |     X      |  tx1  |
  14.   *     TX     |              RX                |     Serial1 RX1      |     4     |   4/D7  | 26/D3 |     X      |  rx1  |
  15.   * ----------------------------------------------------------------------------------------------------------------------
  16.   * 说明:
  17.   * 1. 传感器的 RX 接开发板的 TX
  18.   * 2. 传感器的 TX 接开发板的 RX
  19.   * 3. 波特率可以通过代码修改
  20.   */
  21. /*
  22. 根据不同开发板自动选择串口方式初始化C4002传感器
  23. 1. ESP8266 / UNO:使用软件模拟串口(SoftwareSerial)
  24. 2. ESP32:使用硬件串口1,指定收发引脚
  25. 3. 其他开发板:直接使用硬件串口1
  26. */
  27. #if defined(ESP8266) || defined(ARDUINO_AVR_UNO)
  28. // 软件串口:RX=4, TX=5(对应传感器TX、RX)
  29. SoftwareSerial mySerial(4, 5);
  30. // 创建C4002对象,绑定软件串口,波特率115200
  31. DFRobot_C4002  c4002(&mySerial, 115200);
  32. #elif defined(ESP32)
  33. // ESP32 使用硬件串口1,指定引脚:RX=D2, TX=D3
  34. DFRobot_C4002 c4002(&Serial1, 115200, /*D2*/ D2, /*D3*/ D3);
  35. #else
  36. // 其他板子(Mega/M0等)直接使用硬件串口1
  37. DFRobot_C4002 c4002(&Serial1, 115200);
  38. #endif
  39. // 初始化函数,只运行一次
  40. void setup()
  41. {
  42.   // 初始化USB串口,用于电脑串口监视器打印调试信息
  43.   Serial.begin(115200);
  44.   // ===================== 1. 初始化C4002传感器 =====================
  45.   // 循环等待传感器初始化成功,失败则每秒重试一次
  46.   while (c4002.begin() != true) {
  47.     Serial.println("C4002 begin failed!");
  48.     delay(1000);
  49.   }
  50.   Serial.println("C4002 begin success!");
  51.   delay(50);  // 短暂延时,保证指令稳定执行
  52.   // ===================== 2. 关闭传感器运行指示灯 =====================
  53.   if (c4002.setRunLedState(eLedOff)) {
  54.     Serial.println("Set run led success!");
  55.   } else {
  56.     Serial.println("Set run led failed!");
  57.   }
  58.   delay(50);
  59.   // ===================== 3. 关闭传感器输出指示灯 =====================
  60.   if (c4002.setOutLedState(eLedOff)) {
  61.     Serial.println("Set out led success!");
  62.   } else {
  63.     Serial.println("Set out led failed!");
  64.   }
  65.   delay(50);
  66.   // ===================== 4. 设置距离门分辨率模式 =====================
  67.   // 设置为 80cm 分辨率模式
  68.   if (c4002.setResolutionMode(eResolution80Cm)) {
  69.     Serial.println("Set resolution mode success!");
  70.   } else {
  71.     Serial.println("Set resolution mode failed!");
  72.   }
  73.   delay(50);
  74.   /**
  75.    * 分辨率模式说明:
  76.    * 1. eResolution80Cm:距离门分辨率80cm
  77.    *    最多支持15个距离门,最大检测距离11.6米
  78.    * 2. eResolution20Cm:距离门分辨率20cm
  79.    *    最多支持25个距离门,最大检测距离4.9米
  80.   */
  81.   // ===================== 5. 设置检测距离范围 =====================
  82.   // 最近距离 0cm,最远距离 1100cm(11米)
  83.   uint16_t clostRange = 0;
  84.   uint16_t farRange   = 1100;
  85.   // 设置有效检测区间,超出区间不触发检测
  86.   if (c4002.setDetectRange(clostRange, farRange)) {    // 最大支持 0-1100cm
  87.     Serial.println("Set detect range success!");
  88.   } else {
  89.     Serial.println("Set detect range failed!");
  90.   }
  91.   delay(50);
  92.   // ===================== 6. 设置光照阈值 =====================
  93.   // 设置为 0 lux,范围 0-50 lux
  94.   // 用于光照联动触发(可选功能)
  95.   if (c4002.setLightThresh(0)) {
  96.     Serial.println("Set light threshold success!");
  97.   } else {
  98.     Serial.println("Set light threshold failed!");
  99.   }
  100.   delay(50);
  101.   /**
  102.    * 手动设置距离门阈值(注释备用)
  103.    * 说明:
  104.    *   如果自动环境校准效果不好,可以手动设置每个距离门的灵敏度阈值
  105.    *   数值范围 0-99,越大越灵敏
  106.   */
  107.   // // 80cm分辨率模式下共15个距离门
  108.   // uint8_t presenceThreshold[15] = { 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50 };
  109.   // uint8_t motionThreshold[15]  = { 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50 };
  110.   // // 设置存在检测阈值
  111.   // if (c4002.setGateThresh(ePresenceDistGate, presenceThreshold)) {
  112.   //   Serial.println("Set presence gate threshold success!");
  113.   // } else {
  114.   //   Serial.println("Set presence gate threshold failed!");
  115.   // }
  116.   // delay(50);
  117.   // // 设置运动检测阈值
  118.   // if (c4002.setGateThresh(eMotionDistGate, motionThreshold)) {
  119.   //   Serial.println("Set motion gate threshold success!");
  120.   // } else {
  121.   //   Serial.println("Set motion gate threshold failed!");
  122.   // }
  123.   // delay(50);
  124.   // ===================== 7. 启用所有距离门 =====================
  125.   // 80cm分辨率 = 15个距离门,全部启用
  126.   // C4002_DISABLE = 关闭距离门;C4002_ENABLE = 开启距离门
  127.   uint8_t gateState[15] = { C4002_ENABLE, C4002_ENABLE, C4002_ENABLE, C4002_ENABLE, C4002_ENABLE, C4002_ENABLE, C4002_ENABLE, C4002_ENABLE, C4002_ENABLE, C4002_ENABLE, C4002_ENABLE, C4002_ENABLE, C4002_ENABLE, C4002_ENABLE, C4002_ENABLE };
  128.   
  129.   // 启用【运动检测】距离门
  130.   if (c4002.configureGate(eMotionDistGate, gateState)) {
  131.     Serial.println("Enable motion distance gate success!");
  132.   }
  133.   delay(50);
  134.   
  135.   // 启用【静态存在检测】距离门
  136.   if (c4002.configureGate(ePresenceDistGate, gateState)) {
  137.     Serial.println("Enable presence distance gate success!");
  138.   }
  139.   delay(50);
  140.   // ===================== 8. 设置目标消失延时 =====================
  141.   // 目标离开后,延时1秒才判定为无人
  142.   // 范围:0~65535 秒
  143.   if (c4002.setTargetDisappearDelay(1)) {
  144.     Serial.println("Set target disappear delay time success!");
  145.   } else {
  146.     Serial.println("Set target disappear delay time failed!");
  147.   }
  148.   delay(50);
  149.   // ===================== 9. 设置数据上报周期 =====================
  150.   // 上报周期 = 10 × 0.1秒 = 1秒
  151.   // 即传感器每1秒输出一次检测数据
  152.   if (c4002.setReportPeriod(10)) {
  153.     Serial.println("Set report period success!");
  154.   } else {
  155.     Serial.println("Set report period failed!");
  156.   }
  157.   /* 注意:必须设置上报周期,传感器才会输出校准和所有检测数据 */
  158. }
  159. // 主循环,反复执行
  160. void loop()
  161. {
  162.   // ===================== 获取传感器所有数据 =====================
  163.   // 获取一帧完整的传感器结果数据
  164.   sRetResult_t retResult = c4002.getNoteInfo();
  165.   // 判断是否收到有效结果数据
  166.   if (retResult.noteType == eResult) {
  167.     Serial.println("------- Get all results --------");
  168.     // 1. 获取环境光照强度(单位:lux)
  169.     float light = c4002.getLightIntensity();
  170.     Serial.print("Light: ");
  171.     Serial.print(light);
  172.     Serial.println(" lux");
  173.     // 2. 获取目标状态:无人 / 静态存在 / 运动
  174.     eTargetState_t targetState = c4002.getTargetState();
  175.     Serial.print("Target state: ");
  176.     if (targetState == eNoTarget) {
  177.       Serial.println("No Target");          // 无人
  178.     } else if (targetState == ePresence) {
  179.       Serial.println("Static Presence");    // 静态存在(睡觉/静坐)
  180.     } else if (targetState == eMotion) {
  181.       Serial.println("Motion");             // 运动(走动/挥手)
  182.     }
  183.     // 3. 获取存在检测倒计时(剩余多少秒判定无人)
  184.     uint16_t presenceGateCount = c4002.getPresenceCountDown();
  185.     Serial.print("Presence distance gate count down: ");
  186.     Serial.print(presenceGateCount);
  187.     Serial.println(" s");
  188.     // 4. 获取静态存在目标信息:距离 + 能量值
  189.     sPresenceTarget_t presenceTarget = c4002.getPresenceTargetInfo();
  190.     Serial.print("Presence distance: ");
  191.     Serial.print(presenceTarget.distance);
  192.     Serial.println(" m");
  193.     Serial.print("Presence energy: ");
  194.     Serial.println(presenceTarget.energy);
  195.     // 5. 获取运动目标信息:距离 + 能量 + 速度 + 方向
  196.     sMotionTarget_t motionTarget = c4002.getMotionTargetInfo();
  197.     Serial.print("Motion distance: ");
  198.     Serial.print(motionTarget.distance);
  199.     Serial.println(" m");
  200.     Serial.print("Motion energy: ");
  201.     Serial.println(motionTarget.energy);
  202.     Serial.print("Motion speed: ");
  203.     Serial.print(motionTarget.speed);
  204.     Serial.println(" m/s");
  205.    
  206.     // 判断运动方向:远离 / 无方向 / 靠近
  207.     Serial.print("Motion direction: ");
  208.     if (motionTarget.direction == eAway) {
  209.       Serial.println("Away!");            // 远离
  210.     } else if (motionTarget.direction == eNoDirection) {
  211.       Serial.println("No Direction!");     // 无方向
  212.     } else if (motionTarget.direction == eApproaching) {
  213.       Serial.println("Approaching!");      // 靠近
  214.     }
  215.     Serial.println("--------------------------------");
  216.   }
  217.   delay(50);  // 小延时,保证串口稳定
  218. }
复制代码


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-5-24 14:11:23

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百一十七:C4002 毫米波运动与静态存在检测模块人体存在传感器
案例三:使用DFRobot_C4002库进行系列环境自动校准

  1. /*
  2. 【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3. 实验二百一十七:C4002 毫米波运动与静态存在检测模块人体存在传感器
  4. 案例三:使用DFRobot_C4002库进行系列环境自动校准
  5. */
  6. // 包含C4002毫米波雷达驱动库
  7. #include "DFRobot_C4002.h"
  8. /* ---------------------------------------------------------------------------------------------------------------------
  9.   * 硬件接线对照表(模块 ↔ 开发板)
  10.   *    开发板     |             功能                | Leonardo/Mega2560 |    UNO    | ESP8266 | ESP32 |
  11.   *     VCC      |              5V供电              |        5V         |     5V    |    5V   |   5V  |
  12.   *     GND      |              地线                |        GND        |    GND    |   GND   |  GND  |
  13.   *     RX       |           模块接收              |    Serial1 TX1    |     5     |    5    |  GPIO25/D2 |
  14.   *     TX       |           模块发送              |    Serial1 RX1    |     4     |    4    |  GPIO26/D3 |
  15.   * ----------------------------------------------------------------------------------------------------------------------
  16.   * 注意:
  17.   * 1. 模块RX → 开发板TX
  18.   * 2. 模块TX → 开发板RX
  19.   * 3. 波特率可自行修改
  20.   */
  21. /* 根据不同开发板,自动选择串口方式 */
  22. // 如果是ESP8266 或 Arduino UNO,使用软件串口
  23. #if defined(ESP8266) || defined(ARDUINO_AVR_UNO)
  24. SoftwareSerial mySerial(4, 5);                // 定义软件串口,RX=4,TX=5
  25. DFRobot_C4002  c4002(&mySerial, 115200);      // 绑定软件串口,波特率115200
  26. // 如果是ESP32,使用硬件串口1,指定引脚
  27. #elif defined(ESP32)
  28. DFRobot_C4002 c4002(&Serial1, 115200, D2, D3); // ESP32: Serial1, RX=D2(GPIO26), TX=D3(GPIO25)
  29. // 其他板子(Mega/M0)使用硬件串口1
  30. #else
  31. DFRobot_C4002 c4002(&Serial1, 115200);
  32. #endif
  33. // 功能函数:打印距离门阈值(用于调试查看校准后的灵敏度参数)
  34. // gateData:阈值数组  n:门数量
  35. void printDoorThreshold(uint8_t *gateData, uint8_t n)
  36. {
  37.   // 打印门序号
  38.   Serial.print("Index:\t");
  39.   for (int i = 0; i < n; i++) {
  40.     Serial.print(i + 1);
  41.     Serial.print('\t');
  42.   }
  43.   Serial.println();
  44.   
  45.   // 打印每个门的阈值数值
  46.   Serial.print("Value:\t");
  47.   for (int i = 0; i < n; i++) {
  48.     Serial.print(gateData[i]);
  49.     Serial.print('\t');
  50.   }
  51.   Serial.println();
  52. }
  53. // 初始化函数,只执行一次
  54. void setup()
  55. {
  56.   // 开启USB串口,用于电脑监视器输出调试信息,波特率115200
  57.   Serial.begin(115200);
  58.   // ===================== 初始化C4002传感器 =====================
  59.   // 循环重试,直到传感器连接成功
  60.   while (c4002.begin() != true) {
  61.     Serial.println("C4002 begin failed!");
  62.     delay(1000);
  63.   }
  64.   Serial.println("C4002 begin success!");
  65.   // ===================== 设置运行指示灯常亮 =====================
  66.   if (c4002.setRunLedState(eLedOn)) {
  67.     Serial.println("Set run led success!");
  68.   } else {
  69.     Serial.println("Set run led failed!");
  70.   }
  71.   delay(50);
  72.   // ===================== 设置输出指示灯常亮 =====================
  73.   if (c4002.setOutLedState(eLedOn)) {
  74.     Serial.println("Set out led success!");
  75.   } else {
  76.     Serial.println("Set out led failed!");
  77.   }
  78.   delay(3000);  // 等待3秒,让传感器稳定
  79.   // ===================== 设置数据上报周期:1秒上报一次 =====================
  80.   // 10 = 10 × 0.1秒 = 1秒
  81.   if (c4002.setReportPeriod(10)) {
  82.     Serial.println("Set report period success!");
  83.   } else {
  84.     Serial.println("Set report period failed!");
  85.   }
  86.   /* 重要:必须设置上报周期,校准和数据获取才能正常工作 */
  87.   // ===================== 启动环境自动校准 =====================
  88.   // 参数1:预热延时 10秒
  89.   // 参数2:校准时间 30秒
  90.   c4002.startEnvCalibration(10, 30);
  91.   Serial.println("Start environmental calibration:");
  92.   
  93.   /**
  94.    * 环境校准重要说明:
  95.    * 1. 整个校准过程大约30秒,前面有10秒延时准备
  96.    * 2. 校准必须在【空旷、无人】的区域进行
  97.    * 3. 校准期间,传感器正前方不能有人活动,否则会影响精度
  98.    * 4. 校准成功后,雷达会自动适应环境,误触率大幅降低
  99.    */
  100. }
  101. // 主循环,反复执行
  102. void loop()
  103. {
  104.   uint8_t           gateData[25] = { 0 };  // 存储距离门阈值数据,最多25个
  105.   eResolutionMode_t resolutionMode;        // 存储分辨率模式(80cm/20cm)
  106.   
  107.   // 获取雷达返回的信息(包含校准状态、数据等)
  108.   sRetResult_t retResult = c4002.getNoteInfo();
  109.   // 判断当前信息类型:环境校准信息
  110.   if (retResult.noteType == eCalibration) {
  111.     // 打印校准倒计时
  112.     Serial.print("Calibration countdown:");
  113.     Serial.print(retResult.calibCountdown);
  114.     Serial.println(" s");
  115.     // 倒计时为0 = 校准完成
  116.     if (retResult.calibCountdown == 0) {
  117.       // 获取当前雷达分辨率模式
  118.       resolutionMode = c4002.getResolutionMode();
  119.       
  120.       // 80cm分辨率 = 15个门;20cm分辨率 = 25个门
  121.       int n = resolutionMode == eResolution80Cm ? 15 : 25;
  122.       
  123.       Serial.println("************Environmental Calibration Complete****************");
  124.       
  125.       // 获取并打印【运动检测】距离门阈值
  126.       if (c4002.getDistanceGateThresh(eMotionDistGate, gateData)) {
  127.         Serial.println("Motion distance gate threshold:");
  128.         printDoorThreshold(gateData, n);
  129.       } else {
  130.         Serial.println("Get motion distance failed!");
  131.       }
  132.       // 获取并打印【静态存在检测】距离门阈值
  133.       if (c4002.getDistanceGateThresh(ePresenceDistGate, gateData)) {
  134.         Serial.println("Presence distance gate threshold:");
  135.         printDoorThreshold(gateData, n);
  136.       } else {
  137.         Serial.println("Get presence distance failed!");
  138.       }
  139.       
  140.       Serial.println("**************************************************************");
  141.     }
  142.   }
  143. }
复制代码


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-5-24 15:58:07

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百一十七:C4002 毫米波运动与静态存在检测模块人体存在传感器
  案例八:C4002毫米波雷达 —— 读取并打印传感器的全部当前配置参数

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二百一十七:C4002 毫米波运动与静态存在检测模块人体存在传感器
  4.   案例八:C4002毫米波雷达 —— 读取并打印传感器的全部当前配置参数
  5. */
  6. // 包含C4002毫米波雷达驱动库
  7. #include "DFRobot_C4002.h"
  8. /* ---------------------------------------------------------------------------------------------------------------------
  9.   * 硬件接线对照表(模块 ↔ 各类开发板)
  10.   *    模块    |      功能说明            | Mega2560  |   UNO   | ESP8266 |   ESP32   |
  11.   *     VCC    |        5V 供电           |    5V     |   5V    |   5V    |    5V     |
  12.   *     GND    |         地线             |   GND     |   GND   |   GND   |    GND    |
  13.   *     RX     |    模块接收 → 板载 TX     | Serial1 TX1 |   D5   |   D5    |  GPIO25/D2 |
  14.   *     TX     |    模块发送 → 板载 RX     | Serial1 RX1 |   D4   |   D4    |  GPIO26/D3 |
  15.   * ----------------------------------------------------------------------------------------------------------------------
  16.   * 注意:
  17.   * 1. 模块RX 必须接 开发板TX
  18.   * 2. 模块TX 必须接 开发板RX
  19.   * 3. 串口波特率可修改
  20.   */
  21. /* 根据不同开发板自动选择串口方式 */
  22. // 如果是 ESP8266 或 Arduino UNO,使用软件串口
  23. #if defined(ESP8266) || defined(ARDUINO_AVR_UNO)
  24. SoftwareSerial mySerial(4, 5);                // 定义软件串口:UNO的RX=4,TX=5
  25. DFRobot_C4002  c4002(&mySerial, 115200);      // 创建C4002对象,绑定软件串口
  26. // 如果是 ESP32,使用硬件串口1
  27. #elif defined(ESP32)
  28. DFRobot_C4002 c4002(&Serial1, 115200, D2, D3); // ESP32 硬件串口1,指定RX=D2,TX=D3
  29. // 其他板子(Mega2560、M0)直接使用硬件串口1
  30. #else
  31. DFRobot_C4002 c4002(&Serial1, 115200);
  32. #endif
  33. // 初始化函数,只执行一次
  34. void setup()
  35. {
  36.   // 开启USB串口,用于电脑串口监视器输出信息
  37.   Serial.begin(115200);
  38.   // ===================== 初始化C4002传感器 =====================
  39.   // 如果初始化失败,每秒重试一次
  40.   while (c4002.begin() != true) {
  41.     Serial.println("C4002 初始化失败!");
  42.     delay(1000);
  43.   }
  44.   // 初始化成功提示
  45.   Serial.println("C4002 初始化成功!");
  46.   // ===================== 读取C4002全部配置参数 =====================
  47.   // 调用库函数,获取雷达所有当前配置,存入 configParams 结构体
  48.   sConfigParams_t configParams = c4002.getAllConfigParams();
  49.   // ===================== 开始打印所有配置 =====================
  50.   // 1. 运行指示灯状态
  51.   Serial.print("运行指示灯(Run LED): ");
  52.   if (configParams.curLedStatus.runLed == eLedOn) {
  53.     Serial.println("开启");
  54.   } else if (configParams.curLedStatus.runLed == eLedOff) {
  55.     Serial.println("关闭");
  56.   }
  57.   // 2. 输出指示灯状态
  58.   Serial.print("输出指示灯(Out LED): ");
  59.   if (configParams.curLedStatus.outLed == eLedOn) {
  60.     Serial.println("开启");
  61.   } else if (configParams.curLedStatus.outLed == eLedOff) {
  62.     Serial.println("关闭");
  63.   }
  64.   // 3. 当前光照阈值
  65.   Serial.print("当前光照阈值: ");
  66.   Serial.print(configParams.curLightThreshold);
  67.   Serial.println(" lux");
  68.   // 4. 当前检测距离范围(最近 ~ 最远)
  69.   Serial.print("当前检测距离范围: ( ");
  70.   Serial.print(configParams.curDetectRange.closest);   // 最近距离
  71.   Serial.print(" ~ ");
  72.   Serial.print(configParams.curDetectRange.farthest);  // 最远距离
  73.   Serial.println(" ) 厘米");
  74.   // 5. 当前输出模式
  75.   Serial.print("当前输出模式: 输出模式 ");
  76.   Serial.println(configParams.curOutMode);
  77.   // 6. 当前距离分辨率模式(80cm 或 20cm)
  78.   Serial.print("当前距离分辨率: ");
  79.   if (configParams.curResolutionMode == eResolution80Cm) {
  80.     Serial.println("80 厘米");
  81.     Serial.println("此模式下共有 15 个距离门,每个区间 80cm");
  82.   } else if (configParams.curResolutionMode == eResolution20Cm) {
  83.     Serial.println("20 厘米");
  84.     Serial.println("此模式下共有 25 个距离门,每个区间 20cm");
  85.   }
  86.   // 7. 当前运动检测灵敏度(低/中/高/自定义)
  87.   Serial.print("当前运动检测灵敏度: ");
  88.   if (eLowThreshGroup == configParams.curMotionSensitivity) {
  89.     Serial.println("低灵敏度");
  90.   } else if (eMidThreshGroup == configParams.curMotionSensitivity) {
  91.     Serial.println("中灵敏度");
  92.   } else if (eHighThreshGroup == configParams.curMotionSensitivity) {
  93.     Serial.println("高灵敏度");
  94.   } else {
  95.     Serial.println("自定义灵敏度");
  96.   }
  97.   // 8. 当前存在检测灵敏度(低/中/高/自定义)
  98.   Serial.print("当前存在检测灵敏度: ");
  99.   if (eLowThreshGroup == configParams.curPresenceSensitivity) {
  100.     Serial.println("低灵敏度");
  101.   } else if (eMidThreshGroup == configParams.curPresenceSensitivity) {
  102.     Serial.println("中灵敏度");
  103.   } else if (eHighThreshGroup == configParams.curPresenceSensitivity) {
  104.     Serial.println("高灵敏度");
  105.   } else {
  106.     Serial.println("自定义灵敏度");
  107.   }
  108.   // 9. 当前人体消失延时(人离开后多久判定无人)
  109.   Serial.print("当前人体消失延时: ");
  110.   Serial.print(configParams.curTargetDisappearDelayTime);
  111.   Serial.println(" 秒");
  112. }
  113. // 主循环,这里不需要执行任何操作
  114. void loop()
  115. {
  116.   delay(10);
  117. }
复制代码


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-5-23 17:56:21

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块

DFRobot C4002 毫米波人体存在传感器 综合介绍

一、产品定位
DFRobot C4002(型号 SEN0691),24GHz FMCW 毫米波雷达,主打静止 + 微动人体存在检测,替代传统 PIR 红外;能识别人静坐、睡觉、呼吸微动,不受黑暗、温度、窗帘遮挡影响,适合智能家居、创客开发、ESP32 / 单片机项目。

二、核心参数
工作频率:24.0~24.25GHz
探测距离:运动人体最大 11m,静止 / 微动人体最大 10m
探测角度:120°×120° 大范围广角
工作电压:3.6V~5.5V(3.3V 不稳,建议 5V 供电)
工作温度:-20℃ ~ 85℃
环境光检测:自带光敏,输出 0~50lux 光照值
默认串口波特率:115200

三、核心能力(碾压普通 PIR)
真存在检测:不仅检测走动,还能检测静坐、办公、睡觉、呼吸微动
多数据输出:UART 可读出 距离、速度、移动方向、信号能量、光照、存在倒计时
双输出模式
UART 串口:读取详细原始数据、自定义逻辑
OUT 电平口:可配置高低电平,极简触发(不用解析串口)
抗干扰强:不怕黑夜、强光、温差、玻璃 / 薄窗帘遮挡,只识人体不误判杂物

四、引脚定义与接线
共 5 针:VIN、GND、RX、TX、OUT
VIN:3.6~5.5V 供电
GND:公共地
TX:模块发送 → 主控 RX
RX:模块接收 → 主控 TX
OUT:可编程电平输出(有人 / 无人高低电平)

OUT 三种工作模式
仅检测运动才输出高
仅静止人体输出高
运动 + 静止都输出高(推荐常用)

五、适配与开发
兼容:Arduino、ESP32-S3、树莓派、CanMV、Home Assistant、ESPHome
软件:有官方 Arduino 库、现成示例代码,支持直接接入智能家居自动化
开发门槛:两种用法 ——极简 OUT 电平触发 / 串口读全参数做智能逻辑

六、典型应用场景
智能灯光:人在灯亮、人离延时灭,静坐不熄灯
办公室 / 教室人体存在节能、空调自动启停
卧室、浴室静态人体感应
安防入侵检测、货车 / 室内有人值守监测
智能家居 Home Assistant 本地化人体传感

七、优势总结
比 PIR 更强:能测静止 + 微动,不会人坐着就误关灯
性价比高:入门级毫米波,价格亲民
用法灵活:支持简单电平和专业串口数据两种开发方式
适配广:ESP32、单片机、智能家居生态全部通吃

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块图3

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块图2

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块图1

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-5-23 17:59:19

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块

C4002是一款基于24GHz FMCW技术的毫米波雷达模块,专为智能家居场景中需要精准静态人体存在感知的应用而设计。模块突破了传统PIR传感器只能检测大幅运动的局限,可在10x10m的有效检测范围内,同步侦测运动人体与静止/微动人体,并支持运动速度检测、运动方向识别(靠近/远离)及环境光检测功能。模块具备分区检测能力与探测范围可调功能,通过底噪采集智能过滤环境干扰,输出模式灵活可配置,是智能家居产品方案实现真无人感控系统的理想核心部件。
           
宽范围多状态检测,支持IO可控输出
凭借10x10m的有效检测范围,C4002可全面覆盖整个房间。无论是行走中的大幅运动,还是静止不动的微动,模块均能检测输出,还可通过OUT接口的可配置输出模式(如存在、运动、静止及微动状态),直接控制外部设备,确保仅在“真正有人”时运行,提升便利性与节能效率。

智能抗干扰,稳定可靠免调试
模块内置环境底噪采集功能,在新环境中可自动学习并建立背景噪声模型,有效过滤窗帘摆动、空调运行、绿植摇晃等常见干扰,大幅降低误报率,保证系统长期稳定运行。

探测范围灵活可调,适应各种探测场景需求
可以根据实际应用需要,灵活调节检测范围。无论是从大空间适配到小房间,还是通过分区功能避开特定干扰区域,均能确保感知区域精准匹配应用场景,提升空间利用的灵活性。

开发生态与兼容性
C4002完美兼容 Arduino、ESP32 、树莓派主流开源硬件平台,并可轻松集成至 Home Assistant 智能家居系统。凭借丰富的资源,能够快速实现功能验证与系统集成,极大缩短研发周期。


【花雕】168种系列实验(217)---C4002 毫米波人体存在模块图1


【花雕】168种系列实验(217)---C4002 毫米波人体存在模块图2


【花雕】168种系列实验(217)---C4002 毫米波人体存在模块图3


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-5-23 18:02:25

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块

应用场景
智能灯控系统:实现“人来灯亮,人走灯灭”的精准自动化控制。
恒温恒湿控制:基于人员存在状态自动调节客厅、书房空调与环境设备。
入睡管理:监测卧室人员静止状态,自动切换睡眠模式,联动夜灯、空调等设备。
安防监控:检测异常移动或闯入行为,触发警报或录像。
看护系统:监测人员是否在房间内静止或微动状态,发现异常(如久未活动)可发出提醒。

技术规格
工作电压:3.6~5.5V
检测能力:运动、微动/静止人体
最大检测距离:运动11m、微动/静止10m
探测角度:120°x120°
输出接口:OUT(可配置IO),UART
工作频率:24GHz~24.25GHz
光线检测:0~50lux
工作温度:-20~85℃
产品尺寸:22mm x 26mm

相关文档
产品维库
https://wiki.dfrobot.com.cn/SKU_ ... 20Presence%20Module

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块图1

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块图2

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块图3

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-5-23 20:19:41

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块

本帖最后由 驴友花雕 于 2026-5-23 20:29 编辑

软硬件准备硬件准备
  • Arduino uno×1
  • C4002(SKU:SEN0690)×1
软件准备


模块接脚与实验接线示意图

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块图1

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块图2



回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-5-24 10:26:23

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块

  实验串口返回

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块图1

   实验场景图

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块图2
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-5-24 13:56:47

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百一十七:C4002 毫米波运动与静态存在检测模块人体存在传感器
  案例二:环境校准完成后自动进入人体检测

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二百一十七:C4002 毫米波运动与静态存在检测模块人体存在传感器
  4.   案例二:环境校准完成后自动进入人体检测
  5. */
  6. #include "DFRobot_C4002.h"
  7. #include <SoftwareSerial.h>
  8. // ==================== UNO 软件串口定义 ====================
  9. // 模块TX → D4 (Uno RX)
  10. // 模块RX → D5 (Uno TX)
  11. SoftwareSerial mySerial(4, 5);
  12. DFRobot_C4002 c4002(&mySerial, 115200);
  13. // 校准完成标志
  14. bool calibFinishFlag = false;
  15. // 打印距离门阈值函数
  16. void printDoorThreshold(uint8_t *gateData, uint8_t n)
  17. {
  18.   Serial.print("Index:\t");
  19.   for (int i = 0; i < n; i++) {
  20.     Serial.print(i + 1);
  21.     Serial.print('\t');
  22.   }
  23.   Serial.println();
  24.   Serial.print("Value:\t");
  25.   for (int i = 0; i < n; i++) {
  26.     Serial.print(gateData[i]);
  27.     Serial.print('\t');
  28.   }
  29.   Serial.println();
  30. }
  31. void setup()
  32. {
  33.   Serial.begin(115200);
  34.   delay(100);
  35.   // 初始化C4002
  36.   while (c4002.begin() != true) {
  37.     Serial.println("C4002 初始化失败,重试...");
  38.     delay(1000);
  39.   }
  40.   Serial.println("C4002 初始化成功!");
  41.   // 打开指示灯
  42.   c4002.setRunLedState(eLedOn);
  43.   c4002.setOutLedState(eLedOn);
  44.   delay(1000); // 从3秒改为1秒,更快启动
  45.   // 设置1秒上报一次
  46.   c4002.setReportPeriod(10);
  47.   // ===================== 关键修改 =====================
  48.   // 原:startEnvCalibration(10, 30)
  49.   // 现:准备 2秒 + 校准 5秒(最短安全值)
  50.   c4002.startEnvCalibration(2, 5);
  51.   // ====================================================
  52.   Serial.println("==== 开始环境校准,请保持前方无人 ====");
  53. }
  54. void loop()
  55. {
  56.   uint8_t gateData[25] = {0};
  57.   eResolutionMode_t resolutionMode;
  58.   sRetResult_t retResult = c4002.getNoteInfo();
  59.   // ===================== 校准流程 =====================
  60.   if (!calibFinishFlag && retResult.noteType == eCalibration) {
  61.     Serial.print("校准倒计时:");
  62.     Serial.print(retResult.calibCountdown);
  63.     Serial.println(" s");
  64.     // 校准完成
  65.     if (retResult.calibCountdown == 0) {
  66.       calibFinishFlag = true;
  67.       Serial.println("\n========== 校准完成 ==========");
  68.       resolutionMode = c4002.getResolutionMode();
  69.       int n = resolutionMode == eResolution80Cm ? 15 : 25;
  70.       // 打印运动/存在阈值
  71.       c4002.getDistanceGateThresh(eMotionDistGate, gateData);
  72.       Serial.println("运动检测阈值:");
  73.       printDoorThreshold(gateData, n);
  74.       c4002.getDistanceGateThresh(ePresenceDistGate, gateData);
  75.       Serial.println("存在检测阈值:");
  76.       printDoorThreshold(gateData, n);
  77.       Serial.println("======== 进入人体检测模式 ========\n");
  78.     }
  79.   }
  80.   // ===================== 校准完成 → 自动检测人体 =====================
  81.   if (calibFinishFlag && retResult.noteType == eResult) {
  82.     eTargetState_t state = c4002.getTargetState();
  83.     Serial.print("状态:");
  84.     if (state == eNoTarget) {
  85.       Serial.println("无人");
  86.     } else if (state == ePresence) {
  87.       Serial.println("有人【静态】");
  88.     } else if (state == eMotion) {
  89.       Serial.println("有人【运动】");
  90.     }
  91.     Serial.println("---------------------------");
  92.   }
  93.   delay(500);
  94. }
复制代码


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-5-24 14:07:33

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块

   实验串口返回

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块图1
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-5-24 14:25:00

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块

   实验串口返回

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块图1
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-5-24 14:27:44

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百一十七:C4002 毫米波运动与静态存在检测模块人体存在传感器
  案例四:简单校准完成只判有人 / 无人 + D13 板载 LED 有人亮、无人灭

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二百一十七:C4002 毫米波运动与静态存在检测模块人体存在传感器
  4.   案例四:简单校准完成只判有人 / 无人 + D13 板载 LED 有人亮、无人灭
  5. */
  6. #include "DFRobot_C4002.h"
  7. #include <SoftwareSerial.h>
  8. SoftwareSerial mySerial(4, 5);
  9. DFRobot_C4002 c4002(&mySerial, 115200);
  10. bool calibOK = false;
  11. const int ledPin = 13;
  12. void setup() {
  13.   Serial.begin(115200);
  14.   pinMode(ledPin, OUTPUT);
  15.   digitalWrite(ledPin, LOW);
  16.   // 初始化传感器
  17.   while (!c4002.begin()) {
  18.     Serial.println("初始化失败...");
  19.     delay(1000);
  20.   }
  21.   Serial.println("初始化成功");
  22.   c4002.setReportPeriod(10);
  23.   
  24.   // 超快校准:2秒准备 + 5秒校准
  25.   c4002.startEnvCalibration(2, 5);
  26.   Serial.println("开始快速校准,请保持无人");
  27. }
  28. void loop() {
  29.   sRetResult_t res = c4002.getNoteInfo();
  30.   // 校准流程
  31.   if (!calibOK && res.noteType == eCalibration) {
  32.     Serial.print("校准倒计时:");
  33.     Serial.println(res.calibCountdown);
  34.     if (res.calibCountdown == 0) {
  35.       calibOK = true;
  36.       Serial.println("校准完成 → 开始检测");
  37.     }
  38.   }
  39.   // 检测人体 + LED控制
  40.   if (calibOK && res.noteType == eResult) {
  41.     eTargetState_t sta = c4002.getTargetState();
  42.     if (sta == eNoTarget) {
  43.       Serial.println("无人");
  44.       digitalWrite(ledPin, LOW);
  45.     } else {
  46.       Serial.println("有人");
  47.       digitalWrite(ledPin, HIGH);
  48.     }
  49.   }
  50.   delay(300);
  51. }
复制代码


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-5-24 14:30:06

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块

实验串口返回

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块图1

实验场景图

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块图2

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-5-24 15:22:24

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百一十七:C4002 毫米波运动与静态存在检测模块人体存在传感器
  案例五:上电直接检测 + 有人 D13 亮 + 有人蜂鸣器响 + 无人灯灭蜂鸣停

接线
C4002:TX→D4,RX→D5
板载 LED:D13
蜂鸣器:D12 → GND

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二百一十七:C4002 毫米波运动与静态存在检测模块人体存在传感器
  4.   案例五:上电直接检测 + 有人 D13 亮 + 有人蜂鸣器响 + 无人灯灭蜂鸣停
  5. */
  6. #include "DFRobot_C4002.h"
  7. #include <SoftwareSerial.h>
  8. SoftwareSerial mySerial(4, 5);
  9. DFRobot_C4002 c4002(&mySerial, 115200);
  10. const int ledPin = 13;
  11. const int buzzerPin = 12;
  12. void setup()
  13. {
  14.   Serial.begin(115200);
  15.   pinMode(ledPin, OUTPUT);
  16.   pinMode(buzzerPin, OUTPUT);
  17.   // 初始状态 灯灭、蜂鸣不响
  18.   digitalWrite(ledPin, LOW);
  19.   digitalWrite(buzzerPin, HIGH);
  20.   // 初始化雷达
  21.   while (!c4002.begin())
  22.   {
  23.     Serial.println("C4002 连接失败,重试...");
  24.     delay(1000);
  25.   }
  26.   Serial.println("C4002 就绪,开始检测");
  27.   // 上报周期1秒
  28.   c4002.setReportPeriod(10);
  29. }
  30. void loop()
  31. {
  32.   sRetResult_t res = c4002.getNoteInfo();
  33.   if (res.noteType == eResult)
  34.   {
  35.     eTargetState_t sta = c4002.getTargetState();
  36.     // 真正无人:立刻关灯、关蜂鸣
  37.     if (sta == eNoTarget)
  38.     {
  39.       Serial.println("无人");
  40.       digitalWrite(ledPin, LOW);
  41.       digitalWrite(buzzerPin, HIGH);
  42.     }
  43.     // 真有人 运动/静态 才触发
  44.     else if (sta == eMotion || sta == ePresence)
  45.     {
  46.       Serial.println("有人");
  47.       digitalWrite(ledPin, HIGH);
  48.       digitalWrite(buzzerPin, LOW);
  49.     }
  50.   }
  51.   delay(100);
  52. }
复制代码


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-5-24 15:26:16

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块

实验串口返回

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块图1

实验场景图

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块图2

回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-5-24 15:36:03

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百一十七:C4002 毫米波运动与静态存在检测模块人体存在传感器
  案例六:带 2+5 秒快速校准 + 严格判有人无人 + 彻底不误响 稳定版

硬件接线
C4002 雷达
VCC → 5V
GND → GND
TX → D4
RX → D5

外设
LED → D13
蜂鸣器 → D12

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二百一十七:C4002 毫米波运动与静态存在检测模块人体存在传感器
  4.   案例六:带 2+5 秒快速校准 + 严格判有人无人 + 彻底不误响  稳定版
  5. */
  6. #include "DFRobot_C4002.h"
  7. #include <SoftwareSerial.h>
  8. SoftwareSerial mySerial(4, 5);
  9. DFRobot_C4002 c4002(&mySerial, 115200);
  10. const int ledPin = 13;
  11. const int buzzerPin = 12;
  12. bool calibDone = false;
  13. void setup()
  14. {
  15.   Serial.begin(115200);
  16.   pinMode(ledPin, OUTPUT);
  17.   pinMode(buzzerPin, OUTPUT);
  18.   digitalWrite(ledPin, LOW);
  19.   digitalWrite(buzzerPin, HIGH);
  20.   // 传感器初始化
  21.   while (!c4002.begin())
  22.   {
  23.     Serial.println("雷达初始化失败,重试中");
  24.     delay(1000);
  25.   }
  26.   Serial.println("雷达初始化成功");
  27.   c4002.setReportPeriod(10);
  28.   Serial.println("即将启动快速校准,前方请勿有人");
  29.   // 2秒预备 + 5秒正式校准
  30.   c4002.startEnvCalibration(2, 5);
  31. }
  32. void loop()
  33. {
  34.   sRetResult_t res = c4002.getNoteInfo();
  35.   // 校准阶段提示
  36.   if (!calibDone && res.noteType == eCalibration)
  37.   {
  38.     Serial.print("校准剩余时间:");
  39.     Serial.print(res.calibCountdown);
  40.     Serial.println(" s");
  41.     if (res.calibCountdown == 0)
  42.     {
  43.       calibDone = true;
  44.       Serial.println("校准完成,进入正常检测");
  45.     }
  46.   }
  47.   // 校准完成后正式检测
  48.   if (calibDone && res.noteType == eResult)
  49.   {
  50.     eTargetState_t state = c4002.getTargetState();
  51.     // 严格判定无人状态
  52.     if (state == eNoTarget)
  53.     {
  54.       Serial.println("无人");
  55.       digitalWrite(ledPin, LOW);
  56.       digitalWrite(buzzerPin, HIGH);
  57.     }
  58.     // 仅静态/运动人体触发声光
  59.     else if (state == ePresence || state == eMotion)
  60.     {
  61.       Serial.println("有人");
  62.       digitalWrite(ledPin, HIGH);
  63.       digitalWrite(buzzerPin, LOW);
  64.     }
  65.   }
  66.   delay(100);
  67. }
复制代码



回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-5-24 15:38:19

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块

实验串口返回

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块图1

实验场景图
【花雕】168种系列实验(217)---C4002 毫米波人体存在模块图2


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-5-24 15:48:13

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块

  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百一十七:C4002 毫米波运动与静态存在检测模块人体存在传感器
  案例七:把 C4002 毫米波雷达的所有配置(灵敏度、距离、阈值、模式等)全部恢复成出厂默认值

  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  3.   实验二百一十七:C4002 毫米波运动与静态存在检测模块人体存在传感器
  4.   案例七:把 C4002 毫米波雷达的所有配置(灵敏度、距离、阈值、模式等)全部恢复成出厂默认值
  5. */
  6. // 包含C4002雷达驱动库
  7. #include "DFRobot_C4002.h"
  8. /* ---------------------------------------------------------------------------------------------------------------------
  9.   * 硬件接线对照表(模块 ↔ 各种开发板)
  10.   *    模块     |             功能                | Leonardo/Mega2560 |    UNO    | ESP8266 |    ESP32     |
  11.   *     VCC    |              5V 供电             |        5V         |     5V    |    5V   |      5V      |
  12.   *     GND    |              地线                |        GND        |    GND    |   GND   |     GND      |
  13.   *     RX     |  模块接收端 → 接开发板 TX        |    Serial1 TX1    |     5     |    5    |  GPIO25/D2   |
  14.   *     TX     |  模块发送端 → 接开发板 RX        |    Serial1 RX1    |     4     |    4    |  GPIO26/D3   |
  15.   * ----------------------------------------------------------------------------------------------------------------------
  16.   * 说明:
  17.   * 1. 模块RX 必须接 开发板TX
  18.   * 2. 模块TX 必须接 开发板RX
  19.   * 3. 串口波特率可以自己修改
  20.   */
  21. /* 根据不同开发板自动选择串口方式 */
  22. // 如果是 ESP8266 或 Arduino UNO —— 使用软件串口
  23. #if defined(ESP8266) || defined(ARDUINO_AVR_UNO)
  24. SoftwareSerial mySerial(4, 5);                // 定义软件串口:Uno RX=4, TX=5
  25. DFRobot_C4002  c4002(&mySerial, 115200);      // 创建雷达对象,绑定软件串口
  26. // 如果是 ESP32 —— 使用硬件串口1
  27. #elif defined(ESP32)
  28. DFRobot_C4002 c4002(&Serial1, 115200, D2, D3); // ESP32串口1,RX=D2, TX=D3
  29. // 其他开发板(Mega、M0)—— 使用硬件串口1
  30. #else
  31. DFRobot_C4002 c4002(&Serial1, 115200);
  32. #endif
  33. // 初始化函数,只运行一次
  34. void setup()
  35. {
  36.   // 开启电脑串口监视器,波特率115200
  37.   Serial.begin(115200);
  38.   // ===================== 初始化C4002雷达模块 =====================
  39.   // 如果初始化失败,每秒重试一次
  40.   while (c4002.begin() != true) {
  41.     Serial.println("C4002 初始化失败!");
  42.     delay(1000);
  43.   }
  44.   // 初始化成功
  45.   Serial.println("C4002 初始化成功!");
  46.   delay(50);  // 短暂延时,保证通信稳定
  47.   // ===================== 执行:恢复出厂设置 =====================
  48.   Serial.println("正在恢复出厂设置...");
  49.   
  50.   // 调用库函数 factoryReset() 恢复出厂默认参数
  51.   if (c4002.factoryReset()) {
  52.     // 恢复成功
  53.     Serial.println("恢复出厂设置成功!");
  54.     Serial.println("恢复出厂设置后,需要重新上电重启模块!");
  55.   } else {
  56.     // 恢复失败
  57.     Serial.println("恢复出厂设置失败!");
  58.   }
  59. }
  60. // 主循环,恢复完成后这里什么都不做
  61. void loop()
  62. {
  63.   delay(100);  // 空延时
  64. }
复制代码


回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-5-24 15:49:15

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块

   实验串口返回情况

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块图1
回复

使用道具 举报

驴友花雕  高级技神
 楼主|

发表于 2026-5-24 16:00:43

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块

   实验串口返回情况

【花雕】168种系列实验(217)---C4002 毫米波人体存在模块图1
回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2026 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail