跳转到内容

DFRobot 毫米波雷达

DFRobot mmWave Radar (又称 SEN0395)是一款 24GHz 雷达,可用于人体存在检测。它可以检测微小的动作, 与 PIR 传感器相比,它可以持续检测存在。例如,这可以用于 在您进入房间时打开灯、只要您在里面就一直保持灯亮(无需在 传感器前挥手)以及几乎在您离开房间后立即关灯。

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

DFRobot mmWave 雷达 / 存在检测传感器
# Example configuration entry
dfrobot_sen0395:
binary_sensor:
# Information coming from uart bus
- platform: dfrobot_sen0395
name: Mmwave Detected via UART
# Information coming from dedicated gpio (IO2)
- platform: gpio
name: Mmwave Detected via GPIO
device_class: motion
pin:
number: GPIOXX
mode: INPUT_PULLDOWN
switch:
# Switch to turn on/off detection
- platform: dfrobot_sen0395
name: Mmwave Active

仅当您想更改传感器的设置或通过 UART 读取其状态时,才需要定义 hub 组件(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 引脚 连接到 mmWave 雷达的 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和Hub 组件,然后使用其二进制传感器平台 为每个存在传感器创建单独的二进制传感器。

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

  • 二进制传感器的所有其它选项。

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

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

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

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

    • sensor_active :启用时,上报存在检测结果;禁用时,不报告存在。

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

    • turn_on_led :启用时,mmWave 传感器的 LED 在运行期间闪烁;禁用时,LED 始终 保持关闭。

  • 开关的所有其它选项。

WARNING

对 mmWave 雷达配置的每次更改都会触发一次对其内部闪存/EEPROM 的写入。 该存储器的写入次数有限,因此请避免频繁更改设置的做法。 确定适合您的设备的设置,并避免在非绝对必要的情况下更改它们。

DFRobot mmWave 雷达有一些可以更改的设置。这些设置保存在非易失性存储器中, 无需在每次启动时设置。

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

on_...:
- dfrobot_sen0395.settings:
factory_reset: true
detection_segments:
# Define between one and four segments
- [0cm, 3m]
- [5.1m, 6.6m]
output_latency:
delay_after_detect: 0s
delay_after_disappear: 0s
sensitivity: 7
  • id (可选, ID):手动指定应在上面更改设置的 mmWave 传感器的 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 (必选, Time, 可模板化):在发出检测到人的信号前等待的时间。 以 25 ms 为步长指定。出厂默认为 2.5s。 返回 -1 则保持该值不变。

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

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

重启传感器。

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