ESP32-WROOM-32 + pilot

Ponownie potrzebuje pomocy. Posiadam Takie ESP:



Chciałbym zrobić za pomocą właśnie tego ESP podłączenie z pilotem wg takiego wzoru:

I teraz opis - Chce z poziomu HA sterować pilotem który ma zmienne kodowanie więc pomyślałem, że podepne pod ESP pilota i bede mógł sterować z poziomu HA - płytka pilota jest przykładowa na zdjęciu - będzie inna na więcej przycisków.
I teraz moje pytanie:

  1. czy taki sposób połączenia zepnie mi przycisk i pilot zadziała?
  2. z jakich wyjść tego ESP moge do takiego projektu korzystać?

Tego nie wiemy, to zależy od konstrukcji pilota, zasadniczo najbezpieczniej będzie jeśli do “wciskania” (de facto zwierania jego końcówek) każdego przycisku użyjesz przekaźnik (może być subminiaturowy kontaktronowy), jeśli jesteś w stanie samodzielnie zbadać elektronikę to można wykorzystać też tranzystor w charakterze elementu zwierającego (lub ekstender w wyjściami OC lub OD albo transoptory), ale UWAGA

Jeśli pilot ma więcej niż 4 przyciski, to można w ciemno założyć, że jego MCU nie wykorzystuje swoich wejść bezpośrednio (tylko wtedy można użyć tranzystora czy nawet bezpośredniego wyjścia innego MCU), a klawisze są multipleksowane - to w sumie wyklucza rozwiązanie bez przekaźników lub transoptorów.
To musisz stwierdzić sam (oczywiście możesz nas uraczyć doskonałymi zdjęciami makro rozebranego pilota)

a) dla wersji bezpośredniej - każdych które mogą być wyjściami w układzie OD i nie mają przy bootowaniu stanów niepożądanych
b) dla rozwiązań z tranzystorami, transoptorami lub przekaźnikami każdych które mogą być wyjściami i nie mają przy bootowaniu stanów niepożądanych

OK, idąc dalej podejmuję próby - o wszystkim jak zawsze zapisze na koniec.
Chcąc wgrać coś przez esp - wpisuje:

substitutions:
  device_name_lower: "pilot"

esphome:
  name: ${device_name_lower}
  platform: esp32
  board: esp32-WROOM-32

wifi:
  ssid: moje
  password: haslo
  fast_connect: true
  ap:
    ssid: "pilot"
    password: "00000000"

logger:
  # level: VERBOSE
api:
ota:
captive_portal:
web_server:
  port: 80



# przełącznik na stronie www
switch:
  - platform: gpio
    pin: D23
    name: "${device_name_lower}_przelacznik on-line 1"
    icon: "mdi:light-switch"
    inverted: true

Do tego pytanko - czy:

  platform: esp32
  board: esp32-WROOM-32

jest właściwie?

czy wogóle dobrym tropem ide?
(ikony pozniej bede poprawiał)

Ten YAML jest nieprawidłowy, ma błędy
najprościej wygenerować sobie “pusty” YAML w IDE ESPHome
(albo wręcz użyc web-flashera Ready-Made Projects — ESPHome wybierając Empty ESPHome device)

co do definicji płytki to nie wymyślaj z głowy, tylko wykop to w dokumentacji
jeśli nie wiesz jaka ma być definicja to dla zwykłego 2-rdzeniowego ESP32 to użyj takiej konstrukcji

esp32:
  board: esp32dev
  framework:
    type: arduino

W kwestii elektroniki to na 100% nie możesz bezczelnie definiować wyjściowego GPIO, ma być to wyjście OD (otwarty dren) jeśli uważasz, że przyciski nie są multipleksowane, a pilot działa w logice dodatniej względem masy ( i napięcia w nim występujące nie usmażą ESP)

:slight_smile: Jest postęp. Po zaprogramowaniu 1 GPIO i dokonaniu pomiarów musze dać przekażnik tak jak wspomniał @szopen - czy Transoptor wielokrotny LTV847 dał by raade? to dobry trop?
Nie jestem mistrzem elektroniki a tu muszę tylko zamknąć obwód. Pytanie tylko jak zasilić takiego Transoptor-a? Znalazlem go tu Transoptor wielokrotny LTV847 - THT Sklep Botland i nie moge doczytac czy to co leci z esp go samo zasili i po drugiej stronie zamknie obwod (bo nic wiecej nie potrzebuje)?
Chyba kupie i za 3 dni dalszy etap.

możliwe, to są 4 osobne transoptory w jednej obudowie

tak samo jakbyś chciał zaświecić LED podpięty do GPIO

Oczywiście tu potrzeba eksperymentu, bo nie mamy żadnej wiedzy o elektronice pilota.

wrócę jeszcze do tego

zwykle walidator i/lub kompilator ESPHome pokaże stosowne ostrzeżenia
ale mimo to
należałoby zajrzeć do dokumentacji MCU jeśli chcesz uniknąć pułapek

w tym dokumencie są fajnie pokolorowane piny MCU, których się nie powinno używać

a tu masz ogólny datasheet dla modułu zamontowanego na tej płytce prototypowej

Tak sobie czytam - czy nie lepsze bo ma wiecej wyjsc było by ESP32-PICO-KIT V4.1

Skoro chcesz płytkę z ESP które formatem ma udawać RPi pico to może zrób coś nieszablonowego i… użyj
tadam
RPi pico W
?

szczerze mówiąc nie chce mi się kopać w dokumentacji ile z wyprowadzonych pinów można faktycznie użyć w przypadku ESP32 w formacie pico
(w tym formacie występował też ESP32-S2 i on chyba ma więcej używalnych pinów)

a z tego co pamiętam to w RPi pico W nie ma w ogóle takich ograniczeń - każde wyprowadzone GPIO można użyć

a tak z ciekawości ile przycisków ma ten pilot, że tak walczysz o ilość GPIO?

najlepiej jak by mialo 23.

Nie wiem, sprawdź dokumentację tego co chcesz kupić, teraz jak spowodowałem, że twój obrazek widać bez klikania to zauważyłem, że poza formatem pico układ wyprowadzeń nie jest zgodny - Espressif olał wyprowadzanie masy co parę nóżek więc może tam jednak jest sensowna ilość GPIO do wykorzystania? (bo w ESP cześć jest już użyta do komunikacji z zamontowanymi elementami jak flash czy PSRAM, mimo że są wyprowadzone)

RPi pico W jak widać ma 26 użytkowych wyjść

Ale skoro podlinkowałeś do obrazka z dokumentacji, to i chyba dokumentację w pdfach też czytasz?

na razie zobacze na tym co mam - zobacze czy wogóle bedzie to działać tak jak chce. Jeśli zadziała i zabraknie mi wyjsc to wtedy kupie:

lub

Chciałbym programować sobie to z ESP HA to raczej wezme to esp32-s2 bo nie wiem czy to 2 też tak fajnie sie programuje.
Na dziś wystarczy wiadomości - poczekam 2 dni jak przyjdze towar i sie pobawie.
Na bank sie odezwe - dziekuje za dziś.

Jeśli pytasz o ESPHome to tak, RPi pico W jest obsługiwane (jest to obsługa w fazie eksperymentalnej, więc bardziej zaawansowane integracje mogą nie działać, ale wszystkie podstawowe działają bez problemu).

możesz sobie potrenowac na sucho, zbędne komponenty możesz wywalić - to taki mój prywatny szablonik dla RPi pico W

esphome:
  name: "rpi-pico-w"
  friendly_name: 'RPi pico W'

rp2040:
  board: rpipicow
  framework:
    # Required until https://github.com/platformio/platform-raspberrypi/pull/36 is merged
    platform_version: https://github.com/maxgerhardt/platform-raspberrypi.git

debug:
  update_interval: 5s

# Enable logging
logger:

# Enable Home Assistant API
api:
  reboot_timeout: 60s

ota:
  platform: esphome
  
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  power_save_mode: none
  output_power: 14
  # Enable fallback hotspot in case wifi connection fails
  ap:
    ssid: "Rpi-Pico-W Fallback Hotspot"
    password: secret !wifi_rcvr

time:
#  - platform: homeassistant
#    id: homeassistant_time
  - platform: sntp
    timezone: Europe/Warsaw
    servers:
      - 0.pl.pool.ntp.org
      - 1.pl.pool.ntp.org
      - 2.pl.pool.ntp.org
    id: sntp_time

i2c:
  - id: bus_a
    sda: SDA #GPIO4=pin6
    scl: SCL #GPIO5=pin7
    scan: true
  - id: bus_b
    sda: GPIO2 #GPIO2=pin4
    scl: GPIO3 #GPIO3=pin5
    scan: true

#### taka numeracja zajmuje porty analogowe
#    sda: SDA1 #GPIO26=pin31
#    scl: SCL1 #GPIO27=pin32
#    pin: GPIO28 #GPIO28=pin34


one_wire:
  - platform: gpio
    pin: GPIO22 #GPIO22=pin29
    id: one_wire_bus_a
  - platform: gpio
    pin: GPIO21 #GPIO21=pin27
    id: one_wire_bus_b
  - platform: gpio
    pin: GPIO20 #GPIO20=pin26
    id: one_wire_bus_c

button:
  - platform: restart
    name: "RPi Pico W Restart"

text_sensor:
  - platform: debug
    device:
      name: "Device Info"
    reset_reason:
      name: "Reset Reason"

  - platform: wifi_info
    ip_address:
      name: $friendly_name IP Address
    ssid:
      name: $friendly_name Connected SSID
    bssid:
      name: ${friendly_name} Connected BSSID
    mac_address:
      name: ${friendly_name} Mac Wifi Address
    scan_results:
      name: ${friendly_name} Latest Scan Results

binary_sensor:
  - platform: status
    name: "RPi Pico W Node Status"
    id: system_status

sensor:
  - platform: debug
    free:
      name: "Heap Free"
    block:
      name: "Heap Max Block"
    loop_time:
      name: "Loop Time"

  - platform: internal_temperature
    name: "Internal RPi pico W Temperature"
    accuracy_decimals: 1
    
  - platform: adc
    pin: TEMPERATURE
    name: "Core Temperature"
    unit_of_measurement: "°C"
    filters:
      - lambda: return 27 - (x - 0.706f) / 0.001721f;

  - platform: wifi_signal
    name: "RPi Pico W sygnał WiFi"
    update_interval: 60s
    
  - platform: uptime
    name: "RPi Pico W Uptime"
    filters:
      - lambda: return x / 3600;
    unit_of_measurement: "h"

status_led:
  pin:
    number: LED #32=GPIO0=no-pin
    inverted: true
1 Like