LW IT Solutions
« Przegląd bloga /Smart Home/Tutorials / Tutorial: Konfiguracja stref radaru LD2450 w ESPHome...
Ten artykuł w innych językach:

Tutorial: Konfiguracja stref radaru LD2450 w ESPHome i Home Assistant

Tutorial: Konfiguracja stref radaru LD2450 w ESPHome i Home Assistant
Spis treści
  1. Co czujnik naprawdę podaje
  2. Ustalenie początku układu przed wszystkim innym
  3. Konfiguracja – i miejsce, w którym mieszka strefa
  4. Pomiar strefy zamiast zgadywania
  5. Automatyzacja – i to, co każe jej migać
  6. Co i tak idzie potem nie tak
  7. Pytania i odpowiedzi
  8. Źródła

Radar obecności typu LD2450 potrafi coś, czego czujnik ruchu nigdy nie potrafił: mówi, gdzie. Do trzech celów, każdy ze współrzędną x i y w milimetrach, odświeżanych kilka razy na sekundę.

Ciekawe pytanie staje się przez to pytaniem geometrycznym. Strefa to cztery liczby – po dwie na oś – a wszystko, co czyni taki układ użytecznym albo uciążliwym, dzieje się w tym, jak te cztery liczby powstają.

Siatka współrzędnych w rzucie z góry z czujnikiem w początku układu, jego klinem wykrywania, dwiema prostokątnymi strefami we współrzędnych milimetrowych i śledzonym celem, obok tabela granic stref
Początek układu leży w czujniku, y biegnie do przodu, x w poprzek i jest ujemny po lewej. Strefa jest prostokątem w tym układzie – nie w pokoju.

Co czujnik naprawdę podaje

LD2450 to radar 24 GHz śledzący jednocześnie do trzech celów. Na każdy cel podaje trzy liczby: współrzędną x, współrzędną y oraz prędkość – dwie pierwsze w milimetrach, ostatnią w centymetrach na sekundę, przy czym znak ujemny oznacza ruch w stronę czujnika.

Właśnie tym różni się od mniejszego rodzeństwa. LD2410 odpowiada tylko na to, czy coś jest i mniej więcej jak daleko, w podziale na bramki odległości. Oddzielić biurka od drzwi nie potrafi, bo nic nie wie o tym, w którym kierunku leży jedno i drugie.

Dwie właściwości warto poznać przed jakimkolwiek montażem. Obszar wykrywania jest klinem około 120 stopni, czyli po 60 stopni na każdą stronę kierunku patrzenia – wszystko poza nim pozostaje niewidoczne, niezależnie od odległości. A użyteczny zasięg wewnątrz pomieszczeń wynosi około sześciu metrów, przy czym dokładność współrzędnych spada wyraźnie wcześniej.

Ustalenie początku układu przed wszystkim innym

Każda liczba strefy odnosi się do układu współrzędnych, którego początkiem jest sam czujnik. Oś y wskazuje kierunek, w którym patrzy płytka; oś x biegnie w poprzek, ujemna po lewej, dodatnia po prawej, patrząc zza czujnika.

Wynikają z tego trzy rzeczy, a wszystkie trzy taniej załatwić przed przyklejeniem modułu.

Czujnik zamontowany obrócony o dziewięćdziesiąt stopni zamienia osie, a każdą strefę narysowaną na rzucie trzeba przenieść z zamianą. Czujnik zamontowany do góry nogami odbija oś x, więc lewa i prawa zamieniają się miejscami, a strefa ląduje po drugiej stronie pokoju. A czujnik przesunięty o dwadzieścia centymetrów w ładniejsze miejsce unieważnia wszystkie strefy naraz, bo wszystkie mierzono z poprzedniego położenia.

Praktyczne położenie montażowe LD2450 to ściana na wysokości około 1,2 do 1,5 metra – mniej więcej na wysokości bioder. Wyżej radar patrzy na ludzi z góry, a nie w poprzek, i współrzędna y mierzy wtedy przekątną zamiast odcinka po podłodze. Położenie sufitowe jest zadaniem innego czujnika.

Konfiguracja – i miejsce, w którym mieszka strefa

Strona ESPHome jest krótka. Radar rozmawia po łączu szeregowym z prędkością 256 000 bodów, a komponent robi z tego encje.

uart:
  id: uart_radar
  tx_pin: GPIO17
  rx_pin: GPIO16
  baud_rate: 256000
  parity: NONE
  stop_bits: 1

ld2450:
  id: radar
  uart_id: uart_radar
  throttle: 1000ms

binary_sensor:
  - platform: ld2450
    ld2450_id: radar
    has_target:
      name: "Obecnosc"
    zone_1:
      occupancy:
        name: "Biurko zajete"
    zone_2:
      occupancy:
        name: "Strefa drzwi zajeta"

sensor:
  - platform: ld2450
    ld2450_id: radar
    target_1:
      x:
        name: "Cel 1 X"
      y:
        name: "Cel 1 Y"
      speed:
        name: "Cel 1 predkosc"
    zone_1:
      target_count:
        name: "Cele przy biurku"

number:
  - platform: ld2450
    ld2450_id: radar
    presence_timeout:
      name: "Czas podtrzymania"
    zone_1:
      x_begin:
        name: "Strefa 1 X poczatek"
      y_begin:
        name: "Strefa 1 Y poczatek"
      x_end:
        name: "Strefa 1 X koniec"
      y_end:
        name: "Strefa 1 Y koniec"

Ustawienie throttle jest najbardziej opłacalne ze wszystkich. Bez niego radar melduje kilka razy na sekundę, a każdy taki meldunek staje się w Home Assistant zmianą stanu. Jedna sekunda w zupełności wystarcza do oświetlenia i chroni bazę danych przed przyrostem o megabajt dziennie na czujnik.

Zaskakującym szczegółem jest to, gdzie mieszkają granice stref. Nie są wartościami w pliku YAML – to liczby we flashu samego modułu radarowego, a ESPHome pokazuje je jako encje liczbowe, aby dało się je raz ustawić. To wygodne, bo strefę da się wtedy poprawić z telefonu, stojąc w pomieszczeniu. To zarazem pułapka, bo wymieniony moduł wraca ze strefami fabrycznymi, a nic w konfiguracji nie mówi, jak brzmiały wcześniej. Cztery liczby na strefę należą do komentarza w pliku YAML, choćby tylko jako dokumentacja.

Pomiar strefy zamiast zgadywania

Granice stref wzięte z rzutu bywają błędne na tyle często, że pomiar idzie szybciej. Pomiar wymaga jednej osoby, pięciu minut i dwóch czujników współrzędnych z powyższej konfiguracji.

Stanięcie w każdym narożniku zamierzonej strefy i odczytanie wartości x oraz y daje prostokąt wprost. Cztery narożniki, osiem liczb, a ich wartości skrajne to granice. Warto dodać do tego tolerancję około dwudziestu centymetrów na stronę, bo człowiek nie jest punktem: radar podaje środek odbicia, a ten wędruje po ciele przy każdym obrocie.

Pomiary narozne przy biurku (x / y w mm)

  z przodu z lewej     380 /  840
  z przodu z prawej   1760 /  810
  z tylu z lewej       420 / 2310
  z tylu z prawej     1780 / 2360

Strefa 1 z tolerancja:  x  300 … 1800     y  800 … 2400

Do tej samej sesji należą dwa sprawdzenia. Przejście przez strefę i wyjście z niej powinno przełączyć czujnik zajętości czysto w obie strony. A stanięcie tuż poza granicą przełączyć go nie powinno – jeśli jednak przełącza, strefa jest większa niż zamierzono albo odbicie przychodzi skądinąd niż od osoby.

Drugie sprawdzenie znajduje błędy montażu. Metalowa szafa, grzejnik albo duże lustro odbijają sygnał radaru i wytwarzają cel stojący tam, gdzie nikogo nie ma. Takie widmo poznaje się po tym, że stoi całkiem nieruchomo i nigdy nie odchodzi; zaradzi temu inny kąt czujnika, a nie mniejsza strefa.

Automatyzacja – i to, co każe jej migać

Przy działającej strefie sama automatyzacja jest niewidowiskowa – i bez jednej linii by migała.

binary_sensor:
  - platform: ld2450
    ld2450_id: radar
    zone_1:
      occupancy:
        name: "Biurko zajete"
        filters:
          - delayed_off: 20s

To delayed_off stanowi różnicę między lampą palącą się, dopóki ktoś pracuje, a lampą gasnącą, gdy tylko osoba odchyli się do tyłu. Radar traci cel nieruchomy łatwiej niż ruchomy, a dwadzieścia sekund podtrzymania nic nie kosztuje, usuwając za to całą klasę zażaleń.

Jego odpowiednikiem jest czas podtrzymania w samym module, rozstrzygający, jak długo radar melduje cel po ostatnim wykryciu. Oba opóźnienia się sumują: pięć sekund podtrzymania plus dwadzieścia sekund filtra oznacza, że światło gaśnie dwadzieścia pięć sekund po opuszczeniu miejsca. To należy ustawić świadomie, a nie przypadkiem.

Po stronie Home Assistant jedna zasada oszczędza dużo szukania usterek: automatyzacja powinna reagować na czujnik strefy, nigdy na surowe współrzędne. Wyzwalacz na liczbowej wartości x odpala przy każdym drgnieniu podawanego środka, a ta sama nieruchomo siedząca osoba przekracza taki próg kilkadziesiąt razy na godzinę.

Co i tak idzie potem nie tak

Trzy zjawiska odpowiadają za większość pozostałych kłopotów, a każde ma inną radę.

Pierwszym jest ruch, który nie jest człowiekiem. Wentylator, firanka w przeciągu, wisząca roślina – wszystkie się poruszają, wszystkie odbijają, a dla radaru wyglądają jak powolny cel. Strefa je omijająca to odpowiedź najczystsza; gdzie się nie da, pomaga warunek minimalnej prędkości, bo zakłócenia rzadko dają stały kierunek.

Drugim jest pokój sąsiedni. Dwadzieścia cztery gigaherce przechodzą przez płytę gipsową z niewielką stratą, więc strefa przyłożona do ściany obejmuje także kanapę za nią. Współrzędne nie mówią nic o ścianach, bo radar nic o nich nie wie. Znajdzie to wyłącznie pomiar, a warto go wykonać celowo: ktoś chodzi po sąsiednim pokoju, a liczba celów jest obserwowana.

Trzecim jest to, że drugi radar w tym samym pomieszczeniu zakłóca pierwszy. Dwa moduły LD2450 na tej samej częstotliwości skierowane na siebie wytwarzają w obu cele nienależące do żadnego z nich. Gdzie potrzebne są dwa, powinny patrzeć od siebie, a nałożenie ich klinów pozostać niewielkie.

Pytania i odpowiedzi

Dlaczego wysoki montaż przesuwa podawane położenia i czy pomiar narożników to kompensuje?

Dlatego, że radar mierzy odległość wzdłuż linii widzenia, a nie wzdłuż podłogi. Jeśli czujnik wisi o h wyżej niż miejsce na ciele, od którego odbija się sygnał, dla osoby stojącej w poziomej odległości d przed nim podaje współrzędną y wynoszącą w przybliżeniu √(d² + h²). Przy różnicy wysokości jednego metra osoba stojąca metr przed czujnikiem pojawia się w odległości około 1,41 metra, a osoba oddalona o cztery metry – w odległości 4,12 metra. Zniekształcenie jest więc duże blisko czujnika i małe w oddali.

Pomiar narożników częściowo to kompensuje, bo odczytane wartości zawierają już zniekształcenie. Obowiązują jednak tylko dla postawy, w której je zmierzono. W pozycji siedzącej odbijający środek ciała leży niżej, różnica wysokości rośnie, a to samo miejsce na podłodze oddala się w meldunkach od czujnika: jeśli różnica wzrośnie z jednego do 1,3 metra, osoba metr przed czujnikiem pojawi się w odległości 1,64 zamiast 1,41 metra. Daje to ponad 20 centymetrów, czyli tyle, ile cała tolerancja zalecana w artykule na każdą stronę.

Na wysokości bioder, zalecanej w artykule, czujnik znajduje się mniej więcej na wysokości ciała, zarówno u osoby stojącej, jak i siedzącej. Różnica wysokości pozostaje mała, a błąd w zwykłej odległości roboczej leży wyraźnie poniżej zalecanej tolerancji. Właśnie to przemawia za tą wysokością montażu: strefa obowiązuje wtedy niezależnie od tego, czy przy biurku się stoi, czy siedzi.

Czy liczba celów w strefie nadaje się do liczenia osób?

Tylko w przybliżeniu. Moduł śledzi w całym obszarze wykrywania najwyżej trzy cele, nieruchomo siedzącą osobę traci łatwiej niż poruszającą się, a widmo wytworzone przez metalową szafę liczy się jako dodatkowy cel. Do rozstrzygnięcia, czy strefa jest zajęta, lepiej nadaje się czujnik zajętości z podtrzymaniem.

Czy czujniki współrzędnych są jeszcze potrzebne po zmierzeniu stref?

Do automatyzacji nie, do każdego późniejszego pomiaru tak. Automatyzacja zależy od czujnika zajętości strefy, a ten zmienia stan tylko przy wejściu i wyjściu. Wartości x, y i prędkości zmieniają się natomiast przy każdym ruchu, przy throttle: 1000ms maksymalnie raz na sekundę, a każda taka zmiana trafia do bazy danych Home Assistant.

Warto więc wyłączyć je w Home Assistant albo wykluczyć z zapisu przez Recorder, ale zachować w konfiguracji ESPHome. Po przesunięciu czujnika, wymianie modułu albo pojawieniu się nowych mebli są wtedy od razu dostępne do pomiaru narożników. Potrzebuje ich także poszukiwanie widma: cel, którego współrzędne od kilku minut się nie zmieniają, widać tam na pierwszy rzut oka.

Lukas Wójcik

Lukas Wójcik

Systems architect and technology enthusiast specializing in scalable tracking solutions, GMP Stack (GA4 & GTM), and robust backend architectures. Advocate for clean code and privacy-first design.

Get in Touch

Briefly describe your project or inquiry for a tailored response. This site is protected by reCAPTCHA.

Napisanie komentarza

Doświadczenia z innymi urządzeniami lub integracjami oraz pytania o konfigurację są tu mile widziane.

Adres e-mail nie jest publikowany. Pola obowiązkowe oznaczono gwiazdką.

Artykuły i kategorie

CCTV

Śledź tę kategorię przez RSS

Cloud & AI

Wszystkie artykuły w tej kategorii (17) Śledź tę kategorię przez RSS

Data Privacy

Wszystkie artykuły w tej kategorii (19) Śledź tę kategorię przez RSS

Digital Analytics

Wszystkie artykuły w tej kategorii (58) Śledź tę kategorię przez RSS

Digital Marketing

Wszystkie artykuły w tej kategorii (37) Śledź tę kategorię przez RSS

IT & Networks

Wszystkie artykuły w tej kategorii (18) Śledź tę kategorię przez RSS

Music Production

Wszystkie artykuły w tej kategorii (17) Śledź tę kategorię przez RSS

Raspberry Pi

Śledź tę kategorię przez RSS

SaaS & Internet Earning

Śledź tę kategorię przez RSS

Smart Home

Wszystkie artykuły w tej kategorii (18) Śledź tę kategorię przez RSS

Tworzenie stron internetowych

Wszystkie artykuły w tej kategorii (11) Śledź tę kategorię przez RSS

Wtyczki i triki WordPress

Wszystkie artykuły w tej kategorii (14) Śledź tę kategorię przez RSS