SOYER Napisano Grudzień 8, 2024 Udostępnij Napisano Grudzień 8, 2024 Kolega @_LM_ w innym wątku wkleił link do tego sprzętu: https://www.waveshare.com/esp32-s3-touch-lcd-4.htm @_LM_konkretne pytanie jak to się je, a tak bardziej konkretnie, jak zrobić(da się?) by ten monitor pobierał dane z serwera następnie w jakiejś ładnej formie to wyświetlał, dodatkowo by na nim można było uzywać linków bezpośrednich do wysyłania komend dla serwera i sterowania domowym IoT. Mowa tu konkretnie o Supli, polski projekt open surce do automatyki domowej. To tak bardziej ambitnie. Mniej ambitnie, da się na tym, lub czymś podobnym(i większym) zainstalować apkę androidową(supla)? Link do komentarza Share on other sites More sharing options...
_LM_ Grudzień 8, 2024 Udostępnij Grudzień 8, 2024 (edytowany) 27 minut temu, SOYER napisał: jak to się je hmm ja lubię popić herbatą bo strasznie twarde dziadostwo xD 27 minut temu, SOYER napisał: jak zrobić(da się?) by ten monitor pobierał dane z serwera Ten moduł ma esp na pokładzie a co za tym idzie możesz uruchomić WiFi i po podłączeniu do sieci pobierać dane z dowolnego miejsca. 27 minut temu, SOYER napisał: w jakiejś ładnej formie to wyświetlał, kwestia layoutu to tylko i wyłącznie twoja inwencja twórcza, ja do tego używam bibliotek LVGL (niestety wciąż w wersji 8 ) do budowy interfejsu programu eez - studio https://www.envox.eu/studio/studio-introduction/ choć mamy kolegę @H1M4W4R1 który używa do tego celu AI. Równie dobrze możesz użyć bibliotek adafruit gfx - ja się na nich nie znam więc się nie wypowiem. Wracając do tworzenie interfejsu, eez sstudio bardzo to ułatwia co zaprojektujesz w tym programie zostanie pokazane na wyświetlaczu. 27 minut temu, SOYER napisał: dodatkowo by na nim można było uzywać linków bezpośrednich do wysyłania komend dla serwera i sterowania domowym IoT Ja bym poszedł w stronę mqtt proste polecenia tam i z powrotem dają Ci kontrolę nad urządzeniem, nie wiem czy reflinki to dobry pomysł ale akurat na kwestiach webowych to się znam tylko na tyle co muszę - niewiele. 27 minut temu, SOYER napisał: Mniej ambitnie, da się na tym, lub czymś podobnym(i większym) zainstalować apkę androidową(supla)? Android na esp32? ... No chyyyyba nie? albo ja nic o tym nie wiem, z drugiej strony esp32 ma zasoby pewnie większe niż pierwsze smartphone więc kto wie... Ja nie wiem czy w takim układzie nie lepiej byłoby zakupić tablet - domyślam się że chcesz mieć sterowane coś z jednego miejsca w domu. I na nim mieć zainstalowaną aplikację suplli z dostępem do wszystkich twoich urządzeń? Edytowano Grudzień 8, 2024 przez _LM_ 1 Link do komentarza Share on other sites More sharing options...
_LM_ Grudzień 8, 2024 Udostępnij Grudzień 8, 2024 Kilka słów w temacie modułu który linkujesz: Gabarytowo mieści się do puszki ∅60 więc może służyć jednocześnie jako sterownik oświetlenia, termostat pokojowy, otwieracz drzwi, furtki. Z interfejsów ma wyprowadzone CAN RS485 I2C slot na kartę pamięci i buzzer który wkurza osoby początkujące ponieważ trzeba go wyłączyć programowo 😄 😛. Mi brakuje złącza 1Wire bo wg schematu zostały jeszcze trzy GPIO luzem ale nie wyprowadzone - a szkoda. Moduł tak na "dzień dobry" sprawia pewne trudności podczas prób z własnym oprogramowaniem ale nie są to rzeczy nie do przeskoczenia, przydaje się minimalna znajomość RTOSa albo znajomości na forbot.pl 😉 Nie wiem o czym mógłbym więcej napisać? 2 Link do komentarza Share on other sites More sharing options...
SOYER Grudzień 8, 2024 Autor tematu Udostępnij Grudzień 8, 2024 (edytowany) Brzmi fajnie. Nie muszę tego instalować, uważam, że telefon który jest w kieszeni jest bardziej uniwersalny. Z kolei tablet który mam na stałe podłączony na ścianie, znakomicie pełni rolę nosiciela supli, YT połączony przez bt z głośnikami. Jednak jest to małe, fajne i można się czegoś nauczyć i poszpanować przed kolegami;). Pytania dodatkowe, programujemy jak zwykłe esp? Przy pomocy czego? Ardu IDE też? Jak wgrywamy, usb? Jaki próg wejścia w własny layout, np. to narzędzie które wkleiłeś? Gdzie kupić? Co jeszcze trzeba kupić by coś zbudować? Najważniejsze pytanie, jak z tym łączymy np. moduły przekaźników. Czy takie moduły muszą być fizycznie połączone z ekranem. Jak nie, to jak to pracuje? Itd… Edytowano Grudzień 8, 2024 przez SOYER Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
_LM_ Grudzień 8, 2024 Udostępnij Grudzień 8, 2024 3 minuty temu, SOYER napisał: Pytania dodatkowe, programujemy jak zwykłe esp? Przy pomocy czego? Ardu IDE też? Jak wgrywamy, usb? Tak 4 minuty temu, SOYER napisał: Jaki próg wejścia w własny layout Nie do końca rozumiem to pytanie, z doświadczenia wiem że najtrudniej jest przebrnąć przez inicjalizację i konfigurację wyświetlacza. Arduino mocno wspomaga ten proces - niestety ma to przełożenie na wydajność systemu chcąc więcej trzeba już trochę pogrzebać w ustawieniach freertosa. 6 minut temu, SOYER napisał: to narzędzie które wkleiłeś? To narzędzie które wkleiłem generuje wszystkie pliki interfejsu użytkownika które wcześniej wyklikałeś w programie. Na przykład budujesz termostat, robisz swój layout klikasz build i masz wygenerowany plik z wszystkim co potrzebne w tym interfejsie: Następnie w swojej aplikacji na ESP32 musisz uruchomić wyświetlacz: void create_peripherials(void) { ESP_LOGI(TAG, "Initialize IOExpander bus"); esp_log_level_set("lcd_panel.io.i2c", ESP_LOG_NONE); esp_log_level_set("GT911", ESP_LOG_NONE); const i2c_config_t i2c_conf_io = { .mode = I2C_MODE_MASTER, .sda_io_num = 8, .sda_pullup_en = GPIO_PULLUP_ENABLE, .scl_io_num = 9, .scl_pullup_en = GPIO_PULLUP_ENABLE, .master.clk_speed = 400 * 1000, }; ESP_ERROR_CHECK(i2c_param_config(I2C_NUM_1, &i2c_conf_io)); ESP_ERROR_CHECK(i2c_driver_install(I2C_NUM_1, i2c_conf_io.mode, 0, 0, 0)); ESP_LOGI(TAG, "Initialize Touch bus"); const i2c_config_t i2c_conf = { .mode = I2C_MODE_MASTER, .sda_io_num = EXAMPLE_PIN_NUM_TOUCH_SDA, .sda_pullup_en = GPIO_PULLUP_ENABLE, .scl_io_num = EXAMPLE_PIN_NUM_TOUCH_SCL, .scl_pullup_en = GPIO_PULLUP_ENABLE, .master.clk_speed = 400 * 1000, }; ESP_ERROR_CHECK(i2c_param_config(TOUCH_HOST, &i2c_conf)); ESP_ERROR_CHECK(i2c_driver_install(TOUCH_HOST, i2c_conf.mode, 0, 0, 0)); // esp_io_expander_new_i2c_tca9554(I2C_NUM_1, ESP_IO_EXPANDER_I2C_TCA9554_ADDRESS_000, &io_expander); esp_err_t ret = esp_io_expander_new_i2c_tca9554(I2C_NUM_1, ESP_IO_EXPANDER_I2C_TCA9554_ADDRESS_000, &io_expander); if (ret != ESP_OK) { ESP_LOGW(TAG, "Failed to initialize IO expander with I2C_NUM_1, trying TOUCH_HOST..."); ret = esp_io_expander_new_i2c_tca9554(TOUCH_HOST, ESP_IO_EXPANDER_I2C_TCA9554_ADDRESS_000, &io_expander); if (ret != ESP_OK) { ESP_LOGE(TAG, "Failed to initialize IO expander with TOUCH_HOST"); ESP_ERROR_CHECK(i2c_driver_delete(I2C_NUM_1)); return; } } esp_io_expander_set_dir(io_expander, IO_EXPANDER_PIN_NUM_5 | IO_EXPANDER_PIN_NUM_0 | IO_EXPANDER_PIN_NUM_2, IO_EXPANDER_OUTPUT); esp_rom_gpio_pad_select_gpio(EXAMPLE_PIN_NUM_TOUCH_INT); gpio_set_direction(EXAMPLE_PIN_NUM_TOUCH_INT, GPIO_MODE_OUTPUT); gpio_set_level(EXAMPLE_PIN_NUM_TOUCH_INT, 0); esp_io_expander_set_level(io_expander, IO_EXPANDER_PIN_NUM_5, 0); // (1)beep? esp_io_expander_set_level(io_expander, IO_EXPANDER_PIN_NUM_0, 0); esp_io_expander_set_level(io_expander, IO_EXPANDER_PIN_NUM_2, 0); vTaskDelay(pdMS_TO_TICKS(100)); esp_io_expander_set_level(io_expander, IO_EXPANDER_PIN_NUM_5, 0); esp_io_expander_set_level(io_expander, IO_EXPANDER_PIN_NUM_0, 1); esp_io_expander_set_level(io_expander, IO_EXPANDER_PIN_NUM_2, 1); if (EXAMPLE_PIN_NUM_BK_LIGHT >= 0) { ESP_LOGI(TAG, "Turn off LCD backlight"); gpio_config_t bk_gpio_config = { .mode = GPIO_MODE_OUTPUT, .pin_bit_mask = 1ULL << EXAMPLE_PIN_NUM_BK_LIGHT}; ESP_ERROR_CHECK(gpio_config(&bk_gpio_config)); } ESP_LOGI(TAG, "Install 3-wire SPI panel IO"); spi_line_config_t line_config = { .cs_io_type = IO_TYPE_GPIO, .cs_gpio_num = EXAMPLE_LCD_IO_SPI_CS, .scl_io_type = IO_TYPE_GPIO, .scl_gpio_num = EXAMPLE_LCD_IO_SPI_SCL, .sda_io_type = IO_TYPE_GPIO, .sda_gpio_num = EXAMPLE_LCD_IO_SPI_SDA, .io_expander = NULL, }; esp_lcd_panel_io_3wire_spi_config_t io_config = ST7701_PANEL_IO_3WIRE_SPI_CONFIG(line_config, 0); esp_lcd_panel_io_handle_t io_handle = NULL; ESP_ERROR_CHECK(esp_lcd_new_panel_io_3wire_spi(&io_config, &io_handle)); ESP_LOGI(TAG, "Install ST7701 panel driver"); esp_lcd_panel_handle_t lcd_handle = NULL; esp_lcd_rgb_panel_config_t rgb_config = { .clk_src = LCD_CLK_SRC_DEFAULT, .psram_trans_align = 64, .data_width = EXAMPLE_RGB_DATA_WIDTH, .bits_per_pixel = EXAMPLE_RGB_BIT_PER_PIXEL, .de_gpio_num = EXAMPLE_LCD_IO_RGB_DE, .pclk_gpio_num = EXAMPLE_LCD_IO_RGB_PCLK, .vsync_gpio_num = EXAMPLE_LCD_IO_RGB_VSYNC, .hsync_gpio_num = EXAMPLE_LCD_IO_RGB_HSYNC, .disp_gpio_num = EXAMPLE_LCD_IO_RGB_DISP, .data_gpio_nums = { EXAMPLE_LCD_IO_RGB_DATA0, EXAMPLE_LCD_IO_RGB_DATA1, EXAMPLE_LCD_IO_RGB_DATA2, EXAMPLE_LCD_IO_RGB_DATA3, EXAMPLE_LCD_IO_RGB_DATA4, EXAMPLE_LCD_IO_RGB_DATA5, EXAMPLE_LCD_IO_RGB_DATA6, EXAMPLE_LCD_IO_RGB_DATA7, EXAMPLE_LCD_IO_RGB_DATA8, EXAMPLE_LCD_IO_RGB_DATA9, EXAMPLE_LCD_IO_RGB_DATA10, EXAMPLE_LCD_IO_RGB_DATA11, EXAMPLE_LCD_IO_RGB_DATA12, EXAMPLE_LCD_IO_RGB_DATA13, EXAMPLE_LCD_IO_RGB_DATA14, EXAMPLE_LCD_IO_RGB_DATA15, }, .timings = ST7701_480_480_PANEL_60HZ_RGB_TIMING(), .flags.fb_in_psram = 1, .num_fbs = LVGL_PORT_LCD_RGB_BUFFER_NUMS, .bounce_buffer_size_px = EXAMPLE_RGB_BOUNCE_BUFFER_SIZE, }; rgb_config.timings.h_res = EXAMPLE_LCD_H_RES; rgb_config.timings.v_res = EXAMPLE_LCD_V_RES; st7701_vendor_config_t vendor_config = { .rgb_config = &rgb_config, .init_cmds = lcd_init_cmds, // Uncomment these line if use custom initialization commands .init_cmds_size = sizeof(lcd_init_cmds) / sizeof(lcd_init_cmds[0]), .flags = { .auto_del_panel_io = 0, /** * Set to 1 if panel IO is no longer needed after LCD initialization. * If the panel IO pins are sharing other pins of the RGB interface to save GPIOs, * Please set it to 1 to release the pins. */ .mirror_by_cmd = 1, // Set to 0 if `auto_del_panel_io` is enabled }, }; const esp_lcd_panel_dev_config_t panel_config = { .reset_gpio_num = EXAMPLE_LCD_IO_RST, .rgb_ele_order = LCD_RGB_ELEMENT_ORDER_RGB, .bits_per_pixel = EXAMPLE_LCD_BIT_PER_PIXEL, .vendor_config = &vendor_config, }; ESP_ERROR_CHECK(esp_lcd_new_panel_st7701(io_handle, &panel_config, &lcd_handle)); ESP_ERROR_CHECK(esp_lcd_panel_reset(lcd_handle)); ESP_ERROR_CHECK(esp_lcd_panel_init(lcd_handle)); esp_lcd_panel_disp_on_off(lcd_handle, true); esp_lcd_touch_handle_t tp_handle = NULL; esp_lcd_panel_io_handle_t tp_io_handle = NULL; const esp_lcd_panel_io_i2c_config_t tp_io_config = ESP_LCD_TOUCH_IO_I2C_GT911_CONFIG(); ESP_LOGI(TAG, "Initialize I2C panel IO"); ESP_ERROR_CHECK(esp_lcd_new_panel_io_i2c((esp_lcd_i2c_bus_handle_t)TOUCH_HOST, &tp_io_config, &tp_io_handle)); ESP_LOGI(TAG, "Initialize touch controller GT911"); const esp_lcd_touch_config_t tp_cfg = { .x_max = EXAMPLE_LCD_H_RES, .y_max = EXAMPLE_LCD_V_RES, .rst_gpio_num = EXAMPLE_PIN_NUM_TOUCH_RST, .int_gpio_num = EXAMPLE_PIN_NUM_TOUCH_INT, .levels = { .reset = 0, .interrupt = 0, }, .flags = { .swap_xy = 0, .mirror_x = 0, .mirror_y = 0, }, }; ESP_ERROR_CHECK(esp_lcd_touch_new_i2c_gt911(tp_io_handle, &tp_cfg, &tp_handle)); ESP_ERROR_CHECK(lvgl_port_init(lcd_handle, tp_handle)); esp_lcd_rgb_panel_event_callbacks_t cbs = { #if EXAMPLE_RGB_BOUNCE_BUFFER_SIZE > 0 .on_bounce_frame_finish = rgb_lcd_on_vsync_event, #else .on_vsync = rgb_lcd_on_vsync_event, #endif }; esp_lcd_rgb_panel_register_event_callbacks(lcd_handle, &cbs, NULL); } To jest akurat dostarczone przez biblioteki producenta więc nie potrzeba się pocić 😉 a w Arduino zapewne jest jeszcze łatwiej. Dalej, po inicjalizacji peryferii i wszystkich niezbędnych składników odpalasz główną funkcję LVGL: ui_init(); Podpinasz timer biblioteki (tutaj nie zwracaj uwagi na mutexa testuję pewne funkcje) while(1) { if (lvgl_port_lock(5)) { // Release the mutex // lvgl_port_unlock(); lv_timer_handler(); ui_tick(); lvgl_port_unlock(); } iii jak wszystko poszło zgodnie z planem mamy ładny ekranik: 1 Link do komentarza Share on other sites More sharing options...
_LM_ Grudzień 8, 2024 Udostępnij Grudzień 8, 2024 25 minut temu, SOYER napisał: Gdzie kupić? Co jeszcze trzeba kupić by coś zbudować? U czerwonych nieprzyjaciół. 26 minut temu, SOYER napisał: Najważniejsze pytanie, jak z tym łączymy np. moduły przekaźników. Czy takie moduły muszą być fizycznie połączone z ekranem. Jak nie, to jak to pracuje? Itd… Za pomocą magistral CAN/MODBUS wtedy możesz użyć: https://www.waveshare.com/modbus-rtu-relay.htm lub bezprzewodowo za pomocą interfejsów które są normalnie dostępne z ESP32 można przez BLE, można przez ESPNOW. W końcu można dogadać się z serwerem MQTT coś jak twoja supla. 1 Link do komentarza Share on other sites More sharing options...
SOYER Grudzień 8, 2024 Autor tematu Udostępnij Grudzień 8, 2024 Pytając o próg wejścia w własny layout, byłem ciekaw czy dam radę sam to zrobić. Ja, bez zdolności programistycznych. Może faktycznie @H1M4W4R1 coś doradzi. Zdecydowany jestem, gdzie to kupić na pewniaka? Widzę @_LM_, że nasz sąsiad wspólny też tym handluje. elty.pl Link do komentarza Share on other sites More sharing options...
SOYER Grudzień 8, 2024 Autor tematu Udostępnij Grudzień 8, 2024 2 minuty temu, _LM_ napisał: czerwonych nieprzyjaciół ?? Link do komentarza Share on other sites More sharing options...
_LM_ Grudzień 8, 2024 Udostępnij Grudzień 8, 2024 (edytowany) 3 minuty temu, SOYER napisał: Pytając o próg wejścia w własny layout, byłem ciekaw czy dam radę sam to zrobić. Zainstaluj eez studio, wybierz zakładkę lvgl lub lvgl - flow i sprawdź, możesz to przetestować bez jakiegokolwiek sprzętu Edytowano Grudzień 8, 2024 przez _LM_ 1 Link do komentarza Share on other sites More sharing options...
_LM_ Grudzień 8, 2024 Udostępnij Grudzień 8, 2024 1 minutę temu, SOYER napisał: ?? Nie przepadam za czerwoną zarazą CHRL Link do komentarza Share on other sites More sharing options...
SOYER Grudzień 8, 2024 Autor tematu Udostępnij Grudzień 8, 2024 1 minutę temu, _LM_ napisał: Nie przepadam za czerwoną zarazą CHRL Możesz się podzielić sprawdzonym sprzedawcą? Jak nie tutaj to chociaż priv? Link do komentarza Share on other sites More sharing options...
SOYER Grudzień 8, 2024 Autor tematu Udostępnij Grudzień 8, 2024 Przed chwilą, SOYER napisał: Możesz się podzielić sprawdzonym sprzedawcą? Jak nie tutaj to chociaż priv? Chyba, że masz na zbyciu… Link do komentarza Share on other sites More sharing options...
_LM_ Grudzień 8, 2024 Udostępnij Grudzień 8, 2024 Przed chwilą, SOYER napisał: Możesz się podzielić sprawdzonym sprzedawcą? Jak nie tutaj to chociaż priv? Znaczy, żeby było jasne kupiłem u komuchów bo niema innej opcji 😄 link podesłał mi @H1M4W4R1 kiedyś https://www.aliexpress.com/item/1005007582119640.html?spm=a2g0o.order_list.order_list_main.10.21ef1c24JxGg9v&gatewayAdapt=glo2pol 7 minut temu, SOYER napisał: Chyba, że masz na zbyciu… Nie 😉 Link do komentarza Share on other sites More sharing options...
_LM_ Grudzień 8, 2024 Udostępnij Grudzień 8, 2024 Tu możesz poczytać oraz zobaczyć możliwości biblioteki LVGL Link do komentarza Share on other sites More sharing options...
_LM_ Grudzień 8, 2024 Udostępnij Grudzień 8, 2024 (edytowany) Tu możesz poczytać oraz zobaczyć możliwości biblioteki LVGL EDIT do kosza duplikat. Edytowano Grudzień 8, 2024 przez _LM_ Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »