HLK-LD2450 Initial experiments to connect to HomeAssistant

The distance resolution of p3 was indeed a bug, we have fixed it, thank you very much for your feedback!
Now it is:

int16_t p3_distance_resolution = (uint16_t((bytes[27] << 8) | bytes[26] ));

You can fix it in your yaml.

1 Like

LD2450 Documentation

We have translated the hilink documentation into English using an online tool. It may not be exact, but it can help to get a reference.
Included is a new document, a temperature test document for the LD2450.

1 Like

2A beta firmware V230729_3_Beta - Tri-area setup detection
We spent some time debugging and optimizing and it seems to be working so far, but it’s still Beta and we can’t guarantee anything, so feel free to come along and test and experiment.

  • The firmware adds coordinate settings for the three regions, the coordinates are set in such a way that the x-axis is minimum, maximum. y-axis is minimum, maximum.
  • When the target enters the region, it will trigger the corresponding properties. A binary attribute whether there are people or not, and a numeric attribute how many people are in the area.
    We have a simple video demonstration below of a person walking into an area near a 3d printer, then lighting up a desktop lamp.

For firmware upgrades, please refer to our previous 1U documentation, and be sure to get the firmware file belonging to 2a from dropbox: OTA Update - SCREEK WORKSHOP

beta firmware file: Dropbox - human sensor 2a by SCREEK - Simplify your life

demo video: SCREEK Human Sensor 2A beta firmware V230729_3_Beta - Tri-area setup detection Demo - YouTube

1 Like

Nice work done there @screek-workshop . This one is my favourite mmwave sensor and would be very happy to watch him develop. Hope to be a good alternative to the expensive fp2 from aqara.
I have, slightly changed the code from tsunglung to use internal pull up resistors and added the official documentation on my github, which is also in english


tsunglung did a great job rewriting a custom library in c++, while we simply roughed out parsing the data in yaml.

Hopefully this library will continue to add more features and be officially supported soon.

The pullup resistor approach is great, I don’t know if we’ll have to do it again with the new firmware, but we’ve kept an internal pullup parameter.
In the earliest firmware, this pullup was not enough and needed to trigger a high level, fortunately hilink has fixed this completely in the new firmware, making the 3.3v level well supported, which makes it perfect for the esp32.

1 Like

Known issues: For Human Sensor 2A(LD2450)'s multi-person target jumping issue

:expressionless:Update 07-29: We’ve heard from the hilink devs that the new app feature, toggle multiplayer mode is expected to be released in mid-August. We’re looking forward to how much simultaneous tracking can actually be effective at that time.

Some users feedback that the multi-target detection of Radar 2A will jump suddenly, and the recognition is very good when it is one, while there will be some error when it is multiple.

We talked to the development department of hilink and got this feedback:

  • The module supports single target and multi-target monitoring, the current firmware defaults to single target, if there are multiple movement targets, the algorithm is going to calibrate the one with the highest athletic ability value, and there will be the phenomenon described above.
  • Multi-target can be tested with our upper computer tool, and the next step will be to set it up through the OTA development function. Because after the development, to be combined with the customer’s specific application, sometimes the customer may just do motion detection on the line, now the firmware is the easiest to use. app will be open later, motion target tracking display, then will provide multi-target switching function. In the future, we will provide setting switching protocol.
1 Like

I bought one of these sensors for testing, I’m waiting for it to arrive.
Would it be possible to define a maximum detection angle?
E.g. ignore any reading above 50°?

We have consulted with the developers of ld2450 on this issue, and the response was that it will be opened gradually in the future, first to the mobile app (via Bluetooth) and later to the Bluetooth protocol.
Including the switching of multiplayer mode, it will also be such a gradual realization.
This will probably be close to the route of LD2410.

  • We regulated the frequency of the output data, reducing them to be sent out only when necessary.
  • We adjusted the RF power of the WIFI to keep it in a moderately efficient way.
  • The light sensor only sends out updated data when the difference is greater than 1 lx and the interval is greater than 1 second at the same time in two cases.

Screek Workshop | 2A beta firmware V230729_3_Beta - Tri-area setup detection | Facebook

Any video demo with exclusion zone?
For example if you leave a room, the ceiling fan/stand fan turns off

We try to be able to do some documentation like this explaining how to trigger when leaving the zone, currently if you are using our new firmware all you need to do is, set the location range of zone1 and use automation to detect when the human presence of zone1 becomes off.

1 Like

Ah yes, for the location range, say if the ceiling fan is located in the center of the room around 3m high.
So that zone range Y needs to be below 2m to avoid fan detection?

In our tests, it seems that neither fans nor appliances cause the ld2450 to trigger.
Is the triggering happening at your place?

The zone function is mainly used to detect the presence of a certain zone.
We didn’t think it could be used to exclude a zone.
This is interesting.

1 Like

No, i haven’t purchased yet
Bought a few mmwave sensors suggested by this forum in the past but they all keep getting triggered by fans.
So I’m curious how the multi zone solution could solve that issue

We have created a temporary website to portray all the issues regarding the 2A: https://2a.screek.io/

Some advanced radars are able to avoid signals like fans, they differentiate between information like the frequency of the target.
The LD2450 looks to be a little better radar.
We’re still testing some newer signals like the LD1125H and hope to share them with you sometime.


Would be great if you could put a video demo with fans.
I tried tweaking the settings for my mmwave sensors but it’s always getting detected.

As for the multizone, how exactly does it split the areas in a room? Would i need to just estimate which zone I’m in based on the range detected by sensor?

The documentation of the LD2450 states that placing the sensor is very important when trying to omit things like fans:

This product needs to be installed in a suitable environment. If it is used in the following environment, the
detection effect will be affected:

The presence of non-human objects in the sensing area that are in constant motion, such as animals,
curtains that are constantly swinging, large green plants facing the air vents, etc.

The presence of a large area of strong reflectors in the sensing area, which is directly in front of the
radar antenna can cause interference

For wall mounting, it is necessary to consider external interference from air conditioners, fans, etc. on
top of the room.

So unless the sensor you have filter this out in it’s firmware I guess placement is very important there too.

we update a app faq: https://2a.screek.io/app-faq

The fan exclusion is pretty good in the general performance so far, and we’ll try to record a video sometime.
But the new version of the LD2450, test firmware v1.23, seems to reduce the sensitivity, causing the 3d printer to be detected.

hlk says it’s working on an area exclusion feature to exclude fixed interference rather than relying on the sensitivity parameter.
We’ve done some explaining in the app-faq of the information we understand.

If you don’t need x and y coordinate localization, you can wait for us to test and research a couple of new radars that are based on breathing patterns to determine humans.

1 Like

Firmware update:


:dna:Coordinate input can be frustrating because the coordinates have some deviation and will move. We have added a Tolerance option.


:bug::gun: Fixed an issue where setting the coordinates of region 0 would always result in no one triggering the region.

🪛Adjusted to set the default coordinates of the three regions to 0 so that it doesn’t show three regions triggering the first time you use it, causing confusion.

🪛 Added to set the light sensor reporting interval of 5 minutes to always report once to prevent losing updates for too long. Its current strategy is to push an update once for more than 1lux changes greater than 1 second (as fast as one second), and once if there is no change for five minutes.

🪛will modify the zone setting when the policy of writing to flash to 15 seconds, after 15 seconds after the modification will be saved as persistent data.