跳转到内容

DFRobot 毫米波雷达

DFRobot 毫米波雷达(又名 SEN0395)是一款 24GHz 雷达,可用于人体存在检测。它可以检测微小的动作,与 PIR 传感器相比,它可以持续检测存在。这非常有用,例如,当您进入房间时打开灯,只要您在那里就保持开灯(无需向传感器挥手),并在您离开房间后几乎立即关闭灯。

可以仅使用单个 GPIO 引脚来使用此传感器;但是,如果您希望更改其设置,则需要在设备配置中使用 UART 组件(及其所需的 GPIO 引脚)。

DFRobot 毫米波雷达 / 存在检测传感器
# 示例配置条目
dfrobot_sen0395:
binary_sensor:
# 通过 uart 总线获取信息
- platform: dfrobot_sen0395
name: Mmwave Detected via UART
# 通过专用 gpio (IO2) 获取信息
- platform: gpio
name: Mmwave Detected via GPIO
device_class: motion
pin:
number: GPIOXX
mode: INPUT_PULLDOWN
switch:
# 开启/关闭检测的开关
- platform: dfrobot_sen0395
name: Mmwave Active

仅当您想要更改传感器的设置或通过 UART 读取其状态时,才需要定义集线器组件(dfrobot_sen0395: 条目)。如果您只想确定存在/占用状态,单独一个 GPIO 就足够了。当您定义 dfrobot_sen0395: 时,您需要在配置中有 uart: 条目,并且必须定义 TX 和 RX 引脚,波特率必须设置为 115200

如果有多个 UART 组件可用,可以定义此组件的多个实例:

dfrobot_sen0395:
- id: mmWave_1
uart_id: uart_1
- id: mmWave_2
uart_id: uart_2
...
  • id (可选, ID): 手动指定用于代码生成的 ID。如果要定义此组件的多个实例,则需要此选项。

  • uart_id (可选, ID): 如果要使用多个 UART 总线,手动指定 UART 的 ID。

要确定存在状态,您可以简单地使用 GPIO,并将处理器的一个 GPIO 引脚连接到毫米波雷达的 IO2 引脚。使用专用 GPIO 引脚可能具有优势,因为它可以从睡眠中唤醒处理器。

如果您不想/不需要更改雷达的设置,只需要确定存在/占用状态,则不需要 dfrobot_sen0395:uart: 组件。

binary_sensor:
- platform: gpio
name: Presence Detected via GPIO
device_class: motion
pin:
number: GPIOXX
mode: INPUT_PULLDOWN

通过串行连接 (UART) 连接传感器可以更改其设置以及读取其状态。但请注意,UART 外设无法唤醒处理器;如果您计划让处理器进入睡眠状态,您可能仍需要使用上面描述的 GPIO 引脚方法(除了 UART 之外)。

首先,设置 UART集线器组件,然后使用其二值传感器平台为每个存在传感器创建单独的二值传感器。

binary_sensor:
- platform: dfrobot_sen0395
name: Presence Detected via UART
  • dfrobot_sen0395_id (可选, ID): 上面定义的 DFRobot 毫米波组件的 ID。当定义了多个 dfrobot_sen0395 组件实例时需要此选项。

  • 来自 Binary Sensor 的所有其他选项。

开关组件用于启用/禁用各种模块功能/特性。

switch:
- platform: dfrobot_sen0395
dfrobot_sen0395_id: mmWave
type: sensor_active
name: mmWave Active
  • dfrobot_sen0395_id (可选, ID): 上面定义的 DFRobot 毫米波组件的 ID。当定义了多个 dfrobot_sen0395 组件实例时需要此选项。

  • type (必需): 以下之一:

    • presence_via_uart : 启用时,模块通过串行连接和 GPIO 引脚发送存在信息;禁用时,仅通过 GPIO 引脚指示存在状态。

    • sensor_active : 启用时,报告存在检测;禁用时,不会报告存在状态。

    • start_after_boot : 启用时,传感器将在上电后立即启动;禁用时,必须手动启动传感器。

    • turn_on_led : 启用时,毫米波传感器的 LED 在运行时闪烁;禁用时,LED 将始终保持关闭。

  • 来自 Switch 的所有其他选项。

WARNING

每次更改毫米波雷达的配置都会触发对其内部 flash/EEPROM 的写入。此存储器的写入周期是有限的,因此请避免频繁更改设置的做法。确定适合您设备的设置,除非绝对必要,否则不要更改它们。

DFRobot 毫米波雷达有几个可以更改的设置。这些设置保存在非易失性存储器中,不需要在每次启动时设置。

settings 动作允许更改毫米波雷达内部参数/设置的任意数量。使用此动作时,任何未指定的参数将保持不变。所有设置都是可模板化的。

on_...:
- dfrobot_sen0395.settings:
factory_reset: true
detection_segments:
# 定义一到四个分段
- [0cm, 3m]
- [5.1m, 6.6m]
output_latency:
delay_after_detect: 0s
delay_after_disappear: 0s
sensitivity: 7
  • id (可选, ID): 手动指定要更改设置的毫米波传感器的 ID。如果只定义了一个雷达,则此选项可选。

  • factory_reset (可选, boolean): 如果设置为 true,将执行传感器出厂重置(如果存在其他选项,则在更改其他选项之前执行)。如果未设置或设置为 false,则忽略此选项。

  • detection_segments (可选, list): 检测分段列表。分段指定从哪里到哪里应该触发检测。可以指定一到四个分段,范围从 0cm 到 9m。距离应以 15cm 的步长定义。请注意,指定的范围会在内部进行舍入。分段可以在一维或二维列表中定义。必须定义成对的值(从距离到距离)。默认是一个从 0cm 到 3m 的范围。

    示例

detection_segments:
- [0cm, 3m]
- [5.1m, 6.6m]

在上面的示例中,如果一个人存在于 0cm 到 3m 之间(距离传感器)或 5.1m 到 6.6m 之间的范围内,传感器将触发(意味着检测到人)。如果一个人存在于 3.1m 到 5m 或 6.7m 到 9m 之间,则不会触发。

detection_segments:
- !lambda |-
return 0;
- !lambda |-
return return id(mwave_max_distance).state;

分段值可以使用 lambda 定义,因此您可以根据其他实体设置距离。距离定义为以米为单位的浮点数(10cm = 0.1)。如果返回负值(-1),则不会设置该分段。

  • output_latency (可选, dictionary):

    • delay_after_detect (必需, 时间): 在发出检测到人的信号之前等待的时间。以 25ms 的步长指定。出厂默认值为 2.5s。值可模板化:返回秒值(100ms = 0.1)。返回 -1 保持值不变。

    • delay_after_disappear (*必需, 时间): 在发出不再检测到人的信号之前等待的时间。以 25ms 的步长指定。出厂默认值为 10s。值可模板化:返回秒值(100ms = 0.1)。返回 -1 保持值不变。

  • sensitivity (可选, int): 设置传感器的灵敏度。范围从 0 到 9。值可模板化:返回 0-9。返回 -1 保持值不变。

重启传感器。

on_...:
dfrobot_sen0395.reset:
  • id (可选, ID): 手动指定毫米波组件的 ID。当定义了此组件的多个实例时很有用。