Moduł sensora obecności 24 GHz do DIY (Hi-Link HLK-LD2410)

Ja od poczatku UART z ESP32.

To było trzeba o tym napisać wprost :wink: , odpowiedziałeś na mojego posta o treści:
“Dłuższe testy integracji czujnika z HA po BLE pokazały, że jest to integracja niestabilna, czujnik potrafi przestać nadawać, pomaga tylko reset zasilania czujnika.”
dlatego logiczne było dla mnie, że Twoja wypowiedź dotyczy integracji po BLE.

Jeśli chodzi o BLE to istotnie bez sensu, po paru zmianach firmware zaprzestałem testów (bo nie było poprawy), jeśli chodzi o zasilanie to też potwierdzam - musi być solidne.
Na zabawę w DIY brakuje mi czasu, więc od miesięcy radary leżą i czekają na swoją kolej.

Hej, właśnie testowałem urządzenie oparte na ESPHome i LD2410C DIY.

Niby fajnie, ale kiedy żona się maluje w łazience i nie rusza się przez dłuższy czas, czujnik nie wykrywa obecności.

Zamontowałem go nad sufitem podwieszanym z karton-gipsu, pod kątem 45 stopni do podłoża. Co ciekawe, gdy leżał na metalowej konstrukcji, nie działał prawidłowo – w ogóle nie wykrywał ruchu.

Nie jest to zbyt dobre rozwiązanie do wykrywania obecności. Może poprawa nastąpiłaby, gdybym zamontował go bezpośrednio na ścianie lub suficie, albo wymienił ESP na inny model.

Konfiguracja: Wemos D1 mini z LD2410C, podłączony bezpośrednio.

Nie widzę w tym nic dziwnego, przecież to radar

To jest coś grubo nie tak, testowałem ten czujnik wprawdzie dość krótko, ale oczywiście wykrywa wszystko prawidłowo zgodnie ze swoją zasadą działania (radar wykrywa przede wszystkim obiekt w zasięgu, a wykrywanie ruchu polega na pomiarze opierającym się na obliczaniu zmiany odległości), więc to co napisałeś jest zasadniczo niemożliwe, jeśli nie wykrywa statycznego obiektu to nie wykryje też jego ruchu. Prawdopodobnie zasłoniłeś anteny i uzyskujesz jedynie jakiś sygnał pośredni z odbić.

By może nie czytałeś dokumentacji wnikliwie - dielektryczna przeszkoda przed antenami radaru może mieć co najwyżej ułamki milimetra. Gdybyś zobaczył kiedyś radar używany przez policję to zobaczysz też że tam nie ma żadnych przeszkód między antenami a obiektem wręcz jest użyty falowód.

Ok, mam go do dzisiaj i muszę go zdemontować. Uruchamia światło nawet jak nikogo w domu niema.

Minęło już 15 dni i z początku było spoko, teraz jest tragedia. Reakcja na uruchomienie jest długa.

Właśnie przyszedł do mnie z firmy WENZHI, ale montowany w podwieszany sufit. Zobaczymy co będzie się działo.

Jestem ciekaw. Czekam na opinie @Jan_Wróblewski

1 polubienie

Posiadam Tuya ZY-M100-S_1. Działa dobrze, wymaga regulacji pod dane pomieszczenie.

Radar sensitivity
Minimum range
Maximum range

Czujnik umieszczony w samym rogu pomieszczenia ze względu na przeszklone drzwi i zdarza mu się uruchomić przechodząc korytarzem, działająca pralka (Wirowanie) też potrafi go wzbudzić. Widzę że WENZHI podobny do mojego ZY-M100-S_1.

Witam wszystkich, znowu mam problem tym razem z WEMOS D1 Mini V4.0.0 na ESP8266 4MB LOLIN i HLK-LD2410B w żaden mi znany sposób nie mogę tego zmusić do współpracy. Konfiguracja niby jest ok ale ld nic nie wysyła i czujniki wskazują stan nieznany. d1 mini działa bo sprawdzałem je podłączając CC1101 i było ok a ld działa w aplikacji na tel po BLE oraz po BLE w HA. Podłączałem pod piny tx rx pod d1 d2. Próbowałem również tego oraz tego i nie mogę sobie dać z tym rady. Tak wygląda mniej więcej pinologia tej potwornej maszyny.


Pomocy.

@Sdq055
A gdzie YAML?

Na obrazku powyżej nie ma opisu gdzie jest D1 i D2 (czy ogólnie Dx), tylko gdzie jest jakie GPIO

Używanie aliasów Dx wymaga użycia pasującej definicji płytki board: d1_mini

Logger wyłączyłeś w konfiguracji?

oprócz tego może jednak masz jakiś ESP32? bo z płytkami ESP8266 to jest biednie jeśli chodzi o UART (ten MCU ma tylko 1.5 UARTu i w dodatku ten który jest wyprowadzony w całości jest już połączony z mostkiem UART-USB na większości płytek)

jako obejście można zdefiniować UART programowy, ale lepiej użyć jakiegokolwiek innego MCU w którym problem za małej ilości UARTów nie występuje (albo użyć płytki bez wbudowanego mostka UART-USB)

tu są piny od ESP32, pomysł raczej słaby by używać stary komponent zewnętrzny który jest już i tak zmerdżowany z główną gałęzią (a stopień jego aktualności jest wątpliwy i wręcz może nawet nie istnieje)


Z innej beczki - LD2410 wymaga zasilania co najmniej 5V.
Na tej płytce 5V można podkraść z VBUS (jeśli jest zasilana z USB)

a propos USB - oczywiście nie podłączyłeś USB do komputera tylko do zasilacza? (oprócz momentu pierwszego flaszowania)

UWAGA stabilizator MicrOne ME6211C33 na tej płytce (D1 mini v4) wytrzymuje zasilanie maksymalnie 6V, więc podłączając zasilanie w inny sposób niż przez USB nie wolno przekroczyć 6V na pinie VBUS.

mam jeszcze CH340 NodeMcu V3 Lua ESP8266 ESP-12E ale pewnie niewiewiele to zmienia.

tak też zrobiłem:

esp8266:
  board: d1_mini
logger:
  level: VERY_VERBOSE  
  baud_rate: 0  # Wyłącza logowanie przez UART, żeby nie kolidowało z LD2410

Najpierw do konfiguracji daje tylko wifi:

wifi:
  ssid: "xxxxx"
  password: "xxxx"
  manual_ip:
    static_ip: 192.168.3.233
    gateway: 192.168.3.1
    subnet: 255.255.255.0

podłączam do HA przez usb i dodaje konfiguracje. Następnie odłączam od HA podłączam do ładowarki/powerbanka dodaje do konfiguracji czujniki, zmieniam logger i łącze przez Wi-Fi i nie działa :smiley:


Wgrywa się niby wszystko ale nie ma informacji zwrotnej od LD2410B. Przez BLE czujnik działał z HA.

Na pinie VBUS jest 5v sprawdzałem.

Plik YAMAL:

esphome:
  name: czujnik-obecnosci0
  friendly_name: Czujnik obecnosci0

esp8266:
  board: d1_mini

# Enable logging
logger:
  level: VERY_VERBOSE   #baud_rate: 0
  baud_rate: 0  # Wyłącza logowanie przez UART, żeby nie kolidowało z LD2410

# Enable Home Assistant API
api:
  encryption:
    key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
ota:
  - platform: esphome
    password: "6bd58efa1d316a8f11bd071d3225fe9a"

wifi:
  ssid: "xxxxx"
  password: "xxxxxxxx"
  manual_ip:
    static_ip: 192.168.3.233
    gateway: 192.168.3.1
    subnet: 255.255.255.0
 
  ap:
    ssid: "Czujnik-Obecnosci0"
    password: "qUlxJOB0gnm7"
 
uart:
  id: uart_bus
  tx_pin: TX albo D2 albo inny pin
  rx_pin: RX albo D1albo inny pin
  baud_rate: 256000
  parity: NONE
  stop_bits: 1

ld2410:
  uart_id: uart_bus

sensor:
  - platform: ld2410
    moving_distance:
      name: "Odległość Ruchu"
    still_distance:
      name: "Odległość Stała"
    moving_energy:
      name: "Energia Ruchu"
    still_energy:
      name: "Energia Stała"
    detection_distance:
      name: "Odległość Detekcji"
  - platform: wifi_signal
    name: "Siła sygnału WiFi"
    update_interval: 60s

binary_sensor:
  - platform: ld2410
    has_moving_target:
      name: "Wykryto ruch"
    has_still_target:
      name: "Wykryto nieruchomy obiekt"

W konfiguracji która u mnie działała na płytce ESP-01s (totalny golas bez mostka USB) miałem tak

…
logger:
  baud_rate: 0
  esp8266_store_log_strings_in_flash: false # to szczerze mówiąc nie pamiętam dlaczego
…
# hardware! UART
uart:
  id: uartld2410
  tx_pin: GPIO1 # to ważne, bo przy tak wysokiej szybkości linku 
  rx_pin: GPIO3 # NIE można użyć innych GPIO na ESP8266/8285
  baud_rate: 256000
  parity: NONE
  stop_bits: 1

Resztę mam jeszcze w starym formacie tego komponentu, w przyszłym tygodniu będę w domu to mogę zweryfikować czy to nadal działa.

PS Częsty błąd to niewłaściwe łączenie urządzeń ze sobą portem szeregowym
(błąd to nadajnik do nadajnika i odbiornik do odbiornika, zamiast na krzyż)

Rx urządzenia A łączy się z Tx urządzenia B
a
Tx urządzenia A łączy się z Rx urządzenia B

Jeszcze ostatnie słowo komentarza, jeśli mnie pamięć nie myli (ale głowy sobie nie dam uciąć), to z aplikacji można zmienić szybkość UARTa w LD2410 *(tych wersji z BT) a poniżej 115200 można w ESP8266 użyć UART programowy (i wtedy do wykorzystania dowolne GPIO)

Tydzień temu złożyłem taki sensor na ESP-01 + ld2410 . Całość zasilona z 3,3V, bo nie chciało mi się kombinować z dwoma wartościami napięć.

sp8266:
  board: esp01_1m

# Enable logging
logger:
  baud_rate: 0
# Enable Home Assistant API
api:
  encryption:
    key: "xxxxxxxxxxxxxxxxxxxxxxxxxxx"
  reboot_timeout: 0s

# KLUCZ OTA - USTAW SWÓJ
ota:
  - platform: esphome
    password: "xxxxxxxxxxxxxxxxxxxx"


wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Ld2410 Fallback Hotspot"
    password: "vxyvxyvxy"

time:
  - platform: homeassistant
    id: homeassistant_time    
web_server:
  port: 80
  auth:
    username: !secret web_server_username
    password: !secret web_server_password
uart:
  tx_pin: 1
  rx_pin: 3
  baud_rate: 256000
  parity: NONE
  stop_bits: 1
ld2410:
binary_sensor:
  - platform: ld2410
    has_target:
      name: Presence
    has_moving_target:
      name: Moving Target
    has_still_target:
      name: Still Target 
text_sensor:
  - platform: version # Expose ESPHome version as sensor.
    name: Version
    hide_timestamp: false
  - platform: wifi_info
    ip_address:
      name: "IP"
# czujnik odległości
sensor:
  - platform: ld2410
    moving_distance:
      name : Moving Distance
    still_distance:
      name: Still Distance
    moving_energy:
      name: Move Energy
    still_energy:
      name: Still Energy
    detection_distance:
      name: Detection Distance        
number:
  - platform: ld2410
    timeout:
      name: timeout
    light_threshold:
      name: light threshold
    max_move_distance_gate:
      name: max move distance gate
    max_still_distance_gate:
      name: max still distance gate
    g0:
      move_threshold:
        name: g0 move threshold
      still_threshold:
        name: g0 still threshold
    g1:
      move_threshold:
        name: g1 move threshold
      still_threshold:
        name: g1 still threshold
    g2:
      move_threshold:
        name: g2 move threshold
      still_threshold:
        name: g2 still threshold
    g3:
      move_threshold:
        name: g3 move threshold
      still_threshold:
        name: g3 still threshold
    g4:
      move_threshold:
        name: g4 move threshold
      still_threshold:
        name: g4 still threshold
    g5:
      move_threshold:
        name: g5 move threshold
      still_threshold:
        name: g5 still threshold
    g6:
      move_threshold:
        name: g6 move threshold
      still_threshold:
        name: g6 still threshold
    g7:
      move_threshold:
        name: g7 move threshold
      still_threshold:
        name: g7 still threshold
    g8:
      move_threshold:
        name: g8 move threshold
      still_threshold:
        name: g8 still threshold        

light:
  - platform: status_led
    name: "Led"
    restore_mode: ALWAYS_ON
    pin:
      number: GPIO2        

Działa


@Sdq055 skoro bawiłeś się apką na telefonie, sprawdz czy nie zmieniłęś sobie baud rate

Funkcja zapisywania( w flash) podstawowych logów do debugowania, standardowo jest true

Tak, ale nie pamiętam dlaczego tak zrobiłem, a nie zostawiłem sobie wtedy komentarza w YAMLu… ponad 2 latka minęły i nie wiem jaka była motywacja (może to wtedy było istotne - korzystałem wtedy jeszcze z eksperymentalnej wersji komponentu).

Wielokrotnie sprawdzałem poprawność połączenia i jest ok gdy zamienię piny to pokazuje się w logu jakiś błąd a w skrajnych przypadkach esp resetuje się w pętli.

Sprawdzałem i jest ok. Wrzuciłem twoją konfiguracje oczywiście zmieniłem to co trzeba zmienić i niestety dalej wartości nieznane. Jedyne co to led działa :smiley:

A o co dokładnie tu chodzi? Port 80 to standard czy trzeba go gdzieś ustawić? Nazwy użytkownika i hasła też nie ogarniam. Ogólnie to tej sekcji nie ogarniam bo pierwszy raz się z tym spotkałem a nie jestem zbyt obeznany w tym.

A warto się z tym bawić czy jest to to samo co D1mini tylko większe.

Pierwsze co bym zrobił to wywalił komponent webserwera z konfiguracji jeśli nie działa coś ważniejszego…
Port 80 jest standardowy.

w pliku secrets.yaml tym należącym do ESPHome, nie musisz go szukać bo jest dostępny z GUI w IDE/builderze/kompilerze

ustawia się sekrety, tu przykładowo użytkownikiem będzie esphome a hasłem esphome123456

web_server_username: 'esphome'
web_server_password: 'esphome123456'

porada numer 2 - nie używaj czegoś jeśli tego czegoś nie rozumiesz
ale jeśli chodzi o webserwer to ja sugeruję przynajmniej tymczasowo wywalić bo jest zasobożerny

czyli Rx ESP masz podłączone do Tx LD
a
Tx ESP masz podłączone do Rx LD

???

Twoje “OK” nie jest wystarczająco obiektywne, jeśli nie piszesz JAK konkretnie to podłączyłeś, słowa “OK/dobrze” nie przekazują ŻADNEJ informacji diagnostycznej - może jest dobrze, a może wydaje Ci się, że jest dobrze, ale nie jest…

błędne podłączenie portu szeregowego nie ma prawa doprowadzić do bootloopa, chyba że zmieniłeś konfigurację YAML (o czym nawet nie wspominasz) i używasz jakieś piny MCU których nie wolno używać w tym celu…

Dlatego od początku sugeruję ESP32 który jest znacznie bardziej elastyczny w konfiguracji (sprzętowy UART w ESP32 można wysłać na niemal dowolne piny, a w ESP8266 MUSISZ użyć te konkretne GPIO 1 i 3 które już tu parę osób pokazywało) i ESP32 ma więcej zasobów (głównie chodzi o RAM, więc uruchomienie innych komponentów nie spowoduje, że tego RAMu braknie).

RX ESP do TX LD
TX ESP do RX LD


Próbowałem zmienić na piny 5,4 wtedy przy odwrotnym podłączeniu TX z RX powodowało bootloopa. Obecnie mam podłączone tak jak na zdjęciu i w logach widać
[17:54:43][C][uart.arduino_esp8266:118]: UART Bus: [17:54:43][C][uart.arduino_esp8266:119]: TX Pin: GPIO1 [17:54:43][C][uart.arduino_esp8266:120]: RX Pin: GPIO3 [17:54:43][C][uart.arduino_esp8266:122]: RX Buffer Size: 256 [17:54:43][C][uart.arduino_esp8266:124]: Baud Rate: 256000 baud [17:54:43][C][uart.arduino_esp8266:125]: Data Bits: 8 [17:54:43][C][uart.arduino_esp8266:126]: Parity: NONE [17:54:43][C][uart.arduino_esp8266:127]: Stop bits: 1
więc chyba jest ok.
A podłączenie jest następujące

to wywaliłem

Więc będę musiał zamówić nową zabawkę bo z tym już mnie siły opuszczają. Nie wiem jakim cudem to innym działa albo jakim cudem u mnie nie działa, w teorii wszystko zrobiłem ok a nie działa. Sprawdzałem na 2 D1 mini i 2 LD2410B oraz na LD2410C. Ale z 2 strony D1 mini z czujnikiem radiowym CC1101module868MHZ działa, z oporami ale się udało i działa.

Chyba że jeszcze może prędkość UART zmienię w aplikacji w LD na 115200, może to coś pomoże.

Zacznij od dobrego, wydajnego zasilania. Sprawdź miernikiem przewody.

1 polubienie

Ale CC1101 podłączasz interfejsem SPI a LD2410 interfejsem UART

W ogóle ze zdjęcia wynika, że używasz krosówek dla płytek stykowych, które są najbardziej zawodną metodą połączenia jaką znam…

Weż w rękę lutownicę i zrób sobie taką modyfikację płytki