코딩정보




● HA작업)ESP32 에 인체감지 LD2410S LD2410B 를 HAOS esphome 연결작업 하기

♨ 카랜더 일정 : 2024년04월06일
  • 링크

  • 첨부

  • 컨텐츠 정보

    본문

    ● HA작업)ESP32 에  인체감지  LD2410S LD2410B 를 HAOS esphome 연결작업 하기

    pir과 mmwave의 차이는 

    pir는

    on off 동작 시간을 주어  on off 되나 연속 재실상태를 감지가 어려우며

    mmvave 을 사용하면 

     재실감지가 바로 on 후 off 되고 

    장점으로 재실시 연속으로 동작 계속 on 상태 유지 합니다


    제일 쓸만한  mmwave는  5v용 ld2410c 입니다.

    주) 3.3v 연결시  열폭주  발생 합니다.

    3232235521_1714921093.2247.png

    을 추천 하며 

    적용가능한  소스중에 

    https://github.com/rainchi/ESPHome-LD2410/blob/main/ld2410.yaml

    https://cafe.naver.com/koreassistant/14129

    소스를  참조 합니다


    제품 구입정보

    3232235521_1713842671.769.png

    3232235521_1714890780.6384.png

      주) pin 의 피치가 너무 작은것 구입시 주의 >> 다음  ld2420c(5V용) 구입 추천 합니다.


    ld2410s는 3.3v용입니다 (  5v 연결 테스트후 작동불능 됬음)

    3232235521_1712402840.6664.png

    3232235521_1713844491.7207.png


    LD2410C 24GHz 휴먼 프레전스 센서 FMCW 웨이브 레이더 유도 모듈 바디 하트 비트 감지 센서 고정밀

    https://ko.aliexpress.com/item/1005005400130647.html?

    5V용 입니다 >> 3.3v에 잘못 연결시 열 발생이 심합니다.

    3232235521_1714889598.1764.png

    3232235521_1714889663.7192.png



    esp32보드의 pin정보

    아두이노 ESP32 ESP-32 ESP32-WROOM-32 30PIN 2코어 와이파이-WIFI 블루투스-BlueTooth USB C-Type 

    3232235521_1712677812.8816.png

    3232235521_1712600550.1883.png

    3232235521_1713843075.7232.png

    3232235521_1713848802.4669.png

    https://www.youtube.com/watch?v=H1qk0tn6_5M


    3232235521_1713847422.9512.png


    3232235521_1713844214.5074.png

    연결정보)

    1)실물을 배송제품을 정확히  pin 정보를 확인 해야 합니다

    2) rx와 tx의 상대 pin으로  gpio1,3 pin연결

    3) 감지 신호 연결 gpio5

    4) 연결후 자동화 TTS로 연결 상태 멀리에서 확인 방송 확인

    3232235521_1713844424.4263.png



     ESP32-S3 개발 키트에 ld2410s  작업

    Espressif Systems ESP32-S3 개발 키트는 완전한 Wi-Fi 및 Bluetooth LE 기능을 통합하는 범용 Wi-Fi + BLUETOOTH® LE MCU 모듈인 ESP32-S3-WROOM-1 또는

    이보드 구입시 주의점은 5v를 사용 불가능 합니다.

    제품 정보

    https://www.mouser.vn/new/espressif/espressif-esp32-s3-dev-kits?_gl=1*xy4k95*_ga*MzMxODA1Njg3LjE3MTI0MDMwMDU.*_ga_15W4STQT4T*MTcxMjQwMzAwNC4xLjAuMTcxMjQwMzAwNS41OS4wLjA.

    https://docs.espressif.com/projects/esp-idf/en/latest/esp32s3/hw-reference/esp32

    3232235521_1714889960.5701.png

    3232235521_1713856594.171.png



    1)ESPRESSIF ESP32-WROOM-32

    2) LD2410B + LED

    3232235521_1713934727.2178.png

    3232235521_1714890426.6439.png


    2V 20MA 1.3V 440옴 

    HC-SR602 연결 gpio23

    3232235521_1714024040.9878.png

    =========  최종 추천 보드 ================

    WeActStudio.ESP32C3CoreBoard

    https://github.com/WeActStudio/WeActStudio.ESP32C3CoreBoard.git

    위액트 스튜디오 ESP32-C3FH4 코어 보드 에

    3232235521_1715059290.8212.png

    https://www.espressif.com/sites/default/files/documentation/esp32-c3_datasheet_en.pdf


    제일 쓸만한  5v용 ld2410c 입니다.

    3232235521_1714921093.2247.png

    3232235521_1714889598.1764.png

    3232235521_1715068697.6283.png

    3232235521_1715068737.9689.png

    3232235521_1715068761.7744.png

    설정 GPIO 번호

    # ESP32-C3FH4  pin
    # mmwave GPIO2
    # ledc  GPIO5
    # tx_pin: TXO GPIO21
    # rx_pin: RXO GPIO20

    적용가능한  소스중에 

    GPIO2가 감지되면 LED_GPIO5_sw가 켜지고, 감지되지 않으면 LED_GPIO5_sw가 꺼지도록 설정하려면, 

    on_press와 on_release 트리거를 사용하여 구성할 수 있습니다. 아래는 수정된 코드입니다:

    이 설정은 GPIO2 핀이 감지되면 (즉, 스위치가 눌릴 때) LED_GPIO5_sw 라이트가 켜지고,

    감지되지 않으면 (즉, 스위치가 떼어질 때) LED_GPIO5_sw 라이트가 꺼집니다1

    [ 추가 정보 ... 더보기) ]
    뷰PDF 1,2



    office view

    관련자료

    댓글목록

    profile_image

    11qkr님의 댓글

    11qkr 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 아이피 (192.♡.0.1) 작성일
    답변
    profile_image

    11qkr님의 댓글

    11qkr 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 아이피 (192.♡.0.1) 작성일

    # left-top no1 reversclock
    # #no 15 = 5V (좌하단 상으로1)
    # #no 16 = 3.3v (우하단 상으로1)
    # #no 14(좌하단 상으로 2) = GND
    # #no 17(우하단 상으로 2) = GND
    # #no 21 = GPIO16
    # #no 5 = GPIO35
    # #no 10 = GPIO27 2410의 light  ??? GPIO19

    # 28 GPIO1 TXDO
    # 27 GP103 RXDO

    답변
    profile_image

    11qkr님의 댓글

    11qkr 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 아이피 (192.♡.0.1) 작성일
    답변
    profile_image

    11qkr님의 댓글

    11qkr 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 아이피 (192.♡.0.1) 작성일

    ESP32 보드와 LD2410S 센서를 연결하는 방법은 다음과 같습니다:

    ESP32의 RX 핀을 LD2410S의 TX 핀에 연결합니다.
    ESP32의 TX 핀을 LD2410S의 RX 핀에 연결합니다.
    이렇게 하면 ESP32 보드와 LD2410S 센서 간의 통신이 가능해집니다. 하지만, 핀 배치가 보드에 따라 다를 수 있으므로, 사용하시는 보드의 문서를 참조하시는 것이 좋습니다12.

    참고로, ESP32와 LD2410S 센서를 사용하여 프로젝트를 진행하실 때는 해당 장치들의 라이브러리와 예제 코드를 참조하시는 것이 도움이 될 수 있습니다12. 특히, LD2410S 센서는 주파수를 이용하여 정지한 물체와 이동하는 물체에 대한 거리를 측정하는 모듈로, 다양한 응용이 가능합니다1.

    답변
    profile_image

    11qkr님의 댓글

    11qkr 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 아이피 (192.♡.0.1) 작성일
    답변
    profile_image

    저언상님의 댓글

    no_profile 저언상 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 아이피 (59.♡.212.197) 작성일

    잘부탁드립니다

    답변
    profile_image

    11qkr님의 댓글

    11qkr 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 아이피 (192.♡.0.1) 작성일
    답변
    profile_image

    11qkr님의 댓글

    11qkr 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 아이피 (192.♡.0.1) 작성일

    In file included from src/main.cpp:120:
    src/uart_read_line_sensor_ld2410v3.h: In member function 'void LD2410::setConfigMode(bool)':
    src/uart_read_line_sensor_ld2410v3.h:106:31: warning: narrowing conversion of '(confenable ? 255 : 254)' from 'int' to 'char' inside { } [-Wnarrowing]
        char cmd[2] = {confenable ? 0xFF : 0xFE,0x00};
                        ~~~~~~~~~~~^~~~~~~~~~~~~
    src/uart_read_line_sensor_ld2410v3.h: In member function 'void LD2410::setEngineeringMode(bool)':
    src/uart_read_line_sensor_ld2410v3.h:156:30: warning: narrowing conversion of '(engenable ? 98 : 99)' from 'int' to 'char' inside { } [-Wnarrowing]
        char cmd[2] = {engenable ? 0x62 : 0x63,0x00};
                        ~~~~~~~~~~^~~~~~~~~~~~~
    In file included from src/main.cpp:120:
    src/uart_read_line_sensor_ld2410v3.h: In member function 'void LD2410::setBaudrate(int)':
    src/uart_read_line_sensor_ld2410v3.h:192:33: warning: narrowing conversion of 'index' from 'int' to 'char' inside { } [-Wnarrowing]
        char value[2] = {index, 0x00};
                                    ^

    답변
    profile_image

    11qkr님의 댓글

    11qkr 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 아이피 (192.♡.0.1) 작성일

    https://community.home-assistant.io/t/mmwave-wars-one-sensor-module-to-rule-them-all/453260/129

    uart:
      id: uart1
      rx_pin: GPIO13 #(D7)
      tx_pin: GPIO15  #(D8)
      baud_rate: 256000
      data_bits: 8
      stop_bits: 1
      parity: NONE

    답변
    profile_image

    11qkr님의 댓글

    11qkr 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 아이피 (192.♡.0.1) 작성일

    In file included from src/main.cpp:195:
    src/uart_read_line_sensor_ld2410v3.h: In member function 'void LD2410::setEngineeringMode(bool)':
    src/uart_read_line_sensor_ld2410v3.h:157:30: warning: narrowing conversion of '(engenable ? 98 : 99)' from 'int' to 'char' inside { } [-Wnarrowing]
        char cmd[2] = {engenable ? 0x62 : 0x63,0x00};
                        ~~~~~~~~~~^~~~~~~~~~~~~
    In file included from src/main.cpp:195:
    src/uart_read_line_sensor_ld2410v3.h: In member function 'void LD2410::setBaudrate(int)':
    src/uart_read_line_sensor_ld2410v3.h:193:33: warning: narrowing conversion of 'index' from 'int' to 'char' inside { } [-Wnarrowing]
        char value[2] = {index, 0x00};
                                    ^
    Linking .pioenvs/esp32-s3-8m-ld2410s/firmware.elf

    답변
    profile_image

    11qkr님의 댓글

    11qkr 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 아이피 (192.♡.0.1) 작성일

    In file included from src/main.cpp:195:
    src/uart_read_line_sensor_ld2410v3.h: In member function 'void LD2410::setEngineeringMode(bool)':
    src/uart_read_line_sensor_ld2410v3.h:157:30: warning: narrowing conversion of '(engenable ? 98 : 99)' from 'int' to 'char' inside { } [-Wnarrowing]
        char cmd[2] = {engenable ? 0x62 : 0x63,0x00};
                        ~~~~~~~~~~^~~~~~~~~~~~~
    In file included from src/main.cpp:195:
    src/uart_read_line_sensor_ld2410v3.h: In member function 'void LD2410::setBaudrate(int)':
    src/uart_read_line_sensor_ld2410v3.h:193:33: warning: narrowing conversion of 'index' from 'int' to 'char' inside { } [-Wnarrowing]
        char value[2] = {index, 0x00};
                                    ^
    Linking .pioenvs/esp32-s3-8m-ld2410s/firmware.elf
    의 에러를  해결해주세요

    Copilot
    이 코드에서 발생하는 경고는 'narrowing conversion’에 관한 것입니다. 이는 데이터 타입을 더 넓은 범위에서 더 좁은 범위로 변환하려고 할 때 발생합니다. 이 경우, ‘int’ 타입을 ‘char’ 타입으로 변환하려고 하면서 문제가 발생했습니다.

    setEngineeringMode(bool) 함수에서, engenable ? 0x62 : 0x63 표현식은 int 타입의 값을 반환하지만, 이를 char 타입의 배열에 저장하려고 합니다.
    setBaudrate(int) 함수에서는 index라는 int 타입의 값을 char 타입의 배열에 저장하려고 합니다.
    이러한 narrowing conversion은 데이터 손실을 초래할 수 있으므로, 컴파일러는 이를 경고로 알려줍니다. 이를 해결하려면, 적절한 캐스팅을 사용하여 명시적으로 타입 변환을 수행해야 합니다. 예를 들어, char cmd[2] = {(char)(engenable ? 0x62 : 0x63), 0x00};와 같이 작성할 수 있습니다. 이렇게 하면 컴파일러에게 의도적으로 타입 변환을 수행하고 있음을 알려줄 수 있습니다. 그러나 이렇게 하면 데이터 손실의 가능성이 여전히 있으므로, 주의가 필요합니다. 이러한 변환을 수행하기 전에, 변환된 값이 여전히 원하는 범위 내에 있는지 확인해야 합니다.

    마지막으로, “Linking .pioenvs/esp32-s3-8m-ld2410s/firmware.elf” 메시지는 컴파일 과정이 성공적으로 완료되었음을 나타냅니다. 이는 코드가 성공적으로 컴파일되었으며, 이제 실행 파일을 생성하는 단계에 도달했음을 의미합니다. 이 메시지는 보통 컴파일 경고나 에러가 없을 때 출력됩니다. 그러나 이 경우에는 경고가 있었지만, 이 경고가 치명적이지 않아 컴파일이 계속 진행되었음을 나타냅니다. 이 경고를 해결하면 코드의 품질을 더욱 향상시킬 수 있습니다.

    답변
    profile_image

    11qkr님의 댓글

    11qkr 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 아이피 (192.♡.0.1) 작성일

    # ======================================================================
     # 2024_0424_1002_38
     # \\192.168.0.35\config\esphome\esp32-s3-ld2410s.yaml
     # ble및 WIFI 센서를 추가하지 마세요 2024_0424_0956_04
     # 본소스는 https://community.home-assistant.io/t/mmwave-wars-one-sensor-module-to-rule-them-all/453260/2
     # uart_read_line_sensor_ld2410v3.h 에러 대응 타입 변환을 (char) 수행해야 합니다.
     # 예를 들어, char cmd[2] = {(char)(engenable ? 0x62 : 0x63), 0x00}; 형식으로 변경
     # ============================================

    답변
    profile_image

    11qkr님의 댓글

    11qkr 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 아이피 (192.♡.0.1) 작성일
    답변
    profile_image

    11qkr님의 댓글

    11qkr 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 아이피 (192.♡.0.1) 작성일
    답변
    profile_image

    11qkr님의 댓글

    11qkr 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 아이피 (192.♡.0.1) 작성일

    https://github.com/rainchi/ESPHome-LD2410/blob/main/ld2410.yaml
    소스 적용시
    =============================

    In file included from src/main.cpp:125:
    src/ld2410_uart_rainchi.h: In member function 'void LD2410::setConfigMode(bool)':
    src/ld2410_uart_rainchi.h:217:27: warning: narrowing conversion of '(enable ? 255 : 254)' from 'int' to 'char' inside { } [-Wnarrowing]
        char cmd[2] = {enable ? 0xFF : 0xFE, 0x00};
                        ~~~~~~~^~~~~~~~~~~~~
    src/ld2410_uart_rainchi.h: In member function 'void LD2410::setEngineeringMode(bool)':
    src/ld2410_uart_rainchi.h:245:27: warning: narrowing conversion of '(enable ? 98 : 99)' from 'int' to 'char' inside { } [-Wnarrowing]
        char cmd[2] = {enable ? 0x62 : 0x63, 0x00};
                        ~~~~~~~^~~~~~~~~~~~~
    In file included from src/main.cpp:125:
    src/ld2410_uart_rainchi.h: In member function 'void LD2410::setBaudrate(int)':
    src/ld2410_uart_rainchi.h:273:33: warning: narrowing conversion of 'index' from 'int' to 'char' inside { } [-Wnarrowing]
        char value[2] = {index, 0x00};
                                    에러 정수처리 해주세요
    Copilot
    코드에서 발생하는 경고는 'narrowing conversion’으로, 이는 특정 타입의 값을 다른 타입으로 변환하려고 할 때 발생합니다. 이 경우에는 int 타입을 char 타입으로 변환하려고 하면서 문제가 발생했습니다.

    이를 해결하기 위해 static_cast<char>를 사용하여 명시적으로 형 변환을 수행할 수 있습니다. 아래는 수정된 코드입니다:

    src/ld2410_uart_rainchi.h: In member function 'void LD2410::setConfigMode(bool)':
    char cmd[2] = {static_cast<char>(enable ? 0xFF : 0xFE), 0x00};

    src/ld2410_uart_rainchi.h: In member function 'void LD2410::setEngineeringMode(bool)':
    char cmd[2] = {static_cast<char>(enable ? 0x62 : 0x63), 0x00};

    src/ld2410_uart_rainchi.h: In member function 'void LD2410::setBaudrate(int)':
    char value[2] = {static_cast<char>(index), 0x00};

    이렇게 하면 int를 char로 안전하게 변환할 수 있습니다. 그러나 이렇게 하면 데이터 손실이 발생할 수 있으므로 주의해야 합니다. 예를 들어, char는 일반적으로 -128에서 127까지의 값을 저장할 수 있으므로, 이 범위를 벗어나는 int 값은 잘릴 수 있습니다. 이 점을 염두에 두고 코드를 작성해야 합니다.

    답변
    profile_image

    11qkr님의 댓글

    11qkr 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 아이피 (192.♡.0.1) 작성일

    GPIO2가 감지되면 LED_GPIO5_sw가 켜지고, 감지되지 않으면 LED_GPIO5_sw가 꺼지도록 설정하려면, on_press와 on_release 트리거를 사용하여 구성할 수 있습니다. 아래는 수정된 코드입니다:

    output:
      - platform: gpio
        pin:
          number: GPIO5
          inverted: true
        id: led_output

    light:
      - platform: binary
        name: "mmwave_led"
        output: led_output
        id: LED_GPIO5_sw

    binary_sensor:
      - platform: gpio
        name: "2410_mmwave_G2"
        id: mmwave
        device_class: occupancy
        pin:
          number: GPIO2
          mode: INPUT_PULLUP
        on_press:
          then:
            - light.turn_on: LED_GPIO5_sw
        on_release:
          then:
            - light.turn_off: LED_GPIO5_sw

    이 설정은 GPIO2 핀이 감지되면 (즉, 스위치가 눌릴 때) LED_GPIO5_sw 라이트가 켜지고, 감지되지 않으면 (즉, 스위치가 떼어질 때) LED_GPIO5_sw 라이트가 꺼집니다12. 이 코드를 ESPHome 구성 파일에 추가하면 됩니다. 추가적인 질문이 있으시면 언제든지 알려주세요! ????

    답변
    profile_image

    11qkr님의 댓글

    11qkr 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 아이피 (192.♡.0.1) 작성일

    github에 있는 소스는 먹통 증상 발생

    카페내 자료 로 소스 변경
    https://cafe.naver.com/koreassistant/14129

    답변



    ♥간단_메모글♥


    최근글


    새댓글



    PHP 안에 HTML ☞ 홈페이지 화면갱신 시간은 ♨
    ▶ 2024-05-09 04:58:06

    오늘의 홈 현황


    • 현재 접속자♨ 292 명
    • 오늘 가입자※ 0 명
    • 어제 가입자※ 4 명
    • 주간 가입자※ 12 명
    • 오늘 방문자 935 명
    • 어제 방문자 1,900 명
    • 최대 방문자 13,042 명
    • 전체 방문자 4,312,499 명
    • 전체 게시물※ 8,559 개
    • 전체 댓글수※ 24,579 개
    • 전체 회원수 10,956 명

    QR코드


    ☞ QR코드 스캔은 kakao앱 자체 QR코드

    알림 0








    최신글↑