DFRobot C4001 Радарный датчик присутствия (mmWave)

Технические характеристики DFRobot C4001, технология FMCW, детекция дыхания, настройка через UART/I2C и примеры кода для ESP32, Arduino и MicroPython.

Присутствие человека UART I2C mmWave

Обзор

DFRobot C4001 — это современный радарный датчик миллиметрового диапазона (24 ГГц), использующий технологию FMCW (Frequency Modulated Continuous Wave). В отличие от обычных PIR-датчиков, реагирующих только на изменение теплового фона при движении, C4001 способен обнаруживать «микро-движения», такие как движение грудной клетки при дыхании.

DFRobot C4001 (SEN0610) позволяет разделить понятия «движение» (перемещение объекта) и «присутствие» (статичный человек). Технология FMCW анализирует доплеровский сдвиг и фазу отраженной волны, что обеспечивает точность детекции до нескольких сантиметров на расстоянии до 12 метров.

C4001 mmWave Sensor
Спецификации

Характеристики C4001

Датчик обладает высокой чувствительностью и гибкой системой порогов срабатывания.

Напряжение питания 3.3В – 5.5В DC (реком. 5В)
Потребляемый ток ~50 мА (средний), 100 мА (пик)
Диапазон детекции 0.3 – 12 метров
Угол обзора (FoV) 120° (Г) / 120° (В)
Время отклика Движение: <100 мс | Присутствие: 1-5 сек
Уровни чувствительности 0 (мин) – 9 (макс)
Скачать Datasheet
Интерфейсы

Распиновка C4001

Датчик SEN0610 поставляется с 6-пиновым разъемом. Важно: UART и I2C нельзя использовать одновременно без переключения режимов.

Пин Тип Описание Параметр
VCC Питание Вход (3.3В - 5.5В) DC
GND Земля Общий минус -
RX / SDA Data UART RX или I2C SDA TTL 3.3В
TX / SCL Clock UART TX или I2C SCL TTL 3.3В
GP1 IO Индикатор присутствия High = Person
GP2 IO Индикатор движения High = Motion
Подключение

Настройка и связь

1. UART Интерфейс (Основной)

По умолчанию датчик работает через UART.

  • Baudrate: 115200.
  • Формат данных: 8 бит данных, 1 стоп-бит, без контроля четности.
  • Команды: Датчик использует HEX-фреймы. Например, чтение данных происходит автоматически в потоковом режиме, но конфигурация (дистанция, пороги) требует отправки команд вида 55 5A ....

2. I2C Интерфейс

  • Адрес по умолчанию: 0x20.
  • Для работы через I2C необходимо убедиться, что библиотека поддерживает этот режим. Скорость шины до 400 кГц.
Схема (I2C) C4001 Пин ESP32 (GPIO) Arduino Uno
VCC VCC 5V / 3.3V 5V
GND GND GND GND
SDA SDA GPIO 21 A4
SCL SCL GPIO 22 A5
Отладка

Устранение неполадок и монтаж

Радары 24 ГГц крайне чувствительны к окружающей среде. Соблюдайте следующие правила:

Ложные срабатывания (Шторы, Вентиляторы)
Датчик видит движение штор от кондиционера или вращение лопастей вентилятора. **Решение:** Направьте датчик в сторону от движущихся объектов или уменьшите максимальную дистанцию детекции через команду настройки дистанции.
Влияние вибраций корпуса
Если датчик закреплен на вибрирующей поверхности (например, на тонкой перегородке рядом с дверью), он может «видеть» сам себя. **Решение:** Используйте жесткое крепление или демпфирующие прокладки.
Проникновение сквозь стены
Радиоволны 24 ГГц проходят через гипсокартон, дерево и пластик. Датчик может сработать на человека в соседней комнате. **Решение:** Снизьте мощность (чувствительность) или ограничьте дальность обнаружения до размеров текущей комнаты.
Код

Примеры программирования

Arduino Arduino (Библиотека DFRobot)
C++
#include <DFRobot_C4001.h>

// Для ESP32 используем Serial2
DFRobot_C4001 radar(&Serial2);

void setup() {
  Serial.begin(115200);
  Serial2.begin(115200, SERIAL_8N1, 16, 17); // RX=16, TX=17
  
  if (radar.begin() != 0) {
    Serial.println("Датчик не найден!");
    while(1);
  }
  
  // Установка дистанции детекции (например, 5 метров)
  radar.setDetectionDistance(0, 500); // в сантиметрах
  Serial.println("Радар запущен.");
}

void loop() {
  if (radar.readStatus() == 0) {
    Serial.print("Присутствие: ");
    Serial.print(radar.getPresence() ? "ДА" : "НЕТ");
    Serial.print(" | Дистанция: ");
    Serial.print(radar.getDistance());
    Serial.println(" см");
  }
  delay(200);
}
ESPHome ESPHome (Binary Sensor via GPIO)
YAML

Самый стабильный способ для Home Assistant — использование пинов GP1/GP2.

binary_sensor:
  - platform: gpio
    pin: GPIO25 # Подключено к GP1 датчика
    name: "Human Presence"
    device_class: presence
    
  - platform: gpio
    pin: GPIO26 # Подключено к GP2 датчика
    name: "Human Motion"
    device_class: motion

# Опционально: UART для настройки
uart:
  id: radar_uart
  tx_pin: GPIO17
  rx_pin: GPIO16
  baud_rate: 115200
MicroPython MicroPython (UART Parser)
Python
from machine import UART, Pin
import time

# Настройка UART1 (ESP32: TX=17, RX=16)
uart = UART(1, baudrate=115200, tx=17, rx=16)

def read_radar():
    if uart.any():
        data = uart.read(10)
        # Упрощенный парсинг HEX протокола C4001
        if data and data[0] == 0x55 and data[1] == 0x5A:
            presence = data[3] # Байт статуса присутствия
            distance = (data[5] << 8) | data[6]
            return presence, distance
    return None, None

while True:
    pres, dist = read_radar()
    if pres is not None:
        print(f"Присутствие: {'Да' if pres else 'Нет'}, Дистанция: {dist} см")
    time.sleep(0.1)

Итоги

C4001 — это профессиональное решение для тех, кому недостаточно возможностей PIR-датчиков. Благодаря технологии FMCW, он идеально подходит для автоматизации света в санузлах, рабочих кабинетах и спальнях, где человек может долгое время оставаться практически неподвижным.

Посмотреть примеры кода Скачать Datasheet