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

Nie, nie - to moje pytanie było w związku z tymi termometrami i zostawię jak jest czyli jako sensory - skoro esphome wysyła obrobioną paczkę danych do HA

Z tym LD2410 to inna para kaloszy - średnio to stabilne jest z bt proxy u mnie i potrafi się zwiesić więc chce zrobić to co większość poleca czyli spiąć to kabelkami z esp32 i skorzystać z LD2410 sensora w esphome - LD2410 Sensor — ESPHome

Tak przy okazji z jakiego framework’a korzystasz na tym esp? W dokumentacji (bluetooth proxy) jest napisane, że stabilniej jest na esp-idf niż default’owym arduino

No i oczywiście przy termometrach używasz opcji pasywnej bo zjada mniej zasobów :slight_smile:

Robiąc to proxy poleciałem po najniższej linii oporu, czyli ich dedykowana strona web - ale z tego co widzę preparując tego esp32 w configu jest odwołanie do:
“esphome.bluetooth-proxy: github://esphome/bluetooth-proxies/esp32-generic.yaml@main”
A jak się podejrzy tego yamla to w nim jest wpis:

esp32:
  board: esp32dev
  framework:
    type: esp-idf

Więc z defaulta używa esp-idf
A w termo advertising używam jako PVVX(custom) - o ile o to pytasz

Ja mam 2 rożne konstrukcje - jedną skompilowaną na frameworku arduino (GL-S10 v1.0), drugą na esp-idf (zwykle ESP32 az-delivery-devkit-v4 czyli klon ESP32 devkit v1).
Jeśli chodzi o LD2410 to u mnie na obu działa jednakowo źle.
Temat zbacza, więc te parę postów przeniosę do wątku o radarach. - zrobione

Zależy kiedy wdrożyłeś EBP - początkowo defaultem był framework arduino

Wspomoże ktoś poradą co może być nie tak? Połączyłem 2410 z Wemosem D1 mini (wersja 3.0) wedle schematów czyli 5V-5V/GND-GND/ RX z wemosa do TX 2410 i TX z wemosa do RX 2410.
Po lutowaniu sprawdziłem miernikiem czy połączenia sa ok.

W esphome mam konfiguracje:

esphome:
  name: esphome-web-b607cd
  friendly_name: LD2410B

esp8266:
  board: d1_mini

# Enable logging
logger:
  baud_rate: 0

# Enable Home Assistant API
api:
  encryption:
    key: "xxxxxxxxxx"

ota:


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

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esphome-Web-B607Cd"
    password: "Oo8nUE9Csiin"

captive_portal:

uart:
  id: uart1
  tx_pin: 1
  rx_pin: 3
  baud_rate: 256000
  parity: NONE
  stop_bits: 1

ld2410:
  timeout: 5s
  max_move_distance : 4.5m
  max_still_distance: 4.5m
  g0_move_threshold: 50
  g0_still_threshold: 0
  g1_move_threshold: 50
  g1_still_threshold: 0
  g2_move_threshold: 40
  g2_still_threshold: 40
  g3_move_threshold: 99
  g3_still_threshold: 99
  g4_move_threshold: 99
  g4_still_threshold: 99
  g5_move_threshold: 99
  g5_still_threshold: 99
  g6_move_threshold: 99
  g6_still_threshold: 99
  g7_move_threshold: 99
  g7_still_threshold: 99
  g8_move_threshold: 99
  g8_still_threshold: 99
  
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

binary_sensor:
  - platform: ld2410
    has_target:
      name: Presence
    has_moving_target:
      name: Moving Target
    has_still_target:
      name: Still Target

No i w sensorach dostaje wyniki “nieznany”

Komunikacja w stronę LD2410 idzie dobrze - bo ustawiając czułość poszczególnych gate’ów z poziomu esphome jest to prawidłowo portowane do ld2410 ale w drugą stronę kupa.

Nie wiem, kwestia wersji wemosa? Brałem z kamami oznaczone jako v3 bez shielda (fakt że nie ma napisu LOLIN z tyłu płytki drukowanej). Co najlepsze na woreczku pisze Lolin D1 mini v3.1 a w środku v3.0

Help?

@playersct chyba powinno być wybrane uart0 dla tej konfiguracji pinów

niestety nic to nie dało, dalej statusy sensorów - nieznany

a co w logach w esphome?

edit: jeszcze jedno, ja w d1 mini mam taką konfigurację, spróbuj w ten sposób:

tx_pin: GPIO1
rx_pin: GPIO3

uart1 to tutaj tylko id (ESP8266 ma i tak tylko jeden wyprowadzony na tej płytce sprzętowy UART na pinach 1 TX0 i 3 RX0; drugi sprzętowy UART na MCU ESP8266 jest użyty i tak w na tyle dziwny sposób, że jest bezużyteczny).

To samo dotyczy aliasów GPIO (wystarcza podać tylko numer, ale dla czytelności kodu 1 jest zamienne z GPIO1),

Ja w tej konfiguracji nie widzę błędów, może niech ktoś inny na to spojrzy.
Proponuję nie podpinać USB do komputera, bo coś mi świta, że UART0 jest w tym module na stałe spięty z mostkiem USB-UART.
Ewentualnie można spróbować podpiąć pullup koło 10k do pinu RX.

Nie chcę obiecywać, ale jeśli będę miał czas polutować to podepnę HLK-LD2410 do ESP32 z Ethernetem (lub do klona D1).

1 polubienie

Słuchajcie znalazłem rozwiązanie w odmętach internetu ale dlaczego to w ten sposób działa to już jestem za cienki do tego…

W konfiguracji zmieniłem tylko:

uart:
  id: uart1
  tx_pin: GPIO15
  rx_pin: GPIO13
  baud_rate: 256000
  parity: NONE
  stop_bits: 1
  data_bits: 8

I działa bez problemu… ale dlaczego zmiana z prawilnych pinoutów tx/rx na te GPIO13/15 pomogła to nie wiem…

Masz teraz software’owy serial (nie zalecany przy wysokich prędkościach połączenia) zamiast sprzętowego UARTu, ale na pinach do których producent raczej nic nie podpiął na PCB.

Może na tej płytce problemem jest CH340 wpięty do UARTu, bo na ESP-01 używałem wielokrotnie sprzętowy UART i działał (ale konstrukcja ESP-01 tak wieje biedą, że tam w sumie nie ma innych opcji i oczywiście na pinach UARTu nie ma podpiętej żadnej dodatkowej elektroniki).

PS Schematy wszystkich oryginalnych wersji płytek WeMOS’a są tu

klony się jakoś od nich mocno nie różnią (czasem są po prostu stosowane kiepskie komponenty zastępcze, ale schematy nie mogą odbiegać mocno, bo to niemożliwe jeśli ma być zachowana kompatybilność).

Edit: trochę przekopałem temat - gdyby zastosowano CH340K (to jedyna wersja która w idle nie wystawia silnego stanu wysokiego na swoim TX) prawdopodobnie dałoby się wykorzystać sprzętowy pin RX na ESP8266, powszechnie jednak stosuje się CH340C…

Ba nawet ktoś opracował prostą sprzętową modyfikację D1 mini umożliwiającą wykorzystanie wszystkich dostępnych pinów płytki do dowolnego zastosowania

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.

1 polubienie

Witajcie podepnę się pod wątek bo mam podobny problem co @playersct .
Dopiero zaczynam swąją przygodę z HA i buduję pierwszy moduł oparty na Wemos D1 mini V4 i LD2410. Po konfiguracji wszystkie czujniki wyświetlają mi wartość ‘unknown’.
Testowałem to na dwóch różnych Wemosach i dwóch różnych LD2410 więc to nie jest kwestia uszkodzonego układu. Próbowałem różnych rozwiązań (łącznie z ustawieniem TX na GPIO15 i RX na GPIO13). Nic nie pomaga. Będę wdzięczny za pomoc bo skończyły mi się pomysły :frowning:

Moja konfiguracja:

esphome:
  name: czujnik-obecnosci-jadalnia
  friendly_name: Czujnik Obecności Jadalnia

esp8266:
  board: d1_mini

# Enable logging
logger:
  baud_rate: 0

# Enable Home Assistant API
api:
  encryption:
    key: "#######"

ota:
  password: "##########"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
# Optional manual IP
  manual_ip:
    static_ip: 192.168.50.200
    gateway: 192.168.50.1
    subnet: 255.255.255.0

# Example configuration entry
uart:
  id: uart0
  tx_pin: TX
  rx_pin: RX
  baud_rate: 256000
  parity: NONE
  stop_bits: 1

ld2410:
  timeout: 150s
  max_move_distance : 6m
  max_still_distance: 0.75m
  g0_move_threshold: 10
  g0_still_threshold: 20
  g1_move_threshold: 10
  g1_still_threshold: 20
  g2_move_threshold: 20
  g2_still_threshold: 21
  g3_move_threshold: 30
  g3_still_threshold: 31
  g4_move_threshold: 40
  g4_still_threshold: 41
  g5_move_threshold: 50
  g5_still_threshold: 51
  g6_move_threshold: 60
  g6_still_threshold: 61
  g7_move_threshold: 70
  g7_still_threshold: 71
  g8_move_threshold: 80
  g8_still_threshold: 81

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

binary_sensor:
  - platform: ld2410
    has_target:
      name: Presence
    has_moving_target:
      name: Moving Target
    has_still_target:
      name: Still Target


captive_portal:
    

Przy lutowaniu do GPIO 13 i 15 pamiętałeś o tym aby TX z wemosa połączyć z RX z LD2410 i RX z TXem?

Druga rzecz - jak masz na 13 i 15 spróboj zmienić UART na 1

Ja zrobiłem sobie takie trzy zestawy i wszystkie trzy w ten sposób od pierwszego pchnięcia poszły

Wiesz co, w tej chwili niczego nie jestem pewien. Poniżej zdjęcia moich połączeń


Przecież połączenie z GPIO 13 i 15 w ogóle nie pasuje do YAMLa z poprzedniego posta…
Jak już tu dawno wykminiliśmy, w przypadku D1 i klonów oraz wszelkich innych płytek prototypowych mających wpięty na stałe mostek USB-UART (bez ich przeróbki) nie można korzystać z UART0 w ESP82xx (a zatem pinów RX i TX).
Więc konieczne jest użycie programowego portu szeregowego, bo sprzętowy jest nie do wykorzystania

Dzięki. Tak jak wspominałem - zielony jestem. Widziałem działające przykłady na D1 wpięte do TX i RX. Na jakie zatem piny powinienem się wpiąć i co wpisać w konfigu?

Jeśli znasz schemat swojego modułu to go wrzuć - to się przeanalizuje, ja też znam przykłady wykorzystania portu UART0, tyle, że w modułach bez mostka UART-USB - np. ESP-01 (ale tam nie ma mostka na stałe połączonego z portem szeregowym, który by mógł zakłócać działanie układu, być może w szczególnych przypadkach to działa - najprościej użyć analizatora stanów logicznych i się przekonać, można tez wylutować rezystor łączący MCU z mostkiem, tak jak w podlinkowanym wyżej hacku sprzętowym).

Ułatwię to zadanie, bo na zdjęciu widać, że masz D1 mini v4.0.0

który MA podpięty CH340C do pinów RX i TX na stałe

Ale zdecydowanie najprostsze jest zdefiniowanie softowego seriala na dowolnych pinach innych niż użyte w sprzętowym UART’cie i ich wykorzystanie.

Dzięki wielkie za pomoc. Niestety nie jestem w stanie z niej skorzystać bo jej nie rozumiem :slight_smile:

  1. Nie mam takiego analizatora. Jeśli się bez niego nie obejdzie to mogę kupić ale nie wiem na co powinienem zwrócić uwagę

niestety nie wiem co to oznacza
3.

Jak należało by to zrobić?

Edit:

Próbowałem podpiąć LD2410 RX do GPIO15 i LD2410 TX do GPIO13.
Konfigurację zmieniłem na:

uart:
  id: uart1
  tx_pin: GPIO15
  rx_pin: GPIO13
  baud_rate: 256000
  parity: NONE
  stop_bits: 1

Ale nie chce mi się zainstalować w ESP. Wyskakuje błąd

ERROR Running command failed: Failed to connect to ESP8266: No serial data received.

Wystarczy że tylko odepnę kabelki TX i RX od wemosa i instaluje się poprawnie :confused:

Popatrz na tabelkę Best Pins to Use – ESP8266

akurat GPIO15 nie jest szczęśliwym wyborem, no nie jestem w stanie sprawdzać poprawności każdego projektu, który ktoś zrobił i “u niego działa”.

D1, D2, D5, D6 i D7 są bezpieczne do wykorzystania, jeśli projektujesz jakieś urządzenie to przeczytaj chociaż bryk z jego dokumentacji, choćby taki jak podlinkowałem w poprzednim paragrafie (bo pełna dokumentacja ESP8266 jest grubości przeciętnej encyklopedii :stuck_out_tongue: więc zmuszać kogokolwiek do czytania całości przecież nie będę).

Generalnie na GPIO 13 i 15 można przekierować UART0 (ale wtedy nie ma go na pinach GPIO 1 i 3 więc użyj OTA, a nie flashuj po kabelku, to nie będzie problemu) - to urywek z dokumentacji ESPHome:

The ESP8266 has two UARTs; the second of which is TX-only. Only a > limited set of pins can be used. UART0 may use either tx_pin: GPIO1 and rx_pin: GPIO3, or tx_pin: GPIO15 and rx_pin: GPIO13. UART1 must use tx_pin: GPIO2. Any other combination of pins will result in use of a software UART.