【花雕动手做】实验二百一十七:C4002 毫米波人体存在传感器校准后自动检测人体,控制LED(智能灯光控制)

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。
【Arduino】168种传感器执行器模块系列实验(资料代码+仿真编程+图形编程)
实验二百一十七: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、单片机、智能家居生态全部通吃



C4002是一款基于24GHz FMCW技术的毫米波雷达模块,专为智能家居场景中需要精准静态人体存在感知的应用而设计。模块突破了传统PIR传感器只能检测大幅运动的局限,可在10x10m的有效检测范围内,同步侦测运动人体与静止/微动人体,并支持运动速度检测、运动方向识别(靠近/远离)及环境光检测功能。模块具备分区检测能力与探测范围可调功能,通过底噪采集智能过滤环境干扰,输出模式灵活可配置,是智能家居产品方案实现真无人感控系统的理想核心部件。
宽范围多状态检测,支持IO可控输出
凭借10x10m的有效检测范围,C4002可全面覆盖整个房间。无论是行走中的大幅运动,还是静止不动的微动,模块均能检测输出,还可通过OUT接口的可配置输出模式(如存在、运动、静止及微动状态),直接控制外部设备,确保仅在“真正有人”时运行,提升便利性与节能效率。
智能抗干扰,稳定可靠免调试
模块内置环境底噪采集功能,在新环境中可自动学习并建立背景噪声模型,有效过滤窗帘摆动、空调运行、绿植摇晃等常见干扰,大幅降低误报率,保证系统长期稳定运行。
探测范围灵活可调,适应各种探测场景需求
可以根据实际应用需要,灵活调节检测范围。无论是从大空间适配到小房间,还是通过分区功能避开特定干扰区域,均能确保感知区域精准匹配应用场景,提升空间利用的灵活性。
开发生态与兼容性
C4002完美兼容 Arduino、ESP32 、树莓派主流开源硬件平台,并可轻松集成至 Home Assistant 智能家居系统。凭借丰富的资源,能够快速实现功能验证与系统集成,极大缩短研发周期。



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



硬件准备
Arduino uno×1
C4002(SKU:SEN0690)×1
软件准备
下载Arduino IDE: 点击下载Arduino IDE
下载C4002库: 点击下载DFRobot_C4002(https://gitee.com/dfrobot/DFRobot_C4002/repository/archive/main.zip)
模块接脚与实验接线示意图


【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百一十七:C4002 毫米波运动与静态存在检测模块人体存在传感器
案例12:校准后自动检测人体,控制LED(智能灯光控制)
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百一十七:C4002毫米波运动与静态存在检测模块人体存在传感器
案例十二:校准后自动检测人体,控制LED(智能灯光控制)
*/
#include <DFRobot_C4002.h>
#include <SoftwareSerial.h>
// ==================== 引脚定义 ====================
#define LED_PIN 13 // 板载LED
#define C4002_RX 4 // 模块TX → D4
#define C4002_TX 5 // 模块RX → D5
SoftwareSerial mySerial(C4002_RX, C4002_TX);
DFRobot_C4002 c4002(&mySerial, 115200);
// ==================== 全局变量 ====================
bool calibDone = false; // 校准完成标志
String lastState = "无人"; // 上一次稳定状态
unsigned long lastChange = 0; // 上次状态变化时间
const unsigned long DEBOUNCE = 1500; // 1.5秒去抖
// ==================== Setup ====================
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
delay(500);
Serial.println("\n===== 智能灯光系统启动 =====");
// 初始化C4002
while (!c4002.begin()) {
Serial.println("模块初始化失败,重试...");
delay(1000);
}
Serial.println("模块初始化成功");
// 开指示灯
c4002.setRunLedState(eLedOn);
c4002.setOutLedState(eLedOn);
// 上报周期:每秒1次
c4002.setReportPeriod(10);
// 快速校准(2秒准备 + 5秒校准)
Serial.println("校准中,请保持无人...");
c4002.startEnvCalibration(2, 5);
}
// ==================== Loop ====================
void loop() {
sRetResult_t result = c4002.getNoteInfo();
// -------- 等待校准完成 --------
if (!calibDone) {
if (result.noteType == eCalibration) {
Serial.print("剩余: ");
Serial.print(result.calibCountdown);
Serial.println("秒");
if (result.calibCountdown == 0) {
calibDone = true;
Serial.println("校准完成!进入检测模式\n");
}
}
delay(500);
return;
}
// -------- 检测人体状态 --------
if (result.noteType == eResult) {
eTargetState_t state = c4002.getTargetState();
// 转换为字符串
String nowState = (state == eNoTarget) ? "无人" : "有人";
// 状态变化检测(带防抖)
if (nowState != lastState) {
lastChange = millis();
lastState = nowState;
}
// 状态稳定后执行动作
if (millis() - lastChange > DEBOUNCE) {
if (nowState == "有人") {
digitalWrite(LED_PIN, HIGH);
Serial.println("有人 → 开灯");
} else {
digitalWrite(LED_PIN, LOW);
Serial.println("无人 → 关灯");
}
}
}
delay(300); // 轮询间隔
}
实验串口返回情况

实验场景图


更多推荐


所有评论(0)