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

[ESP8266/ESP32] C4002人体存在传感器部署HA智能婴儿睡眠监测系统

[复制链接]
本帖最后由 _深蓝_ 于 2026-6-12 17:20 编辑

@[TOC]

一、项目简介

(一)缘起

各位宝爸爸妈都经历过这样的小挫折,晚上睡觉孩子经常蹬被子,第二天娃冻感冒了。中午孩子午睡醒来,找不到妈妈,不哭,径直从床上爬来爬去,容易掉下床,宝爸宝妈必须经常看一看,检查一下孩子的睡眠状态。弄的家长不能安心做事,总是患得患失。本想着使用摄像头识别孩子的动作,可是摄像头的体积太大,编程复杂,具有夜视功能的摄像头价格上了天,不满足要求。
令我眼前一亮的是这款C4002 毫米波人体存在传感器,安安静静的监测孩子的睡眠状态。

C4002人体存在传感器部署HA智能婴儿睡眠监测系统图1

(二)方案

我打算使用Beetle ESP32-C3作为主控,Beetle ESP32-C3是一款基于ESP32-C3 RISC-V 32位单核处理器芯片的主控板,专为物联网 (IoT) 设备而设计。其体积小巧,仅硬币大小的体积上引出了多达13个IO口,制作项目时不必再担心IO口不够用的情况,同时主控板还集成锂电池充电管理功能,可以直接连接锂电池,不需要外围模块。他还支持Wi-Fi 和 Bluetooth 5 (LE) 双模通讯,这让我们部署C4002 毫米波人体存在传感模块到HA成为可能。
esp32c3
婴儿动作检测使用C4002 毫米波人体存在传感模块,该模块简介如下
C4002是一款基于24GHz FMCW技术的毫米波雷达模块,专为智能家居场景中需要精准静态人体存在感知的应用而设计。模块突破了传统PIR传感器只能检测大幅运动的局限,可在10x10m 的有效检测范围内,同步侦测运动人体与静止/微动人体,并支持运动速度检测、运动方向识别(靠近/远离)及环境光检测功能。模块具备分区检测能力与探测范围可调功能,通过底噪采集智能过滤环境干扰,输出模式灵活可配置,是智能家居产品方案实现真无人感控系统的理想核心部件。
C4002毫米波
相比于摄像头的方案,该传感器模块优点如下:

  1. 支持室内范围,覆盖卧室全方位空间。并且安装方式多样,根据检测范围安装即可。
    C4002人体存在传感器部署HA智能婴儿睡眠监测系统图2
    C4002人体存在传感器部署HA智能婴儿睡眠监测系统图3
    C4002人体存在传感器部署HA智能婴儿睡眠监测系统图4

  2. 智能环境过滤,该模块通过建立背景噪声模型,有效过滤窗帘摆动、空调运行、绿植摇晃。

  3. 白天夜晚智能运行,该模块基于24GHz FMCW技术的毫米波雷达,夜晚也能够正常工作。

二、软硬件平台

(一) 硬件类

  1. Beetle ESP32-C3:该款主控体积小巧,支持WIFI连接,能够部署HA设备。
  2. Fermion:C4002 毫米波人体存在传感器:用于孩子睡眠或者动作检测主要传感模块。
  3. Gravity: 数字白色LED发光模块:用于夜晚按需补光。
  4. 搭载Ubutun系统的主机(Liunx系统用于搭建HOME ASSISTANT)

(二)系统软件类

  1. Ubutun系统主机
  2. 掌握docker命令
  3. 使用espHome或者github编译固件
  4. Home Assistant系统
  5. putty软件

    (三)电路连接

    esp32C3 C4002 描述
    vin vin 供电5V
    gnd gnd 接地
    gpio20 rx esp32c3串口tx
    gpio21 tx esp32c3串口rx

C4002人体存在传感器部署HA智能婴儿睡眠监测系统图5
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图6
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图7

三、环境部署

(一)安装docker

1.打开Ubutun系统使用终端,我通过putty的ssh功能连接该系统。
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图36
切换root命令,并安装官方教程使用一键安装docker命令。注意需要连接wai网。

curl -fsSL https://get.docker.com | sudo sh

(二)安装home-assistant镜像

首先拉取镜像:

docker pull ghcr.io/home-assistant/home-assistant:stable

C4002人体存在传感器部署HA智能婴儿睡眠监测系统图37

结果,下载失败了,我们使用如下命令直接部署

docker run -d \
  --name homeassistant \
  --privileged \
  --restart=unless-stopped \
  -e TZ=Asia/Shanghai \
  -v /home/homeassistant/config:/config \
  -v /run/dbus:/run/dbus:ro \
  --network=host \
  ghcr.io/home-assistant/home-assistant:stable

接着打开浏览器输入http://ip:8123既可以打开Home Asistant主页面,如下所示
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图35

说明HA已经运行。

(三)    HA基础设置

接着创建用户
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图9
创建完成后弹出家的位置选项
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图8

C4002人体存在传感器部署HA智能婴儿睡眠监测系统图10
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图11
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图12
纯 Docker 方式运行的 Home Assistant(不是 HA OS/Supervisor),不能直接在 “加载项商店” 里装 ESPHome 插件,必须单独跑一个 ESPHome 容器,然后让它和 Home Assistant 互相发现即可。

(四)安装esphome镜像

接着我们拉取esphome镜像,我们选用如下地址:

docker run -d \
  --name esphome \
  --privileged \
  --restart=always \
  -e TZ=Asia/Shanghai \
  -v /home/esphome:/config \
  -v /run/udev:/run/udev \
  --network=host \
  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/esphome/esphome:2026.3.1

等待安装完成
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图13
浏览器打开http://ip:6052我们便会看到ESPHOME的主界面
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图14

(五)使用esphome编译固件

C4002人体存在传感器部署HA智能婴儿睡眠监测系统图15
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图16
如果是第一次使用ESPHome需要输入"Name"、"Network name"和"Network Password",如果不是第一次使用是需要输入"Name"

C4002人体存在传感器部署HA智能婴儿睡眠监测系统图44
选择esp32-C3
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图17
保存设备的Encryption key,连接设备时候需要用到。点击SKIP
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图18

点击ESPHome主页对应设备卡片的"EDIT"可以查看自动生成的默认程序
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图19
内容如下:

esphome:
  name: esp32c3
  friendly_name: esp32C3

esp32:
  board: esp32-c3-devkitm-1
  framework:
    type: esp-idf

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: "Rw8/cWtCTEFXkdMiHX7mCrLGlNOxKUROaLs+WZRSkrA="

ota:
  - platform: esphome
    password: "779cfb5a800ceae97d6119d81fc6180b"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esp32C3 Fallback Hotspot"
    password: "yeh3MdqBOorj"

captive_portal:

并将如下程序复制粘贴到自动生成程序的末尾


# UART配置
uart:
  id: uart_bus
  tx_pin: GPIO17
  rx_pin: GPIO16
  baud_rate: 115200

# External components
external_components:
  - source:
      type: git   #来源​
      url: https://github.com/cdjq/esphome.git   #必须是根目录​
      ref: dev   #分支​
    components:
      dfrobot_c4002  #组件

# C4002 组件配置
dfrobot_c4002:
  id: my_c4002

# 传感器配置部分
sensor:
  - platform: dfrobot_c4002
    c4002_id: my_c4002
    movement_distance:
      name: "Motion Distance"
      id: movement_distance_sensor  # 运动距离
    existing_distance:
      name: "Presence Distance"
      id: existing_distance_sensor  # 存在距离
    movement_speed:
      name: "Motion Speed"
      id: movement_speed_sensor
    movement_direction:
      name: "Motion Direction"
      id: movement_direction_sensor  # 运动方向
      internal: true
    target_status:
      name: "Target Status"
      id: target_status_sensor
      internal: true

text_sensor:
  - platform: template
    name: "Movement Direction"
    id: movement_direction_text
    icon: "mdi:directions"
    lambda: |-
      int d = id(movement_direction_sensor).state;
      if (d == 0) return {"Approaching"};
      else if (d == 1) return {"No Direction"};
      else if (d == 2) return {"Away"};
      else return {"未知"};
    update_interval: 1s

  - platform: template
    name: "Target Status"
    id: target_status_text
    icon: "mdi:human-greeting"
    lambda: |-
      int d = id(target_status_sensor).state;
      if (d == 0) return {"No Target"};
      else if (d == 1) return {"Static Presence"};
      else if (d == 2) return {"Motion"};
      else return {"未知"};
    update_interval: 0.5s

  - platform: dfrobot_c4002
    c4002_id: my_c4002
    c4002_text_sensor:
      name: "C4002 log"
      icon: "mdi:message-text-outline"

# 开关配置部分
switch:
  - platform: dfrobot_c4002
    switch_out_led:
      name: "Out LED Switch"
    switch_run_led:
      name: "Run LED Switch"
    switch_factory_reset:
      name: "Factory Reset"
    switch_environmental_calibration:
      name: "Sensor Calibration"

# Select 配置部分
select:
  - platform: dfrobot_c4002
    c4002_id: my_c4002
    operating_mode:
      name: "OUT Mode"
      options:
        - "Mode_1"
        - "Mode_2" 
        - "Mode_3"

# 最小和最大检测范围配置
number:
  - platform: dfrobot_c4002
    max_range:
      name: "Max detection distance"
    min_range:
      name: "Min detection distance"
    light_threshold:
      name: "Light Threshold"
    target_disappeard_delay_time:
      name: "Target Disappear Delay Time"

第一次下载: 修改好程序后点击"INSTALL"
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图20
第一次下载需要选择"Plug into this computer",第一次收录后可以点击"Wirelessly"通过OTA升级。
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图22
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图21
等待系统编译完成后点击"Download project"
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图23
由于网络问题,编译过程一直显示失败,我们可以通过其他手段联网或者换用其他平台编译,如果不出错的话,我们下载编译完成的固件,下载到桌面。接着使用espHome web烧录(注意:可以使用edge浏览器或者谷歌浏览器,火狐貌似不支持串口连接)

(六)使用github编译固件

我使用大佬的方法,利用github action编译esphome固件,方法如下。
注册github账户,并打开我的github仓库https://github.com/jack2f/esp32c3,并fork到个人仓库。
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图24
之后按照提示保存到个人仓库。点击actions选项卡,按如下次序点击运行工作流(Actions)
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图25
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图26
可以从上传到Artifacts中下载生成的固件。
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图27

(七)使用esphome web烧录固件

打开谷歌浏览器,地址栏输入https://web.esphome.io/回车。点击CONNECT,选择连接esp32C3的串口
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图28
连接后点击install,并选择保存到桌面的固件文件,注意需要完全烧录(*.factory.bin)固件已经上传到附件。
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图29
烧录完成后如下所示

C4002人体存在传感器部署HA智能婴儿睡眠监测系统图30
重新上电后,我们不知道有没有联网,于是祭出大招,ESPConnect串口工具:浏览器打开:https://thelastoutpostworkshop.github.io/ESPConnect/
连接串口后,点击串口监视器可以查看当前串口输出信息。

C4002人体存在传感器部署HA智能婴儿睡眠监测系统图31如上,我们发现esp32c3已经连接网络。

(八)使用HA加入esp32C3

C4002人体存在传感器部署HA智能婴儿睡眠监测系统图32
接着使用之前保存的密钥,填入下方,点击确认。

C4002人体存在传感器部署HA智能婴儿睡眠监测系统图33
选择区域,可以跳过
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图34
这样我们完成了HA中加入C4002C4002 毫米波人体存在传感模块加入到HA中了,通过HA面板,我们可以发现传感器输出信息。

四、HomeAssistant应用

(一)HA设备面板

打开HA面板,点击esp32c3设备,
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图38
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图39
设备面板如上所示,有设备信息区域,查看当前模块的固件和MAC地址等。
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图40
传感器区域显示当前传感器输出数据。有当前状态、距离、运动速度、运动方向等
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图41
活动区域显示历史变化记录,能够迅速发现参数变化的时间点。
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图42
最后是配置区域,可以配置的有恢复出厂设置、可检测最小、最大范围,LED开关等
C4002人体存在传感器部署HA智能婴儿睡眠监测系统图43

(二)加入补光功能

本次测试使用 GPIO10 是esp32C3自带的 LED 灯,模拟补光灯,当夜晚家长观察孩子睡眠情况时使用HA面板打开补光灯照明。不使用孩子翻身等运动触发,避免频繁的灯光打扰孩子的休息。

    # LED 灯 (GPIO10)
    output:
      - platform: gpio
        pin: GPIO10
        id: led_output

    light:
      - platform: binary
        output: led_output
        name: "LED灯"
        id: led_light

五、项目不足与改进

1.初学HA,不能够使用HA相关功能,加上暂时没有支持HA的设备。
2.因编译文件缺失,无法下载,离线编译不可用,无法生成需要的固件,而github工作流编译速度快,系统错误少,唯一缺点是对国内用户不友好,经常断线,无法连接。
3.补光功能可以使用在主控板外借设备,因编译问题没有完整解决。
4.项目应设计相应的盒装,保护板子,外观缺失,可以使用其他材料改进。

六、相关链接:

  1. 活动规则
  2. 下单地址
  3. 产品资料



03.82.png
03.531.png
03putty_HA1.png

firmware.factory.rar

559.99 KB, 下载次数: 0

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

本版积分规则

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

硬件清单

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

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

mail