16浏览
查看: 16|回复: 0

毫米波智能喝水提醒器 —— 基于C4002 人体存在传感器

[复制链接]
本帖最后由 云天 于 2026-5-26 22:47 编辑

【项目简介】

每天坐在电脑前,总是忘记喝水?传统的定时闹钟不够智能——人不在座位上也响,人在座位上时反而不提醒。本项目利用 C4002 毫米波人体存在传感器 精准检测"室内是否有人",配合 Bluno Nano 实现智能提醒逻辑:当检测到有人时,每 30 秒通过继电器点亮 3V 柔性灯丝 10 秒(测试),用柔和的灯光提醒你起身喝水。人离开后自动停止,节能又贴心。
【项目亮点】
·人在检测
C4002 支持运动 + 静止/微动检测,即使你坐着不动也能识别
【材料清单】
物料
SKU/型号
数量
作用
Bluno Nano 蓝牙控制器
DFR0296
1
主控板,处理逻辑与蓝牙通信
C4002 毫米波人体存在传感器
SEN0691
1
检测室内人体运动与静止状态
Gravity: 简易继电器模块
DFR0285
1
驱动 3V 灯丝,隔离主控与负载
3V 260mm 柔性软灯丝(蓝色)
FIT0538
1
提醒指示灯,可弯曲造型
1路 18650 电池座(带 5V/3V 输出)
1
移动电源,5V 给 Nano,3V/3.3V 给灯丝
杜邦线 / Gravity 连接线
若干
信号连接

【模块介绍】
1 Bluno Nano(主控)
  • 兼容 Arduino Nano,体积小巧
  • 板载 TI CC2540 蓝牙 4.0 芯片,支持串口透传与无线编程
  • 单引脚最大输出 40mA,不能直接驱动灯丝或继电器线圈,需通过继电器隔离
2 C4002 毫米波传感器
  • 基于 24GHz FMCW 技术,探测角度 120°×120°
  • 支持运动检测(11m)与静止/微动检测(10m)
  • 通过 UART 输出目标状态(无人 / 运动 / 静止存在)
  • 首次使用需进行环境底噪采集,过滤窗帘、空调等干扰
3 Gravity 简易继电器模块
  • 逻辑端:3.3~5.5V 宽电压,直接兼容 Nano D13
  • 负载端:VIN 支持 5V~30V,通过拨动开关切换常开(NO)/常闭(NC)
  • 自带 LED 指示继电器吸合状态,方便调试
4 3V 柔性软灯丝
  • 长度 260mm,直径 2mm,可任意弯曲造型
  • 工作电压 3V,工作电流约 80mA
  • 小圆孔端为正极,无孔端为负极
【电路连接】1 供电分配(18650 电池座)
  • 5V 输出 → Bluno Nano VIN(Nano 板载稳压器转为 5V/3.3V 工作)
  • 3.3V/3V 输出 → 继电器模块负载端 VIN → 灯丝正极
  • GND → 所有模块共地
提示:若你的电池座输出为单节 3.7V(无稳压),可直接接灯丝,但亮度会略高于 3V;建议串联 10Ω 电阻限流,或确认灯丝可短时承受 3.7V。
2 信号接线
Bluno Nano
C4002
继电器模块
5V
VIN
GND
GND
GND
D4 (RX)
TX
D5 (TX)
RX
D13
SIG
VIN(接 3V 电源)
COM → 灯丝正极
NO → 3V 电源正极

注意:C4002 与 Nano 通过 SoftwareSerial(4,5) 通信,因为 Nano 的硬件串口 Serial 已被 BLE/USB 占用。【硬件组装】
毫米波智能喝水提醒器 —— 基于C4002 人体存在传感器图4

毫米波智能喝水提醒器 —— 基于C4002 人体存在传感器图3

毫米波智能喝水提醒器 —— 基于C4002 人体存在传感器图2

毫米波智能喝水提醒器 —— 基于C4002 人体存在传感器图1

毫米波智能喝水提醒器 —— 基于C4002 人体存在传感器图5

毫米波智能喝水提醒器 —— 基于C4002 人体存在传感器图7

毫米波智能喝水提醒器 —— 基于C4002 人体存在传感器图6


【软件准备】

1 安装 Arduino IDE
下载并安装 Arduino IDE,开发板选择 Arduino Nano(若包装盒日期为 2015.09.21 或 2015.10.08,请选择 Arduino Nano (328))。
2 安装 DFRobot_C4002 库【代码实现】

1 首次使用:环境底噪采集(必做!)
C4002 在新环境中必须先学习背景噪声,否则容易误报。请单独烧录官方校准示例 autoEnvCalibration.ino,上电后 10 秒内离开房间,保持 40 秒无人状态完成校准。详细步骤见 C4002 维库https://wiki.dfrobot.com.cn/SKU_ ... 20Presence%20Module
2 主程序:喝水提醒器
  1. /*!
  2. * 智能喝水提醒器
  3. * 主控:Bluno Nano + C4002 毫米波传感器
  4. * 功能:检测到室内有人时,每 30 秒点亮灯丝 10 秒
  5. */
  6. #include <SoftwareSerial.h>
  7. #include "DFRobot_C4002.h"
  8. // C4002 软串口:Nano.D4(RX) <- C4002.TX, Nano.D5(TX) -> C4002.RX
  9. SoftwareSerial mySerial(4, 5);
  10. DFRobot_C4002 c4002(&mySerial, 115200);
  11. const int RELAY_PIN = 13;             // D13 接继电器 SIG
  12. const unsigned long CYCLE_MS = 30000; // 30 秒周期
  13. const unsigned long ON_MS = 10000;  // 10 秒点亮
  14. bool someonePresent = false;
  15. unsigned long cycleStart = 0;
  16. void setup() {
  17.   Serial.begin(115200);   // USB/蓝牙调试口
  18.   pinMode(RELAY_PIN, OUTPUT);
  19.   digitalWrite(RELAY_PIN, LOW);
  20.   // 初始化 C4002
  21.   while (c4002.begin() != true) {
  22.     Serial.println("C4002 初始化失败,1秒后重试...");
  23.     delay(1000);
  24.   }
  25.   Serial.println("C4002 初始化成功!");
  26.   // 关闭模块 LED,避免光污染
  27.   c4002.setRunLedState(eLedOff);
  28.   delay(50);
  29.   c4002.setOutLedState(eLedOff);
  30.   delay(50);
  31.   // 分辨率 80cm,15 个距离门,最大约 11.6m
  32.   c4002.setResolutionMode(eResolution80Cm);
  33.   delay(50);
  34.   // 检测范围 0 ~ 11m(根据房间大小调整,单位 cm)
  35.   c4002.setDetectRange(0, 1100);
  36.   delay(50);
  37.   // 启用全部 15 个距离门
  38.   uint8_t gateState[15] = {
  39.     C4002_ENABLE, C4002_ENABLE, C4002_ENABLE, C4002_ENABLE,
  40.     C4002_ENABLE, C4002_ENABLE, C4002_ENABLE, C4002_ENABLE,
  41.     C4002_ENABLE, C4002_ENABLE, C4002_ENABLE, C4002_ENABLE,
  42.     C4002_ENABLE, C4002_ENABLE, C4002_ENABLE
  43.   };
  44.   c4002.configureGate(eMotionDistGate, gateState);
  45.   delay(50);
  46.   c4002.configureGate(ePresenceDistGate, gateState);
  47.   delay(50);
  48.   // 目标消失延迟 2 秒(人离开后多久判定为无人)
  49.   c4002.setTargetDisappearDelay(2);
  50.   delay(50);
  51.   // 数据上报周期 1 秒(10 × 0.1s)
  52.   c4002.setReportPeriod(10);
  53.   delay(50);
  54.   Serial.println("系统就绪,开始检测...");
  55. }
  56. void loop() {
  57.   // 读取传感器数据
  58.   sRetResult_t ret = c4002.getNoteInfo();
  59.   if (ret.noteType == eResult) {
  60.     eTargetState_t state = c4002.getTargetState();
  61.     bool detected = (state == ePresence || state == eMotion);
  62.     if (detected && !someonePresent) {
  63.       someonePresent = true;
  64.       cycleStart = millis();
  65.       Serial.println("检测到有人,启动 30s 提醒周期");
  66.     } else if (!detected && someonePresent) {
  67.       someonePresent = false;
  68.       digitalWrite(RELAY_PIN, LOW);
  69.       Serial.println("人员离开,停止提醒");
  70.     }
  71.   }
  72.   // 周期控制:30s 内前 10s 吸合继电器(灯亮),后 20s 断开(灯灭)
  73.   if (someonePresent) {
  74.     unsigned long phase = (millis() - cycleStart) % CYCLE_MS;
  75.     digitalWrite(RELAY_PIN, (phase < ON_MS) ? HIGH : LOW);
  76.   }
  77.   delay(50);
  78. }
复制代码
【演示视频】










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

本版积分规则

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

硬件清单

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

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

mail