ESPHome - Obsługa kilku urządzeń jednym enkoderem

Hej. Jestem początkujący w temacie więc pytanie może banalne ale na inne znalazłem odpowiedzi w poradnikach na to nie.

Chciałbym utworzyć kilka ekranów, na każdym inna treść np. dany ekran do danej żarówki, przycisk bezpośredniego wyboru aktywuje ten ekran, na nim mam nazwę tejże żarówki i % jej jasności a kręcąc pokrętłem reguluję jej jasność (do tej pory umiem). Takich ekranów mam dajmy na to 4-5, przycisków bezpośredniego wyboru sporo ale jedno pokrętło (tu problem). Zapewne też jeden ekran był by używany do wyświetlania utworów ze spotify więc i fajnie gdyby na nim dało się przełączać utwory.

Może to i głupie ale mam plan “zabudować” mój home assistant w jakiś przęt RTV typu tuner radiowy, postawić go sobie w salonie na wzmacniaczu i oprócz udawania czegokolwiek fajnie jak by mógł wygodnie sterować np. światłem czy spotifajem.

Dzięki za zainteresowanie ale jak to się ma do mojego posta?

Witamy na forum. Może źle zrozumiałem, szukasz sprzętu, czy pytasz o kod do ESP?

ESP to nazwa rodziny mikrontrolerów, więc temat też nie jest jednoznaczny.

Pytanie raczej nie jest banalne.

Jako ekrany wykorzystałbym pewnie strony, które można by wywoływać przyciskami
https://esphome.io/components/display/#display-pages

Generalnie jako rozwiązanie w miarę “na gotowo” narzuca się jeden z komponentów

tu ^ taka uwaga - wykorzystanie wyświetlacza e-ink to moim zdaniem strzał w kolano ze względu na responsywność, a OLEDy za to się wypalają przy wyświetlaniu statycznego obrazu, więc znakowy LCD chyba jest najrozsądniejszy.

być może jednak będziesz musiał pokopać po githubie by znaleźć z czego się wywodzi ten pierwszy projekt (kiedyś to nie był gotowy komponent tylko niestandardowe rozszerzenie, które dawało chyba łatwiejszy dostęp do swoich funkcji składowych, ale nie ukrywam nie robiłem dotąd nic na bazie tych powyższych, bo nie mam mocy przerobowych na taką zabawę, chociaż też nie ukrywam kusiło mnie to już parę lat temu - stąd pamiętam, projekt z którego się to prawdopodobnie wywodzi, niestety linka nie podam, bo się nie zdecydowałem na realizację - kilka lat temu ESPHome było znacznie uboższe w gotowce).

Jeśli chodzi o platformę sprzętową, to do rozważenia ESP32-S2 lub ESP32-S3, bo będziesz potrzebował od groma GPIO, a te 2 konstrukcje mają ich całkiem sporo bezpośrednio w MCU (szczególnie, że ze względu na potrzebną responsywność wyświetlacza pewnie będziesz go sterował bezpośrednio z GPIO z szeroką szyną danych, a nie metodami szeregowymi)
https://esphome.io/components/display/lcd_display#lcd-gpio.

To w sumie tyle co na świeżo przyszło mi do głowy, może jednak się odezwie ktoś kto zrealizował podobny projekt.

Nie będę komentował czy głupie, czy nie - każdy fajny projekt jest wart realizacji, nawet jeśli nie będzie faktycznie tak intensywnie wykorzystany jak się to teraz wydaje.

Ze względów ergonomicznych i zwyczajnej wygody zwykle warto jednak mieć manipulatory w miejscach gdzie są najpotrzebniejsze, a nie w jednym centralnym punkcie - tu taki prosty przykład - piloty sterujące światłem w małej sypialni mamy 3 - główny przy wejściu i 2 dodatkowe po obu stronach łóżka, przy czym każdy ma nieco inny zestaw funkcji.

Kod ESP, nowy na forum to może źle umieściłem posta, sprzęt że tak powiem sam zrobię. Nie doszukałem się na stronie ESP Home nic co by mi pomogło tylko opcja z menu, które na 1306 nie bardzo chce działać. Docelowo będzie pewnie ekran w stylu 2x20 lub większy jak się zmieści.

Na razie nie mam wszystkich gratów ale na razie trenuję na kilku przyciskach i ssd1306.

Odnośnie rozmiaru, to jeśli zmieścisz 20x4 to będzie to chyba najrozsądniejsze posunięcie - rozmiar standardowej PCB takiego typowego wyświetlacza to 10cm x 6cm, przy czym użytkowa cześć, czyli sam ekran ma 7.5cm x 2.5cm.

Najlepiej, żebyś wybrał sobie docelowe MCU, bo one się dość mocno różnią konstrukcyjnie.

ESP32 mam, ilość przycisków pewnie zamknie się w 12 (matryca 4x4) czyli 8 pinów, 2 do wyświetlacza, kolejne chyba 3 do enkodera, może jakiś led. Zawsze można wykorzystać ekspander do przycisków to w sumie chyba nie problem.

Wersja z ekranami jest fajna, coś tam udało mi się sklecić jak wyświetlanie np. temperatur z różnych czujników z domu i godziny, tak właśnie myślałem żeby na tej zasadzie to zrobić ale nie wiem jak zrobić żeby przycisk czy enkoder wywoływał działanie tylko na tym ekranie, który jest wyświetlony w danej chwili.

Menu testowałem a raczej próbowałem, żadne nie chce odpalić na ssd1306, pokazuje not supported, na razie żadnego innego ekranu nie mam.

EMC kosztue w sumie grosze, zmiana jak braknie I/O nie problem.

Na wyświetlacz graficzny musisz stosować komponent graficzny, na wyświetlacz znakowy komponent znakowy.

SSD1306 jest graficzny.

Myślę, że na zwykłym ESP32 się nie zmieścisz - tam sobie zajrzyj,

a na wyświetlacz w trybie równoległym idzie od groma pinów
https://esphome.io/components/display/lcd_display#lcd-gpio

co to jest EMC?

Komponenty najmniej ważne w tej chwili, na razie chciałbym to odpalić żeby enkoder + 2-3 przyciski zadziałały, jak to ruszy wtedy będę myślał co mi potrzebne. Docelowej obudowy jeszcze nie mam więc nie wiem ile przycisków będzie i czy wszystkie zużyję. W planach jest coś takiego wybebeszyć.

https://m.media-amazon.com/images/I/61PvwN0qFNL._AC_SY300_SX300_QL70_ML2.jpg

MCU miało być, pomyłka się wdarła.

Zrozumiesz o czym mówię jak będziesz przenosił projekt z ESP32 na inny MCU choćby S2 lub S3

Teraz docelowego programu i tak nie napiszę ale jak poznam metodę to będę mógł ruszyć z tym dalej.

Mam w pracy taki ekranik, coś tam pisałem w arduino i wystarczą 4 piny do takiego ekranu, są też układy tłumaczące na I2C.

Niestety tak samo nie przetrenujesz rozwiązań dla wyświetlacza znakowego na graficznym, ale oczywiście poznasz jakoś te rozwiązania.

Posiedzisz w dokumentacji to coś wyczarujesz, mimo wszystko na twoim miejscu od razu bym celował w docelowe komponenty sprzętowe.

Próbowałem znaleźć tamten projekt sprzed gotowych komponentów menu, ale nie widzę po nim śladu… więc chyba jednak będziesz musiał posiedzieć w issues związanych z gotowym menu na githubie - tam można znaleźć naprawdę sporo ciekawych rozwiązań.

Najpierw serializujesz dane, a potem je deserializujesz, ale oczywiście zrobisz jak uważasz, na I2C zaoszczędzisz sporo pinów, kosztem responsywności.

Dasz radę - walcz.