esphome-docs/components/sensor/ld2420.rst

451 lines
13 KiB
ReStructuredText
Raw Normal View History

LD2420 24Ghz mmWave Radar Sensor
================================
.. seo::
:description: Instructions for setting up LD2420 sensors.
:image: ld2420.jpg
Component
---------
.. _ld2420-component:
The ``ld2420`` sensor platform allows you to use the HLK-LD2420 motion and presence sensor.
The :ref:`UART <uart>` is required to be set up in your configuration for this sensor to work.
Depending on the firmware you have serial baudrates will be 256000 for any module with less than
firmware v1.5.3 and 115200 on newer versions. The tx_pin changed from ot2 to ot1 with firmware v1.5.3.
Firmware v1.5.4 and up now features the ability to observe gate energy signal levels and with this
release we can dynamically calibrate gate still and move thresholds.
This component has dynamic configuration functionallity with a compact UI format.
Select, number and button components provide configuration value inputs and control.
.. figure:: /images/ld2420.jpg
:align: center
:width: 50.0%
HLK-LD2420 Low power motion and presence sensor.
Pinouts
-------
.. list-table:: Firmware 1.5.2 and older
:widths: 25 25 25
:header-rows: 1
* - Pin#
- Name
- Function
* - 1
- 3v3
- VCC
* - 2
- GND
- GND
* - 3
- OT1
- Presence Signal Output
* - 4
- RX
- Serial Rx (to ESP Tx)
* - 5
- OT2
- Serial Tx (to ESP Rx)
.. list-table:: Firmware 1.5.3 and newer
:widths: 25 25 25
:header-rows: 1
* - Pin#
- Name
- Function
* - 1
- 3v3
- VCC
* - 2
- GND
- GND
* - 3
- OT1
- Serial Tx (to ESP Rx)
* - 4
- RX
- Serial Rx (to ESP Tx)
* - 5
- OT2
- Presence Signal Output
.. code-block:: yaml
# Example configuration entry
uart:
id: ld2420_uart
tx_pin: REPLACEME
rx_pin: REPLACEME
baud_rate: 115200
parity: NONE
stop_bits: 1
# The LD2420 has 16 time gate intervals (0-15) with a gate
# resolution of 0.70 meters
ld2420:
text_sensor:
- platform: ld2420
fw_version:
name: LD2420 Firmware
sensor:
- platform: ld2420
moving_distance:
name : Moving Distance
binary_sensor:
- platform: ld2420
has_target:
name: Presence
select:
- platform: ld2420
operating_mode:
name: Operating Mode
number:
- platform: ld2420
timeout:
name: Detection Presence Timeout
min_gate_distance:
name: Detection Gate Minimum
max_gate_distance:
name: Detection Gate Maximum
gate_select:
name: Select Gate to Set
still_threshold:
name: Set Still Threshold Value
move_threshold:
name: Set Move Threshold Value
button:
- platform: ld2420
apply_config:
name: Apply Config
factory_reset:
name: Factory Reset
restart_module:
name: Restart Module
revert_config:
name: Undo Edits
Platform
--------
.. code-block:: yaml
ld2420:
Configuration variables:
************************
**ld2420** (*Required*): Component platform.
Select
------
**Operating Modes:**
.. code-block:: yaml
select:
- platform: ld2420
operating_mode:
name: Operating Mode
The dynamic UI provides three operational modes: **Normal**, **Calibrate** and **Simple**. The select component allows
you to choose the active mode.
- **Normal**: This is the default mode. It sets the ld2420 in energy reporting mode and is availble with firmware
v1.5.4 or greater. When in this mode the module logs all gate energy levels continuouly in a local array making it
available for dynamic calibration functions.
- **Calibrate**: When calibration mode is selected the module will collect the average and peak energy levels,
reporting them every five seconds. The report is provided in the log console for information only. In order to
calibrate the gate configuration, no objects should be present in the target environment. The recording will
establish the mmWave noise floor levels and undesirable reflections or signal distortions peaks. This should be
collected for at least 30 seconds. Longer runs can catch more potential false signals when devices near the module
are used such as microwave ovens and other sources of noise.
When the **apply_config** button is pressed in calibration mode the LD2420 will be configured with calculated values
based on its collected noise floor data and the module will return to Normal Mode. Selecting any other mode drops the
session's collected noise data and no changed settings are staged. Once the **apply_config** action is performed, the
computed values will then persist. The gate values can be manually adjusted or calibrated again or you can use the
factory reset button to restore the module's default settings.
- **Simple**: Provides backward compatibility with firmware v1.5.3 and older and will be automatically set when the
detected firmware version is v1.5.3 or older.
Configuration variables:
************************
- **operating_mode** (*Required*): Provisions the operating mode select component.
Number
------
.. code-block:: yaml
number:
- platform: ld2420
presence_timeout:
name: Detection Presence Timeout
min_gate_distance:
name: Detection Gate Minimum
max_gate_distance:
name: Detection Gate Maximum
gate_select:
name: Select Gate to Set
still_threshold:
name: Set Still Threshold Value
move_threshold:
name: Set Move Threshold Value
gate_move_sensitivity:
name: Move Calibration Sensitivity Factor
gate_still_sensitivity:
name: Still Calibration Sensitivity Factor
gate_0:
move_threshold:
name: Gate 0 Move Threshold
still_threshold:
name: Gate 0 Still Threshold
gate_1:
move_threshold:
name: Gate 1 Move Threshold
still_threshold:
name: Gate 1 Still Threshold
Configuration variables:
************************
- **presence_timeout** (*Optional*): The time in seconds during which the occupied state (presence) will persist after
presence is no longer detected. Any energy detection within the time window restarts the countdown from this value.
Defaults to 120s. **Required** when ``min_gate_distance`` and ``max_gate_distance`` is specified.
- **min_gate_distance** (*Optional*): Minimum distance for move or still energy detection. Value between 0 and
``max_gate_distance`` - 1. Each increment equals 70 cm. Defaults to 1. **Required** when ``presence_timeout`` and
``max_gate_distance`` is specified.
- **max_gate_distance** (*Optional*): Maximum gate for movement detection. Value from 1 to 15. Each gate detects
movement and still energy at 70 cm increments. At the maximum value, the sensors range equates to 16 * 70 cm
resulting in an approximately 12-meter range; however, accuracy at this range may be diminished. The recommended
maximum value is 12 * 70 cm which results in approximately 9 meters. **Required** when ``presence_timeout`` and
``min_gate_distance`` is specified.
- **gate_still_sensitivity** (*Optional*): Gate still threshold calibration sensitivity factor. Defaults to 0.5 with a
range of 0-1, 0 = high and 1 = low.
- **gate_move_sensitivity** (*Optional*): Gate move threshold calibration sensitivity factor. Defaults to 0.5 with a
range of 0-1, 0 = high and 1 = low.
- **gate_select** (*Optional*): Selection of gate value to edit (gate # from 0 to 15). Gate thresholds
are edited by selecting the gate number and then adjusting the move and still thresholds. **Note that when this
variable is defined, the component will run in compact UI mode and the following two configuration variables are then
required:**
- **still_threshold** (*Optional*): Gate still value threshold level for motion energy detection on a currently
selected gate number. A value greater than that specified for the gate (distance) will trigger movement detection.
- **move_threshold** (*Optional*): Gate move value threshold level for still energy detection on a currently selected
gate number. A value less than that specified for the gate (distance) will trigger still detection.
- **gate_n** (*Optional*): Provides individual gate threshold number inputs. Range is ``gate_0`` to ``gate_15``.
**May not be used with** ``gate_select`` (above). Each gate entry requires a ``still_threshold`` and ``move_threshold``:
- **still_threshold** (*Required for each gate_n entry*): Gate still value threshold level for motion energy
detection on currently selected gate number. A value greater than that specified for the gate (distance) will
trigger movement detection.
- **move_threshold** (*Required for each gate_n entry*): Gate move value threshold level for still energy
detection on currently selected gate number. A value less than that specified for the gate (distance) will
trigger still detection.
Button
------
.. code-block:: yaml
button:
- platform: ld2420
apply_config:
name: Apply Config
factory_reset:
name: Factory Reset
restart_module:
name: Restart Module
revert_config:
name: Undo Edits
Four button components are available enabling configuration controls for editing, saving, restarting and factory reseting the LD2420 module.
Configuration variables:
************************
- **apply_config** (*Optional*): Saves both manual config tuning or the auto calibrate still and move threshold config settings.
- **restart_module** (*Optional*): Reboots the LD2420 modules.
- **revert_config** (*Optional*): Undoes in-progress edits prior to their application via the ``apply_config`` button.
- **factory_reset** (*Optional*): Restores a base set of LD2420 configuration values.
Factory Reset Values:
*********************
.. _ld2420-default_values_for_gate_threshold:
.. list-table::
:widths: 25 25
:header-rows: 1
* - Setting:
- Value:
* - Timeout
- 120s
* - Min Gate Distance
- 1
* - Max Gate Distance
- 12
.. list-table::
:widths: 25 25 25
:header-rows: 1
* - Gate Number:
- Move threshold
- Still threshold
* - 0
- 60000
- 40000
* - 1
- 30000
- 20000
* - 2
- 400
- 200
* - 3
- 300
- 250
* - 4
- 250
- 150
* - 5
- 250
- 150
* - 6
- 250
- 150
* - 7
- 250
- 150
* - 8
- 300
- 150
* - 9
- 250
- 150
* - 10
- 250
- 150
* - 11
- 250
- 150
* - 12
- 250
- 100
* - 13
- 200
- 100
* - 14
- 200
- 100
* - 15
- 200
- 100
Sensor
------
The ``ld2420`` sensor allows you to use your :doc:`ld2420` to approximate the distance
between the sensor and an object moving within its field of detection.
.. code-block:: yaml
sensor:
- platform: ld2420
moving_distance:
name : Moving Distance
Configuration variables:
************************
- **moving_distance** (*Optional*): Distance between the sensor and the detected moving target.
All options from :ref:`Sensor <config-sensor>`.
Binary Sensor
-------------
The ``ld2420`` binary sensor allows you to use your :doc:`ld2420` to sense presence.
.. code-block:: yaml
binary_sensor:
- platform: ld2420
has_target:
name: Presence
Configuration variables:
************************
- **has_target** (*Optional*): If a target is detected with either still or in movement **has_target** will be set true
for the duration of the **presence_time_window** setting.
Text Sensor
-----------
The ``ld2420`` text sensor provides version information for the :doc:`ld2420`.
.. code-block:: yaml
text_sensor:
- platform: ld2420
fw_version:
name: LD2420 Firmware
Configuration variables:
************************
- **fw_version** (*Optional*): Allows you to retrieve the :doc:`ld2420` firmware version.
Important Information:
**********************
Solid objects and noise outside the ``detection_gate_max`` and ``detection_gate_min`` may cause false
detections or result in abnormal gate thresholds. For example, a wall within the gate max range can result
in signal reflections. If your sensor reports unexpected detections, you should test it by placing it in a
completely open room with no moving objects.
Also, never place two or more sensors in a manner such that their detection fields overlap, as this will certainly
result in false detections.
Firmware update capability is available using the LD2420 tool provided by HLKTech.
You will need to email them and request the bin file.
At this time only firmware version v1.5.6 and up can be upgraded.
**DO NOT** attempt to update to older firmware versions. It will brick the module.
See Also
--------
- Official Datasheet/Manuals are still in development; for info email `sales@hlktech.com`.
- Official web site `https://www.hlktech.net/`
- :ghedit:`Edit`