Git Product home page Git Product logo

esp32-tux's Introduction

ESP32-TUX

GitHub Github sponsor
GitHub forks GitHub Repo stars GitHub issues

ESP32-TUX - A Touch UX template to get you started.

SPONSORING

Github sponsor

Your sponsorship would help me not only to maintain this project but also to work on a version 2 of this project with LVGL v9 support and other useful additions. If you're an individual user who has enjoyed my projects or benefited from my community work, please consider donating as a sign of appreciation. If you run a business that uses my work in your products, sponsoring my development makes good business sense: it ensures that the projects your product relies on stay healthy and actively maintained. I am also available in case you have custom HMI requirements.

Thank you for considering supporting my work!

Screens

  1. HOME (you can add more widgets here)
  2. REMOTE (Sample App screen where you can have your own)
  3. SETTINGS (with WI-FI provisioning, brightness, theme, portrait/landscape)
  4. OTA (Over-the-air update and device info)

Remember this is a template so make it your own as per your needs.

As of 2022-12-11 As of 2022-12-11 As of 2022-12-11 As of 2022-12-11

Web Installer : https://tux.sukesh.me

You only need a USB Cable and Browser to install and test on your device.

Key Project Goals

  • An easy UI Template to get started quickly
  • UI Scaling for different resolutions
  • Rotate to Landscape / Portrait without code changes
  • Easy re-use of the template with just a header file Supported Devices here
  • Switching Themes easily (Dark/Light)
  • Access to SPIFF partition with F:/<filename>
  • Support for updating UI from any Task
  • Wi-Fi Provisioning using BLE/SoftAP
  • OTA update using local (Python webserver) and Cloud (Azure) later
  • Save settings in json file
  • Support more devices with TFT + Capacitive Touch

Features included

  • OTA Update with esp_events integration
  • Wi-Fi Provisioning using SoftAP + Espressif Provisioning App
  • UI Islands (Widget - tux_panel)
  • Support for updating UI from different tasks [lvgl_acquire/lvgl_release]
  • UI code separation into gui.hpp
  • Same UI code which adapts to different resolutions
  • Supports shared SPI bus for SD Card - here
  • Instructions below on how to compile and use same project target different ESP32 / ESP32-S3 controllers.
  • Switch between devices using just a header file inclusion
  • Add your own controller/display with just a header change
  • Shows battery meter animation using timer - here
  • Shows SD card status change with icon
  • Switch theme between Light & Dark - here
  • Scrolling long message in footer - here
  • Rotate screen Landscape/Portrait here
  • Enable SPIFF partition and init here
  • Map SPIFF to LVGL Filesystem as F: here
  • Map SD Card to LVGL Filesystem as S: here
  • Load Images directly using F:/.png here => tux_panel_weather()
  • Settings Page

Todo List

  • BLE Config
  • Pages as modules
  • Multiple Navigation styles
  • Integration with SquareLine Studio

WIDGET : How to use TUX_PANEL Widget

Entire UI consists of Header, Footer and TUX_PANEL widgets.

// Create the Panel instance with title 
// 200px height and it can also be LV_SIZE_CONTENT or LV_PCT(100)
// Leave title empty if you don't need a title.
lv_obj_t *panel1 = tux_panel_create(parent, LV_SYMBOL_EDIT " CONFIG", 200);

// Set the common panel style
lv_obj_add_style(panel1, &style_ui_island, 0);

// Set title color to RED
tux_panel_set_title_color(panel1, lv_palette_main(LV_PALETTE_RED));

// Set title background color to BLUE
tux_panel_set_title_bg_color(panel1,lv_palette_main(LV_PALETTE_BLUE))

// Set height of tux_panel to 300
tux_panel_set_height(panel1,300);

// Set background color of content area to GREEN
tux_panel_set_content_bg_color(panel1,lv_palette_main(LV_PALETTE_GREEN))

// Get Content Area of the panel to add UI elements
lv_obj_t *cont1 = tux_panel_get_content(panel1);

// Add Label to the content area
lv_obj_t *lbl_version = lv_label_create(cont1);
lv_obj_set_size(lbl_version, LV_SIZE_CONTENT, 30);
lv_obj_align(lbl_version, LV_ALIGN_CENTER, 0, 0);
lv_label_set_text(lbl_version, "Firmware Version 1.1.0");

Currently Supported Devices

Devices WT32-SC01 WT32-SC01+ ESP32S3SPI35 ESP32S335D
Manufacturer Wireless-Tag Wireless-Tag Makerfabs Makerfabs
MCU ESP32 ESP32-S3 ESP32-S3 ESP32-S3
Display Size 3.5" 3.5" 3.5" 3.5"
Resolution 480x320 480x320 480x320 480x320
Display Controller ST7796 ST7796UI ILI9488 ILI9488
Display Interface SPI 8Bit Parallel SPI 16Bit Parallel
Touch Controller FT5x06 FT5x06 FT5x06 FT5x06
Flash Size 4MB 8MB 16MB 16MB
PSRAM Size 4MB 2MB 2MB 2MB
Wi-Fi Yes Yes Yes Yes
Bluetooth BT/BLE 4.x BLE 5.x BLE 5.x BLE 5.x
SD CARD No Yes Yes Yes
OTG No Yes Yes Yes
Datasheet PDF PDF PDF PDF
Purchase Link BUY BUY BUY BUY

Flash & PSRAM specifications are as per what I received.

Getting Started

Make sure you have installed ESP-IDF 5.0 (released version) and working from the command-line.

Watch project Demo Walkthrough - Clone, Build and Flash

asciicast

Refer Project Wiki for more details here

How custom lvgl config is setup - ESP-IDF

Check settings in CMakeLists.txt here

#LVGL custom config file setup
idf_build_set_property(COMPILE_OPTIONS "-DLV_CONF_INCLUDE_SIMPLE=1" APPEND)
idf_build_set_property(COMPILE_OPTIONS "-I../main" APPEND)

Separate build folder for ESP32 & ESP32-S3

Check settings in CMakeLists.txt here
This enables you to have separate build folder, in case you use multiple devices with different controller variants like ESP32 vs ESP32-S3.

Display Helpful Compile Time Information

Check settings in CMakeLists.txt here

# Display Compile Time Information
message(STATUS "--------------Compile Info------------")
message(STATUS "IDF_PATH = ${IDF_PATH}")
message(STATUS "IDF_TARGET = ${IDF_TARGET}")
message(STATUS "PROJECT_NAME = ${PROJECT_NAME}")
message(STATUS "PROJECT_DIR = ${PROJECT_DIR}")
message(STATUS "BUILD_DIR = ${BUILD_DIR}")
message(STATUS "SDKCONFIG = ${SDKCONFIG}")
message(STATUS "SDKCONFIG_DEFAULTS = ${SDKCONFIG_DEFAULTS}")
message(STATUS "CONFIG_LV_CONF_SKIP = ${CONFIG_LV_CONF_SKIP}")
message(STATUS "COMPILE_OPTIONS = ${COMPILE_OPTIONS}")
message(STATUS "---------------------------------------")
message(STATUS "CMAKE_SOURCE_DIR = ${CMAKE_SOURCE_DIR}")
message(STATUS "CMAKE_BINARY_DIR = ${CMAKE_BINARY_DIR}")
message(STATUS "---------------------------------------")

3D Printable enclosure (STL)

FREE - WT32-SC01 - 3D enclosure on SketchFab website
FREE - WT32-SC01 - 3D enclosure on Cults3d by DUANEORTON
PAID - WT32-SC01 - 3D enclosure on Cults3d by PRINTMINION
PAID - WT32-SC01 - 3D enclosure on Cults3d by TOMCASA

esp32-tux's People

Contributors

sukesh-ak avatar zackees avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

esp32-tux's Issues

Error building the project

Hi.
I am using ESP-IDF 5, and uncommented my device in main.hpp but i am getting this error when i run idf.py menuconfig.

image

touch not working IL9341

hello dear,
i m using esp32s3 with il9341 xpt2046 touch screen
tft display working but touch not working can u help me ?

my config :

`

#define MAKERFAB_ESP32S3_SPI
#define SD_SUPPORTED
#define SHARED_SPI
#define SDSPI_HOST_ID SPI3_HOST

#define LGFX_USE_V1
#include <LovyanGFX.hpp>

// SD CARD - SPI
/*
#define SDSPI_HOST_ID SPI3_HOST
#define SD_CS GPIO_NUM_1

#define SD_MOSI GPIO_NUM_2
#define SD_MISO GPIO_NUM_41
#define SD_SCLK GPIO_NUM_42
*/

// Portrait
#define TFT_WIDTH 240
#define TFT_HEIGHT 320

#define SPI_HOST_ID SPI2_HOST
#define TFT_MOSI GPIO_NUM_14
#define TFT_MISO GPIO_NUM_19 // Set this PIN for using shared SPI option
#define TFT_SCLK GPIO_NUM_18
#define TFT_DC GPIO_NUM_21
#define TFT_CS GPIO_NUM_15
#define TFT_RST GPIO_NUM_17
#define TFT_BL -1

#define TFT_RTOUCH_CS GPIO_NUM_16
#define TFT_RIQ GPIO_NUM_47

class LGFX : public lgfx::LGFX_Device
{
// provide an instance that matches the type of panel you want to connect to.
lgfx::Panel_ILI9341 _panel_instance;

// provide an instance that matches the type of bus to which the panel is connected.
lgfx::Bus_SPI _bus_instance; // Instances of spi buses

//Prepare an instance that matches the type of touchscreen. 

// lgfx::Touch_FT5x06 _touch_instance;
lgfx::Touch_XPT2046 _touch_instance;
//lgfx::Touch_STMPE610 _touch_instance;
//lgfx::Light_PWM _light_instance;

public:

LGFX(void)
{
{
// set up bus control.
auto cfg = _bus_instance.config(); // gets the structure for bus settings.

  // SPI bus settings
  cfg.spi_host = SPI_HOST_ID;// SPI_HOST_ID; // Select SPI to use ESP32-S2,C3: SPI2_HOST or SPI3_HOST / ESP32: VSPI_HOST or HSPI_HOST

  //* Due to the ESP-IDF upgrade, the description of VSPI_HOST , HSPI_HOST will be deprecated, so if you get an error, use SPI2_HOST , SPI3_HOST instead.
  cfg.spi_mode = 0;          // Set SPI communication mode (0-3) 
  cfg.freq_write = 40000000; // SPI clock on transmission (up to 80MHz, rounded to 80MHz divided by integer)
  cfg.freq_read = 16000000;  // SPI clock on reception
  cfg.spi_3wire = false;      // Set true when receiving on the MOSI pin
  cfg.use_lock = true;       // set true if transaction lock is used

  //  * With the ESP-IDF version upgrade, SPI_DMA_CH_AUTO (automatic setting) of DMA channels is recommended. 
  cfg.dma_channel = SPI_DMA_CH_AUTO; // Set DMA channel to be used (0=DMA not used / 1=1ch / 2=ch / SPI_DMA_CH_AUTO=Auto setting)

  cfg.pin_sclk = TFT_SCLK; // Set SCLK pin number for SPI
  cfg.pin_mosi = TFT_MOSI; // Set SPI MOSI pin number

  // When using the SPI bus, which is common to the SD card, be sure to set MISO without omitting it.
  cfg.pin_miso = TFT_MISO; // Set THE MSO pin number of spi (-1 = disable)
  cfg.pin_dc = TFT_DC;    // Set THE D/C pin number of SPI (-1 = disable)

  _bus_instance.config(cfg);              // reflects the setting value on the bus.
  _panel_instance.setBus(&_bus_instance); // Set the bus to the panel.
}

{
  // set the display panel control.
  auto cfg = _panel_instance.config(); // gets the structure for display panel settings.

  cfg.pin_cs = TFT_CS;    // Pin number to which CS is connected (-1 = disable)
  cfg.pin_rst = TFT_RST;  // Pin number to which RST is connected (-1 = disable)
  cfg.pin_busy = -1;      // Pin number to which BUSY is connected (-1 = disable)

  // the following setting values are set to a general initial value for each panel,
  cfg.panel_width = TFT_WIDTH;    // actual visible width
  cfg.panel_height = TFT_HEIGHT;   // actually visible height
  cfg.offset_x = 0;         // Panel X-direction offset amount
  cfg.offset_y = 0;         // Panel Y offset amount
  cfg.offset_rotation = 0;  // offset of rotational values from 0 to 7 (4 to 7 upside down)
  cfg.dummy_read_pixel = 8; // number of bits in dummy leads before pixel read
  cfg.dummy_read_bits = 1;  // number of bits in dummy leads before reading non-pixel data
  cfg.readable = true;      // set to true if data can be read
  cfg.invert = false;       // set to true if the light and dark of the panel is reversed
  cfg.rgb_order = false;    // set to true if the red and blue of the panel are swapped
  cfg.dlen_16bit = false;   // Set to true for panels that transmit data lengths in 16-bit increments in 16-bit parallel or SPI
  cfg.bus_shared = true;    // Set to true when sharing the bus with sd card (bus control is performed with drawJpgFile, etc.)

  // The following should only be set if the display is misalized by a driver with a variable number of pixels, such as st7735 or ILI9163.
  // cfg.memory_width = 240; //Maximum width supported by driver ICs
  // cfg.memory_height = 320; //Maximum height supported by driver ICs

  _panel_instance.config(cfg);
}


{
    auto cfg = _touch_instance.config();
    cfg.x_min = 0;  //Smallest X value (raw value) obtained from the touch screen
    cfg.x_max = 239;  //The maximum X value (raw value) obtained from the touch screen
    cfg.y_min = 0;  //Smallest Y value (raw value) obtained from the touch screen
    cfg.y_max = 319;  //The largest Y-value (raw value) obtained from the touchscreen
    cfg.pin_int = -1;//38;  //Number of pins to which INT is connected
    cfg.bus_shared = true;  //Set to true if using a bus that is common to the screen
    cfg.offset_rotation = 0;  //Adjustment when the display and touch orientations do not match Set with a value of 0~7

    // For SPI connections
    cfg.spi_host = SPI_HOST_ID;  //Select SPI to use (HSPI_HOST or VSPI_HOST)
    cfg.freq =1000000;  //Set the SPI Clock
    cfg.pin_sclk = TFT_SCLK;  //Pin number to which SCLK is connected
    cfg.pin_mosi = TFT_MOSI;  //Number of pins to which MOSI is connected
    cfg.pin_miso = TFT_MISO;  //Pin number to which MISO is connected
    cfg.pin_cs = TFT_RTOUCH_CS;  //Pin number to which CS is connected

    _touch_instance.config(cfg);
    _panel_instance.setTouch(&_touch_instance);  //Set the touch screen on the panel. 
}
setPanel(&_panel_instance); // Set the panel to be used.

}
};`

Failed build

Most likely I'm missing a step but, after doing:

bringing all submodules in
idf.py set-target esp32
idf menu-config [WT32-SC01-Plus,4Mb]
idf.py build

I get the following error:

/Dev/CNC/WT32-SqLn/components/LovyanGFX/src/lgfx/v1/misc/pixelcopy.cpp: In constructor 'lgfx::v1::pixelcopy_t::pixelcopy_t(const void*, lgfx::v1::color_depth_t, lgfx::v1::color_depth_t, bool, const void*, uint32_t)':
/Dev/CNC/WT32-SqLn/components/LovyanGFX/src/lgfx/v1/misc/pixelcopy.cpp:39:25: error: member 'lgfx::v1::pixelcopy_t::<anonymous>' is used uninitialized [-Werror=uninitialized]
   39 |     , src_mask  ( (1 << src_bits) - 1 )
      |                         ^~~~~~~~
/Dev/CNC/WT32-SqLn/components/LovyanGFX/src/lgfx/v1/misc/pixelcopy.cpp:40:25: error: member 'lgfx::v1::pixelcopy_t::<anonymous>' is used uninitialized [-Werror=uninitialized]
   40 |     , dst_mask  ( (1 << dst_bits) - 1 )
      |                         ^~~~~~~~
cc1plus: some warnings being treated as errors
[702/1148] Building CXX object esp-idf/...yanGFX.dir/src/lgfx/v1/LGFXBase.cpp.objninja: build stopped: subcommand failed.
ninja failed with exit code 1, output of the command is in the /Dev/CNC/WT32-SqLn/build/log/idf_py_stderr_output_44835 and /Dev/CNC/WT32-SqLn/build/log/idf_py_stdout_output_44835

Any suggestions?

Question again if a port for Arduino IDE would be possible/feasible and some hint would be also possible

this is a great project for the WT32-SC01 Plus, many thanks for shaing this!
But I also wanted to use it in the Arduino IDE.
It it feasible and worth to spent the effort to migrate this ESP-IDF based code to an Arduino IDE acceppted code?
I have tried to insert the main.cpp code in the "voide setup() function and an empto loop function (as I have not seen a matching or required loop code) and it does of course not compile because it does not even accept the include files such as #include <spi_flash_mmap.h> ?
Any help possible or to much to change?

Web installer fail

Hi! I am trying to test this using the web installer on sc01 plus but I get:
Failed to initialize. Try resetting your device or holding the BOOT button while clicking INSTALL.

I only have a reset button, is there is something simple I am failing to do?

Scrolling performance tuning for all boards

// Display callback to flush the buffer to screen
void display_flush(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p)
{
    uint32_t w = (area->x2 - area->x1 + 1);
    uint32_t h = (area->y2 - area->y1 + 1);

    lcd.startWrite();
    lcd.setAddrWindow(area->x1, area->y1, w, h);
    lcd.pushPixels((uint16_t *)&color_p->full, w * h, true);
    lcd.endWrite();

    //lcd.pushImageDMA(area->x1, area->y1, area->x2 - area->x1 + 1, area->y2 - area->y1 + 1, (lgfx::swap565_t *)&color_p->full);

    lv_disp_flush_ready(disp);
}

@sukesh-ak I saw the code to start DMA in your code, I wonder why you didn't start it?

build errors - error: 'INTR_CPU_ID_AUTO' was not declared in this scope

Hi!
First Thanks for the great work you are doing! this is a verynice project.

I managed to compile for WT32-SC01 3.5" and flashed it
Ineede to change my computer in the meantime and got all the setup new the same way, but Iam getting now compilation errors.
I fresh cloned your project, I installed esp-idf-version 5.2 -> the same I have used before.

I also tried it with idf Version 5.0 but the same result. no successfull build
idf_py_stdout_output_36856.log

I have the build-log attached, pls help
Thanks
Regards
Joe

WT32-SCO Broken Build - Bad GPIO define

Do you know what the solution is?

  • System
    • MacOS: 13.0.1 (22A400)
    • idf.py: v5.1-dev-2594-ga5b4e3bb3e

I used idf.py menuconfig and set it to the WT32-SCO and this build happens (below). The WT32-SCO-PLUS compiles fine.

[1/1] cd /Users/niteris/dev/ESP32-TUX/build/bootloader/esp-idf/esptool_py && /Users/niteris/.espressif/python_env/idf5.1_py3...s/partition_table/check_sizes.py --offset 0x8000 bootloader 0x0 /Users/niteris/dev/ESP32-TUX/build/bootloader/bootloader.binBootloader binary size 0x50c0 bytes. 0x2f40 bytes (37%) free.
[5/10] Building CXX object esp-idf/main/CMakeFiles/__idf_main.dir/main.cpp.objFAILED: esp-idf/main/CMakeFiles/__idf_main.dir/main.cpp.obj 
/Users/niteris/.espressif/tools/xtensa-esp32s3-elf/esp-2022r1-11.2.0/xtensa-esp32s3-elf/bin/xtensa-esp32s3-elf-g++ -DESP_PLATFORM -DIDF_VER=\"v5.1-dev-2594-ga5b4e3bb3e\" -DLV_CONF_INCLUDE_SIMPLE -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -I/Users/niteris/dev/ESP32-TUX/build/config -I/Users/niteris/dev/ESP32-TUX/main -I/Users/niteris/dev/ESP32-TUX/main/devices -I/Users/niteris/dev/ESP32-TUX/main/helpers -I/Users/niteris/dev/ESP32-TUX/main/pages -I/Users/niteris/dev/ESP32-TUX/main/widgets -I/Users/niteris/dev/ESP32-TUX/main/images -I/Users/niteris/esp/esp-idf/components/newlib/platform_include -I/Users/niteris/esp/esp-idf/components/freertos/FreeRTOS-Kernel/include -I/Users/niteris/esp/esp-idf/components/freertos/FreeRTOS-Kernel/portable/xtensa/include -I/Users/niteris/esp/esp-idf/components/freertos/esp_additions/include/freertos -I/Users/niteris/esp/esp-idf/components/freertos/esp_additions/include -I/Users/niteris/esp/esp-idf/components/esp_hw_support/include -I/Users/niteris/esp/esp-idf/components/esp_hw_support/include/soc -I/Users/niteris/esp/esp-idf/components/esp_hw_support/include/soc/esp32s3 -I/Users/niteris/esp/esp-idf/components/esp_hw_support/port/esp32s3/. -I/Users/niteris/esp/esp-idf/components/esp_hw_support/port/esp32s3/private_include -I/Users/niteris/esp/esp-idf/components/heap/include -I/Users/niteris/esp/esp-idf/components/log/include -I/Users/niteris/esp/esp-idf/components/soc/include -I/Users/niteris/esp/esp-idf/components/soc/esp32s3/. -I/Users/niteris/esp/esp-idf/components/soc/esp32s3/include -I/Users/niteris/esp/esp-idf/components/hal/esp32s3/include -I/Users/niteris/esp/esp-idf/components/hal/include -I/Users/niteris/esp/esp-idf/components/hal/platform_port/include -I/Users/niteris/esp/esp-idf/components/esp_rom/include -I/Users/niteris/esp/esp-idf/components/esp_rom/include/esp32s3 -I/Users/niteris/esp/esp-idf/components/esp_rom/esp32s3 -I/Users/niteris/esp/esp-idf/components/esp_common/include -I/Users/niteris/esp/esp-idf/components/esp_system/include -I/Users/niteris/esp/esp-idf/components/esp_system/port/soc -I/Users/niteris/esp/esp-idf/components/esp_system/port/include/private -I/Users/niteris/esp/esp-idf/components/xtensa/include -I/Users/niteris/esp/esp-idf/components/xtensa/esp32s3/include -I/Users/niteris/esp/esp-idf/components/lwip/include -I/Users/niteris/esp/esp-idf/components/lwip/include/apps -I/Users/niteris/esp/esp-idf/components/lwip/include/apps/sntp -I/Users/niteris/esp/esp-idf/components/lwip/lwip/src/include -I/Users/niteris/esp/esp-idf/components/lwip/port/esp32/include -I/Users/niteris/esp/esp-idf/components/lwip/port/esp32/include/arch -I/Users/niteris/esp/esp-idf/components/json/cJSON -I/Users/niteris/dev/ESP32-TUX/components/LovyanGFX/src -I/Users/niteris/esp/esp-idf/components/nvs_flash/include -I/Users/niteris/esp/esp-idf/components/spi_flash/include -I/Users/niteris/esp/esp-idf/components/esp_partition/include -I/Users/niteris/esp/esp-idf/components/efuse/include -I/Users/niteris/esp/esp-idf/components/efuse/esp32s3/include -I/Users/niteris/esp/esp-idf/components/esp_lcd/include -I/Users/niteris/esp/esp-idf/components/esp_lcd/interface -I/Users/niteris/esp/esp-idf/components/driver/include -I/Users/niteris/esp/esp-idf/components/driver/deprecated -I/Users/niteris/esp/esp-idf/components/driver/esp32s3/include -I/Users/niteris/esp/esp-idf/components/esp_pm/include -I/Users/niteris/esp/esp-idf/components/esp_ringbuf/include -I/Users/niteris/esp/esp-idf/components/esp_timer/include -I/Users/niteris/dev/ESP32-TUX/components/lvgl -I/Users/niteris/dev/ESP32-TUX/components/lvgl/src -I/Users/niteris/dev/ESP32-TUX/components -I/Users/niteris/esp/esp-idf/components/fatfs/diskio -I/Users/niteris/esp/esp-idf/components/fatfs/vfs -I/Users/niteris/esp/esp-idf/components/fatfs/src -I/Users/niteris/esp/esp-idf/components/wear_levelling/include -I/Users/niteris/esp/esp-idf/components/sdmmc/include -I/Users/niteris/dev/ESP32-TUX/managed_components/espressif__fmt/fmt/include -I/Users/niteris/dev/ESP32-TUX/components/SettingsConfig/include -I/Users/niteris/dev/ESP32-TUX/components/OpenWeatherMap/include -I/Users/niteris/esp/esp-idf/components/app_update/include -I/Users/niteris/esp/esp-idf/components/bootloader_support/include -I/Users/niteris/esp/esp-idf/components/bootloader_support/bootloader_flash/include -I/Users/niteris/esp/esp-idf/components/esp_app_format/include -I/Users/niteris/dev/ESP32-TUX/components/ota -I/Users/niteris/esp/esp-idf/components/esp_https_ota/include -I/Users/niteris/esp/esp-idf/components/esp_http_client/include -I/Users/niteris/esp/esp-idf/components/esp_event/include -I/Users/niteris/esp/esp-idf/components/esp_wifi/include -I/Users/niteris/esp/esp-idf/components/esp_phy/include -I/Users/niteris/esp/esp-idf/components/esp_phy/esp32s3/include -I/Users/niteris/esp/esp-idf/components/esp_netif/include -I/Users/niteris/esp/esp-idf/components/wifi_provisioning/include -I/Users/niteris/esp/esp-idf/components/protocomm/include/common -I/Users/niteris/esp/esp-idf/components/protocomm/include/security -I/Users/niteris/esp/esp-idf/components/protocomm/include/transports -I/Users/niteris/esp/esp-idf/components/spiffs/include -mlongcalls  -fdiagnostics-color=always -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=deprecated-declarations -Wextra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -DLV_CONF_INCLUDE_SIMPLE=1 -I../main -Wno-missing-field-initializers -Wno-unused-variable -Wno-unused-function -Wno-pointer-arith -Og -fmacro-prefix-map=/Users/niteris/dev/ESP32-TUX=. -fmacro-prefix-map=/Users/niteris/esp/esp-idf=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -DconfigENABLE_FREERTOS_DEBUG_OCDAWARE=1 -fdiagnostics-color=always -std=gnu++20 -fno-exceptions -fno-rtti -MD -MT esp-idf/main/CMakeFiles/__idf_main.dir/main.cpp.obj -MF esp-idf/main/CMakeFiles/__idf_main.dir/main.cpp.obj.d -o esp-idf/main/CMakeFiles/__idf_main.dir/main.cpp.obj -c /Users/niteris/dev/ESP32-TUX/main/main.cpp
In file included from /Users/niteris/dev/ESP32-TUX/main/main.hpp:62,
                 from /Users/niteris/dev/ESP32-TUX/main/main.cpp:26:
/Users/niteris/dev/ESP32-TUX/main/devices/conf_WT32SCO1.h: In constructor 'LGFX::LGFX()':
/Users/niteris/dev/ESP32-TUX/main/devices/conf_WT32SCO1.h:49:21: error: 'GPIO_NUM_22' was not declared in this scope; did you mean 'GPIO_NUM_42'?
   49 | #define TFT_RST     GPIO_NUM_22
      |                     ^~~~~~~~~~~
/Users/niteris/dev/ESP32-TUX/main/devices/conf_WT32SCO1.h:49:21: note: in definition of macro 'TFT_RST'
   49 | #define TFT_RST     GPIO_NUM_22
      |                     ^~~~~~~~~~~
In file included from /Users/niteris/dev/ESP32-TUX/components/lvgl/src/core/lv_obj.h:140,
                 from /Users/niteris/dev/ESP32-TUX/components/lvgl/lvgl.h:35,
                 from /Users/niteris/dev/ESP32-TUX/main/helpers/helper_display.hpp:27,
                 from /Users/niteris/dev/ESP32-TUX/main/main.hpp:78,
                 from /Users/niteris/dev/ESP32-TUX/main/main.cpp:26:
/Users/niteris/dev/ESP32-TUX/components/lvgl/src/core/lv_obj_style.h: In function 'void lv_obj_remove_style_all(_lv_obj_t*)':
/Users/niteris/dev/ESP32-TUX/components/lvgl/src/core/lv_obj_style.h:94:48: warning: bitwise operation between different enumeration types '<unnamed enum>' and '<unnamed enum>' is deprecated [-Wdeprecated-enum-enum-conversion]
   94 |     lv_obj_remove_style(obj, NULL, LV_PART_ANY | LV_STATE_ANY);
      |                                    ~~~~~~~~~~~~^~~~~~~~~~~~~~
In file included from /Users/niteris/dev/ESP32-TUX/main/main.hpp:92,
                 from /Users/niteris/dev/ESP32-TUX/main/main.cpp:26:
/Users/niteris/dev/ESP32-TUX/main/gui.hpp: In function 'void create_footer(lv_obj_t*)':
/Users/niteris/dev/ESP32-TUX/main/gui.hpp:401:63: warning: bitwise operation between different enumeration types '<unnamed enum>' and '<unnamed enum>' is deprecated [-Wdeprecated-enum-enum-conversion]
  401 |     lv_obj_add_style(footerButtons, &style_glow,LV_PART_ITEMS | LV_BTNMATRIX_CTRL_CHECKED); // selected
      |                                                 ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
ninja: build stopped: subcommand failed.
ninja failed with exit code 1, output of the command is in the /Users/niteris/dev/ESP32-TUX/build/log/idf_py_stderr_output_42757 and /Users/niteris/dev/ESP32-TUX/build/log/idf_py_stdout_output_42757

Wt32-SC01 Flash size error

Hi
I uncommented my device in main.hpp (WT32-SC01) which comes with a 4 MB flash.
I did changed it in the menuconfig but now i am getting the error that partition table occupies 6.6 mb and i need to change the FLASH size in menu config.

With 8MB flash size config, the project builds but the device is constantly rebooting and thats what i see in serial monitor.

`
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:7000
load:0x40078000,len:15452
ho 0 tail 12 room 4
load:0x40080400,len:3840
entry 0x4008064c
I (29) boot: ESP-IDF v5.0-dirty 2nd stage bootloader
I (29) boot: compile time 12:19:56
I (29) boot: chip revision: v1.0
I (32) boot_comm: chip revision: 1, min. bootloader chip revision: 0
I (39) boot.esp32: SPI Speed : 40MHz
I (44) boot.esp32: SPI Mode : DIO
I (49) boot.esp32: SPI Flash Size : 8MB
I (53) boot: Enabling RNG early entropy source...
I (59) boot: Partition Table:
I (62) boot: ## Label Usage Type ST Offset Length
I (69) boot: 0 nvs WiFi data 01 02 00009000 00004000
I (77) boot: 1 otadata OTA data 01 00 0000d000 00002000
I (84) boot: 2 phy_init RF data 01 01 0000f000 00001000
I (92) boot: 3 factory factory app 00 00 00010000 00200000
I (99) boot: 4 ota_0 OTA app 00 10 00210000 00200000
I (107) boot: 5 ota_1 OTA app 00 11 00410000 00200000
I (114) boot: 6 storage Unknown data 01 82 00610000 00080000
I (122) boot: End of partition table
I (126) boot: Defaulting to factory image
I (131) boot_comm: chip revision: 1, min. application chip revision: 0
I (138) esp_image: segment 0: paddr=00010020 vaddr=3f400020 size=a598ch (678284) map
I (392) esp_image: segment 1: paddr=000b59b4 vaddr=3ffb0000 size=04750h ( 18256) load
I (399) esp_image: segment 2: paddr=000ba10c vaddr=40080000 size=05f0ch ( 24332) load
I (409) esp_image: segment 3: paddr=000c0020 vaddr=400d0020 size=135568h (1267048) map
I (867) esp_image: segment 4: paddr=001f5590 vaddr=40085f0c size=17218h ( 94744) load
I (906) esp_image: segment 5: paddr=0020c7b0 vaddr=50000000 size=00010h ( 16) load
I (921) boot: Loaded app from partition at offset 0x10000
I (921) boot: Disabling RNG early entropy source...
I (933) quad_psram: This chip is ESP32-D0WD
I (935) esp_psram: Found 8MB PSRAM device
I (935) esp_psram: Speed: 40MHz
I (937) esp_psram: PSRAM initialized, cache is in low/high (2-core) mode.
W (945) esp_psram: Virtual address not enough for PSRAM, map as much as we can. 4MB is mapped
I (954) cpu_start: Pro cpu up.
I (957) cpu_start: Starting app cpu, entry point is 0x40081778
I (950) cpu_start: App cpu up.
To exit from IDF monitor please use "Ctrl+]". Alternatively, you can use Ctrl-T Ctrl-X to exit.
To exit from IDF monitor please use "Ctrl+]". Alternatively, you can use Ctrl-T Ctrl-X to exit.
To exit from IDF monitor please use "Ctrl+]". Alternatively, you can use Ctrl-T Ctrl-X to exit.
To exit from IDF monitor please use "Ctrl+]". Alternatively, you can use Ctrl-T Ctrl-X to exit.
I (1866) esp_psram: SPI SRAM memory test OK
I (1875) cpu_start: Pro cpu start user code
I (1875) cpu_start: cpu freq: 160000000 Hz
I (1875) cpu_start: Application information:
I (1878) cpu_start: Project name: ESP32-TUX
I (1883) cpu_start: App version: 0.16.0
I (1888) cpu_start: Compile time: Dec 13 2022 12:18:37
I (1894) cpu_start: ELF file SHA256: 14be0ff8a7d34d0e...
ELF file not found. You need to build & flash the project before running 'monitor', and the binary on the device must match the one in the build directory exactly.
I (1900) cpu_start: ESP-IDF: v5.0-dirty
I (1906) heap_init: Initializing. RAM available for dynamic allocation:
I (1913) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM
I (1919) heap_init: At 3FFC6B08 len 000194F8 (101 KiB): DRAM
I (1925) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (1932) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (1938) heap_init: At 4009D124 len 00002EDC (11 KiB): IRAM
I (1945) esp_psram: Adding pool of 4096K of PSRAM memory to heap allocator
I (1954) spi_flash: detected chip: generic
I (1957) spi_flash: flash io: dio
E (1961) spi_flash: Detected size(4096k) smaller than the size in the binary image header(8192k). Probe failed.

assert failed: do_core_init startup.c:339 (flash_ret == ESP_OK)

Backtrace: 0x4008245d:0x3ffe3a80 0x4008fe3d:0x3ffe3aa0 0x400978c1:0x3ffe3ac0 0x400d2bbb:0x3ffe3be0 0x400d2d7b:0x3ffe3c00 0x400819f2:0x3ffe3c40 0x40079611:0x3ffe3c90 |<-CORRUPTED

ELF file SHA256: 14be0ff8a7d34d0e
ELF file not found. You need to build & flash the project before running 'monitor', and the binary on the device must match the one in the build directory exactly.
`

ESP-IDF compiler error - need docs improvements.

I'm using Windows and also mac. There are huge gabs in the readme on what to do and it seems that it was written for a veteran of ESP32 developers.

Right now I'm having trouble with the following steps:

idf.py set-target esp32s3
idf.py build
idf.py flash monitor

Which produce errors like the following:

ZacharysMBPM16:ESP32-TUX niteris$ idf.py flash monitor
Executing action: flash
Running cmake in directory /Users/niteris/dev/ESP32-TUX/build
Executing "cmake -G Ninja -DPYTHON_DEPS_CHECKED=1 -DPYTHON=/Users/niteris/.espressif/python_env/idf5.1_py3.10_env/bin/python -DESP_PLATFORM=1 -DCCACHE_ENABLE=0 /Users/niteris/dev/ESP32-TUX"...
-- IDF_TARGET not set, using default target: esp32
-- Found Git: /usr/bin/git (found version "2.37.1 (Apple Git-137.1)") 
-- Component directory /Users/niteris/dev/ESP32-TUX/components/ConfigBase does not contain a CMakeLists.txt file. No component will be added
-- The C compiler identification is GNU 11.2.0
-- The CXX compiler identification is GNU 11.2.0
-- The ASM compiler identification is GNU
-- Found assembler: /Users/niteris/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /Users/niteris/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Users/niteris/.espressif/tools/xtensa-esp32-elf/esp-2022r1-11.2.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Building ESP-IDF components for target esp32
Processing 2 dependencies:
[1/2] espressif/fmt (9.1.0)
[2/2] idf (5.1.0)
CMake Error at /Users/niteris/esp/esp-idf/tools/cmake/build.cmake:542 (message):
  ERROR:

          Some components (espressif/fmt) in the "managed_components" directory were modified         on the disk since the last run of the CMake. Content of this directory is managed automatically.

  

          If you want to keep the changes, you can move the directory with the component to the "components"         directory of your project.

  

          I.E. for "espressif__fmt" run:
          mv /Users/niteris/dev/ESP32-TUX/managed_components/espressif__fmt /Users/niteris/dev/ESP32-TUX/components/espressif__fmt

  

          Or, if you want to discard the changes remove the ".component_hash" file from the component's directory.

  

          I.E. for "espressif__fmt" run:
          rm /Users/niteris/dev/ESP32-TUX/managed_components/espressif__fmt/.component_hash
          

Call Stack (most recent call first):
  /Users/niteris/esp/esp-idf/tools/cmake/project.cmake:447 (idf_build_process)
  CMakeLists.txt:28 (project)


-- Configuring incomplete, errors occurred!
See also "/Users/niteris/dev/ESP32-TUX/build/CMakeFiles/CMakeOutput.log".
cmake failed with exit code 1, output of the command is in the /Users/niteris/dev/ESP32-TUX/build/log/idf_py_stderr_output_39505 and /Users/niteris/dev/ESP32-TUX/build/log/idf_py_stdout_output_39505

Build error for SC-01 plus

Worked fine for SC-01, but for plus I'm getting:

Wdeprecated-enum-enum-conversion]
94 | lv_obj_remove_style(obj, NULL, LV_PART_ANY | LV_STATE_ANY);
| ~~~~~~~~~~~~^~~~~~~~~~~~~~
In file included from /home/maciek/d/ESP32-TUX/main/main.hpp:65:
/home/maciek/d/ESP32-TUX/main/helpers/helper_storage.hpp: In function 'bool init_sdspi()':
/home/maciek/d/ESP32-TUX/main/devices/conf_WT32SCO1-Plus.h:37:23: error: 'GPIO_NUM_41' was not declared in this scope; did you mean 'GPIO_NUM_4'?
37 | #define SD_CS GPIO_NUM_41
| ^~~~~~~~~~~
/home/maciek/d/ESP32-TUX/main/devices/conf_WT32SCO1-Plus.h:37:23: note: in definition of macro 'SD_CS'
37 | #define SD_CS GPIO_NUM_41
| ^~~~~~~~~~~
/home/maciek/d/ESP32-TUX/main/devices/conf_WT32SCO1-Plus.h:35:23: error: 'GPIO_NUM_40' was not declared in this scope; did you mean 'GPIO_NUM_4'?
35 | #define SD_MOSI GPIO_NUM_40
| ^~~~~~~~~~~
/home/maciek/d/ESP32-TUX/main/devices/conf_WT32SCO1-Plus.h:35:23: note: in definition of macro 'SD_MOSI'
35 | #define SD_MOSI GPIO_NUM_40
| ^~~~~~~~~~~
In file included from /home/maciek/d/ESP32-TUX/main/main.hpp:92:

Building with:

idf.py --version
ESP-IDF v5.1.3-dirty

Unknown CMake command "spiffs_create_partition_image"

I'm unable to build with "idf.py -B build-esp32s3 set-target esp32s3 build" I'm getting the following error :

CMake Error at main/CMakeLists.txt:17 (spiffs_create_partition_image):
  Unknown CMake command "spiffs_create_partition_image".


-- Configuring incomplete, errors occurred!

Error of Makerfabs 16Bit Parallel 3.5" ILI9488 - ESP32-S3

Problem

  1. Lots of error showed in serial monitor.
  2. After printing out the errors, the device will reset itself.
  3. The display does not turn on.

Situation

I am using the ESP32-S3 Parallel TFT with Touch 3.5'' ILI9488.

First, I modified the device selection in main.hpp to include only my device, and I did not modify anything else.

/********************DEVICE SELECTION ******************/
/* Enable one of the devices from below (shift to bsp selection later) */
// #include "conf_WT32SCO1.h"              // WT32-SC01 (ESP32)

// WT32-SC01 Plus (ESP32-S3 + 8Bit Parellel) with SD Card, Audio support
// #include "conf_WT32SCO1-Plus.h"         

// Makerfabs ESP32S335D (ESP32-S3 + 16Bit Parellel) with SD Card, Audio support
#include "conf_Makerfabs_S3_PTFT.h"     

// Makerfabs ESP32S335D (ESP32-S3 + SPI) with SD Card, Audio support
// #include "conf_Makerfabs_S3_STFT.h"
/********************************************************/

Then, I followed Flash section of README.md

Flash log

Serial port /dev/cu.usbserial-026DC87A
Connecting....
Chip is ESP32-S3 (revision v0.1)
Features: WiFi, BLE
Crystal is 40MHz
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Flash will be erased from 0x00000000 to 0x00005fff...
...
Compressed 20832 bytes to 13280...
Writing at 0x00000000... (100 %)
Wrote 20832 bytes (13280 compressed) at 0x00000000 in 0.6 seconds (effective 261.8 kbit/s)...
Hash of data verified.
Compressed 2002688 bytes to 1127053...
Writing at 0x00010000... (1 %)
... 
...
...
Writing at 0x0064e59a... (100 %)
Wrote 524288 bytes (169669 compressed) at 0x00610000 in 5.7 seconds (effective 739.3 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
Done

After flashing, I could see LOGs from the board through serial monitor, which indicates the flash is successful.

However, there are the following three problems:

  1. Lots of error showed in serial monitor.
  2. After printing out the errors, the device will reset itself.
  3. The display does not turn on.

Error log

--- idf_monitor on /dev/cu.usbserial-026DC87A 115200 ---
--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
5fch (673276)ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x1 (POWERON),boot:0xb (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fce3810,len:0x1684
load:0x403c9700,len:0xbe8
load:0x403cc700,len:0x2e98
entry 0x403c9904
I (25) boot: ESP-IDF v5.0-dirty 2nd stage bootloader
I (25) boot: compile time 12:10:24
I (25) boot: chip revision: v0.1
I (27) boot_comm: chip revision: 1, min. bootloader chip revision: 0
I (34) boot.esp32s3: Boot SPI Speed : 80MHz
I (39) boot.esp32s3: SPI Mode       : DIO
I (43) boot.esp32s3: SPI Flash Size : 8MB
I (48) boot: Enabling RNG early entropy source...
I (54) boot: Partition Table:
I (57) boot: ## Label            Usage          Type ST Offset   Length
I (64) boot:  0 nvs              WiFi data        01 02 00009000 00004000
I (72) boot:  1 otadata          OTA data         01 00 0000d000 00002000
I (79) boot:  2 phy_init         RF data          01 01 0000f000 00001000
I (87) boot:  3 factory          factory app      00 00 00010000 00200000
I (94) boot:  4 ota_0            OTA app          00 10 00210000 00200000
I (102) boot:  5 ota_1            OTA app          00 11 00410000 00200000
I (109) boot:  6 storage          Unknown data     01 82 00610000 00080000
I (117) boot: End of partition table
I (121) boot: Defaulting to factory image
I (126) boot_comm: chip revision: 1, min. application chip revision: 0
I (133) esp_image: segment 0: paddr=00010020 vaddr=3c130020 size=a45fch (673276) map
I (262) esp_image: segment 1: paddr=000b4624 vaddr=3fc99100 size=04c5ch ( 19548) load
I (267) esp_image: segment 2: paddr=000b9288 vaddr=40374000 size=06d90h ( 28048) load
I (274) esp_image: segment 3: paddr=000c0020 vaddr=42000020 size=12ac0ch (1223692) map
I (496) esp_image: segment 4: paddr=001eac34 vaddr=4037ad90 size=0e290h ( 58000) load
I (509) esp_image: segment 5: paddr=001f8ecc vaddr=50000000 size=00010h (    16) load
I (518) boot: Loaded app from partition at offset 0x10000
I (519) boot: Disabling RNG early entropy source...
I (530) esp_psram: Found 2MB PSRAM device
I (531) esp_psram: Speed: 40MHz
I (531) cpu_start: Pro cpu up.
I (531) cpu_start: Starting app cpu, entry point is 0x403755e0
0x403755e0: call_start_cpu1 at /Users/hays/esp/esp-idf/components/esp_system/port/cpu_start.c:142

I (0) cpu_start: App cpu up.
I (957) esp_psram: SPI SRAM memory test OK
I (966) cpu_start: Pro cpu start user code
I (966) cpu_start: cpu freq: 160000000 Hz
I (966) cpu_start: Application information:
I (969) cpu_start: Project name:     ESP32-TUX
I (974) cpu_start: App version:      0.16.0
I (979) cpu_start: Compile time:     Dec  5 2022 12:10:09
I (985) cpu_start: ELF file SHA256:  959501bcf6829e98...
I (991) cpu_start: ESP-IDF:          v5.0-dirty
I (996) heap_init: Initializing. RAM available for dynamic allocation:
I (1004) heap_init: At 3FCB0070 len 000396A0 (229 KiB): D/IRAM
I (1010) heap_init: At 3FCE9710 len 00005724 (21 KiB): STACK/DRAM
I (1017) heap_init: At 3FCF0000 len 00008000 (32 KiB): DRAM
I (1023) heap_init: At 600FE010 len 00001FF0 (7 KiB): RTCRAM
I (1030) esp_psram: Adding pool of 2048K of PSRAM memory to heap allocator
I (1038) spi_flash: detected chip: gd
I (1042) spi_flash: flash io: dio
W (1045) spi_flash: Detected size(16384k) larger than the size in the binary image header(8192k). Using the size in the binary image header.
I (1061) sleep: Configure to isolate all GPIO pins in sleep state
I (1066) sleep: Enable automatic switching of GPIO sleep configuration
I (1073) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (1083) esp_psram: Reserving pool of 32K of internal memory for DMA/internal allocations
E (1093) ESP32-TUX: 
Firmware Ver : 0.16.0
Project Name : ESP32-TUX
IDF Version  : v5.0-dirty

Controller   : esp32s3 Rev.1
CPU Cores    : Dual Core
CPU Speed    : 160Mhz
Flash Size   : 8MB [external]
PSRAM Size   : 2MB [external]
Connectivity : 2.4GHz WIFI/BLE

I (1133) ESP32-TUX: Initializing SPIFFS
I (1183) ESP32-TUX: Partition size: total: 474641, used: 282375
I (1183) ESP32-TUX: Initializing SD card
I (1183) ESP32-TUX: Initializing SPI BUS
I (1183) ESP32-TUX: Mounting filesystem
I (1193) gpio: GPIO[1]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 
I (1203) sdspi_transaction: cmd=52, R1 response: command not supported
I (1243) sdspi_transaction: cmd=5, R1 response: command not supported
I (1263) ESP32-TUX: Filesystem mounted
Name: SD16G
Type: SDHC/SDXC
Speed: 20 MHz
Size: 15112MB
CSD: ver=2, sector_size=512, capacity=30949376 read_bl_len=9
SSR: bus_width=1

assert failed: lcd_ll_select_clk_src /IDF/components/hal/esp32s3/include/hal/lcd_ll.h:67 (false)


Backtrace: 0x403761aa:0x3fcf3c80 0x4037ea39:0x3fcf3ca0 0x40385ea9:0x3fcf3cc0 0x42028a02:0x3fcf3de0 0x42028e85:0x3fcf3e20 0x42027f2c:0x3fcf3e50 0x421214a7:0x3fcf3ef0 0x42025a3b:0x3fcf3f10 0x4202424e:0x3fcf3f30 0x4200ef7f:0x3fcf3f50 0x4212a90b:0x3fcf3fb0 0x40381c71:0x3fcf3fe0
0x403761aa: panic_abort at /Users/hays/esp/esp-idf/components/esp_system/panic.c:412

0x4037ea39: esp_system_abort at /Users/hays/esp/esp-idf/components/esp_system/esp_system.c:135

0x40385ea9: __assert_func at /Users/hays/esp/esp-idf/components/newlib/assert.c:78

0x42028a02: lcd_ll_select_clk_src at /Users/hays/esp/esp-idf/components/hal/esp32s3/include/hal/lcd_ll.h:67
 (inlined by) lcd_i80_select_periph_clock at /Users/hays/esp/esp-idf/components/esp_lcd/src/esp_lcd_panel_io_i80.c:475

0x42028e85: esp_lcd_new_i80_bus at /Users/hays/esp/esp-idf/components/esp_lcd/src/esp_lcd_panel_io_i80.c:152 (discriminator 2)

0x42027f2c: lgfx::v1::Bus_Parallel16::init() at /Users/hays/Github/ESP32-TUX/components/LovyanGFX/src/lgfx/v1/platforms/esp32s3/Bus_Parallel16.cpp:96

0x421214a7: lgfx::v1::Panel_Device::init(bool) at /Users/hays/Github/ESP32-TUX/components/LovyanGFX/src/lgfx/v1/panel/Panel_Device.cpp:60

0x42025a3b: lgfx::v1::Panel_LCD::init(bool) at /Users/hays/Github/ESP32-TUX/components/LovyanGFX/src/lgfx/v1/panel/Panel_LCD.cpp:31

0x4202424e: lgfx::v1::LGFX_Device::init_impl(bool, bool) at /Users/hays/Github/ESP32-TUX/components/LovyanGFX/src/lgfx/v1/LGFXBase.cpp:3099

0x4200ef7f: lgfx::v1::LGFX_Device::init() at /Users/hays/Github/ESP32-TUX/components/LovyanGFX/src/lgfx/v1/LGFXBase.hpp:1138
 (inlined by) app_main at /Users/hays/Github/ESP32-TUX/main/main.cpp:267

0x4212a90b: main_task at /Users/hays/esp/esp-idf/components/freertos/FreeRTOS-Kernel/portable/port_common.c:131 (discriminator 2)

0x40381c71: vPortTaskWrapper at /Users/hays/esp/esp-idf/components/freertos/FreeRTOS-Kernel/portable/xtensa/port.c:151

ELF file SHA256: 959501bcf6829e98

Rebooting...
ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x3 (RTC_SW_SYS_RST),boot:0xb (SPI_FAST_FLASH_BOOT)
Saved PC:0x40375ad1
0x40375ad1: esp_restart_noos_dig at /Users/hays/esp/esp-idf/components/esp_system/esp_system.c:46 (discriminator 1)

At the last 5 lines, the device starts to reboot and the Error-Reboot loop continues on and on.

error: member 'lgfx::v1::pixelcopy_t::<anonymous>' is used uninitialized

Hello!

Following https://asciinema.org/a/549415, with the latest esp-idf 5.1:

components/LovyanGFX/src/lgfx/v1/misc/pixelcopy.cpp:39:25: error: member 'lgfx::v1::pixelcopy_t::' is used uninitialized [-Werror=uninitialized]
39 | , src_mask ( (1 << src_bits) - 1 )
| ^~~~~~~~
components/LovyanGFX/src/lgfx/v1/misc/pixelcopy.cpp:40:25: error: member 'lgfx::v1::pixelcopy_t::' is used uninitialized [-Werror=uninitialized]
40 | , dst_mask ( (1 << dst_bits) - 1 )
| ^~~~~~~~
cc1plus.exe: some warnings being treated as errors

dtill issies - why is this so difficult

Espressif/frameworks/esp-idf-v5.1.1-3/components/xtensa
-- --------------Compile Info------------
-- IDF_PATH = C:/Espressif/frameworks/esp-idf-v5.1.1-3
-- IDF_TARGET = esp32s3
-- PROJECT_NAME = ESP32-TUX
-- PROJECT_DIR = E:/__dev/ESP32-TUX
-- BUILD_DIR = E:/__dev/ESP32-TUX/build
-- SDKCONFIG = E:/__dev/ESP32-TUX/sdkconfig
-- SDKCONFIG_DEFAULTS = E:/__dev/ESP32-TUX/sdkconfig.defaults
-- CONFIG_LV_CONF_SKIP =


-- CMAKE_SOURCE_DIR = E:/__dev/ESP32-TUX
-- CMAKE_BINARY_DIR = E:/__dev/ESP32-TUX/build
-- ---------By Sukesh Ashok Kumar---------
-- Configuring done
-- Generating done
-- Build files have been written to: E:/__dev/ESP32-TUX/build

E:/__dev/ESP32-TUX/components/LovyanGFX/src/lgfx/v1/platforms/esp32/common.cpp: In function 'void lgfx::v1::i2c::i2c_set_cmd(i2c_dev_t*, uint8_t, uint8_t, uint8_t)':
E:/__dev/ESP32-TUX/components/LovyanGFX/src/lgfx/v1/platforms/esp32/common.cpp:643:14: error: 'struct i2c_dev_t' has no member named 'comd0'; did you mean 'comd'?
643 | (&dev->comd0)[index].val = cmd_val;
| ^~~~~
| comd
ninja: build stopped: subcommand failed.
ninja failed with exit code 1, output of the command is in the E:__dev\ESP32-TUX\build\log\idf_py_stderr_output_31640 and E:__dev\ESP32-TUX\build\log\idf_py_stdout_output_31640
PS E:__dev\ESP32-TUX>

#if defined (CONFIG_IDF_TARGET_ESP32S3)
(&dev->comd0)[index].val = cmd_val;
#else
dev->command[index].val = cmd_val;
#endif
}

WT32-SC01 Plus 8Bit Parallel 3.5 Firmware Download

Hello! I tried to download from two different machines, with Windows and Linux, in one: WT32-SC01 Plus 8Bit Parallel 3.5" ST7796UI - ESP32-S3.
Is it possible that these boards come with some factory lock for firmware download?
The message says to hold the BOOT button when clicking on INSTALL.
It turns out that the only button available on the board is the RESET button, and this disconnects the serial port every time it is clicked.
Do I need to make any Jumper on the board to allow the upload?

20230418-141438-001

Difference between Arduino & ESP-IDF

Hi,
do you plan to make template like this one with arduino framework ?

Graphics & Touch Driver : LovyanGFX
UI / Widgets : LVGL 8.x
Framework : arduino

just received my new WT32-SC01 Plus, and don't know how to get started for now as I prefer to stick to arduino framework for now

Include Path errors

Hello.
I´m using Visual Studio Code.
The code is building fine, but I see errors as shown bellow.
What´s the directory I need to set in INCLUDE PATH for C++ Extension, or is there any configuration to fix these errors?

20230516-221047-001
20230516-221125-002

Undefined reference to demo in app_main

Hello, and thanks for the repository. Going through the code I tried to comment and compile the code without the user interface to understand the most of it.

While all my tests for LovyanGFX worked with no issues, I cannot yet make a simple test for lvgl within the project.

  1. I imported the necessary files such as "lv_demos.h" or "lv_examples.h" to 'main.hpp', 'main. cpp' and 'helper_display.hpp'.
  2. I modified the lv_conf.h from the main and just in case from the components/lvgl to allow the use and build of examples and demos.

I'm testing using:

WT32-SC013.5 and SC01 Plus 3.5.
IDF v5.1.2

Is there any reason why I can't test lvgl demos and examples in this project?

Thanks in advance

MQTT implementation

I'm trying to implement the MQTT protocol inside an ESP32-TUX instance.

  1. I enabled MQTT configuration inside idf.py menuconfig.

  2. main.hpp I put the include of the local file for the mqtt library downloaded from Github (https://github.com/espressif/esp-mqtt) because that way it didn't give error of include not found.

  3. main.hpp include mqtt_client.h file. I initialized the functions: mqtt_event_handler() and mqtt_app_start().
    20230517-192556-003

  4. main.cpp I placed the respective functions from the previous step and initialized mqtt_app_start().
    20230517-192517-002

  5. It happens that when compiling it gives an error inside the mqtt_client.h library, as shown in the image below.
    20230517-192407-001

I wonder if anyone has an idea of how to make it work or an example of working MQTT (connect, subscribe, publish) code.

Thanks!

Hardware display rotation

Hi. I want to set default orientation as landscape.
I tried to change conf_WT32SCO1.h (width and height in defines) and helper_display.hpp (lcd.setRotation(3 instead of 2) ). Orientation changes but display width crops by 320 pixels.
I using WT32-SC01.
How can i change display orientation?

and compile issue

E:__test\ESP32-TUX\components\ota\ota.h:4:10:�[m�[K �[01;31m�[Kfatal error: �[m�[K../main/events/tux_events.hpp: No such file or directory
4 | #include �[01;31m�[K"../main/events/tux_events.hpp"�[m�[K
| �[01;31m�[K^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Snag_2bc3f7d

Compilation error : pixelcopy.cpp:39:25: error: member 'lgfx::v1::pixelcopy_t::' is used uninitialized [-Werror=uninitialized]

Discussed in #36

_[793/1183] Building CXX object esp-idf/LovyanGFX/CMakeFiles/__idf_LovyanGFX.dir/src/lgfx/v1/misc/pixelcopy.cpp.objFAILED: esp-idf/LovyanGFX/CMakeFiles/_idf_LovyanGFX.dir/src/lgfx/v1/misc/pixelcopy.cpp.obj

and end with:

_/home/jan/ESP32-TUX/components/LovyanGFX/src/lgfx/v1/misc/pixelcopy.cpp: In constructor 'lgfx::v1::pixelcopy_t::pixelcopy_t(const void*, lgfx::v1::color_depth_t, lgfx::v1::color_depth_t, bool, const void*, uint32_t)':
/home/jan/ESP32-TUX/components/LovyanGFX/src/lgfx/v1/misc/pixelcopy.cpp:39:25: error: member 'lgfx::v1::pixelcopy_t::' is used uninitialized [-Werror=uninitialized]
39 | , src_mask ( (1 << src_bits) - 1 )
| ^~~~~~~~
/home/jan/ESP32-TUX/components/LovyanGFX/src/lgfx/v1/misc/pixelcopy.cpp:40:25: error: member 'lgfx::v1::pixelcopy_t::' is used uninitialized [-Werror=uninitialized]
40 | , dst_mask ( (1 << dst_bits) - 1 )
| ^~~~~~~~
cc1plus: some warnings being treated as errors
[810/1183] Building CXX object esp-idf/LovyanGFX/CMakeFiles/_idf_LovyanGFX.dir/src/lgfx/v1/LGFXBase.cpp.objninja: build stopped: subcommand failed.
ninja failed with exit code 1, output of the command is in the /home/jan/ESP32-TUX/build/log/idf_py_stderr_output_6114 and /home/jan/ESP32-TUX/build/log/idf_py_stdout_output_6114

WT32-SC01 - Only shows a white screen

I've gotten the demo to work great for a WT32-SC01+ board. However, when I follow the following video step by step, I end up with just a white screen on the display after flashing:
https://asciinema.org/a/549415

I have set the board up in "idf.py menuconfig" AS A "Wireless-Tag WT32-SC01" ... see the screen scrape from idf.py menuconfig:

(Top) → ESP32-TUX Configuration → Device Config
                                                                                             Espressif IoT Development Framework Configuration
    <choice TUX_DEVICE_SELECTED> Select the device (Wireless-Tag WT32-SC01 - SPI - 4MB Flash)  --->
(partitions/partition-4MB.csv) <PARTITION_TABLE_CUSTOM_FILENAME> Custom Partition CSV filename
    <choice ESPTOOLPY_FLASHSIZE> Flash size (4 MB)  --->
[*] <WALLPAPER_IMAGE> Enable wallpaper image

I'll also note that I compiled ESP32-TUX with the following version of IDF:
ESP-IDF v5.1-dev-2633-g8464186e67

Build fails

Hi and thanks for this great project!
This is related to #25 which has been closed, but as 5.1 is release and I get the same error with 5.0.3 when running idf.py build 😕

C:/code/iot/ESP32-TUX/components/LovyanGFX/src/lgfx/v1/misc/pixelcopy.cpp: In constructor 'lgfx::v1::pixelcopy_t::pixelcopy_t(const void*, lgfx::v1::color_depth_t, lgfx::v1::color_depth_t, bool, const void*, uint32_t)':
C:/code/iot/ESP32-TUX/components/LovyanGFX/src/lgfx/v1/misc/pixelcopy.cpp:39:25: error: member 'lgfx::v1::pixelcopy_t::' is used uninitialized [-Werror=uninitialized]
39 | , src_mask ( (1 << src_bits) - 1 )
| ^~~~~~~~
C:/code/iot/ESP32-TUX/components/LovyanGFX/src/lgfx/v1/misc/pixelcopy.cpp:40:25: error: member 'lgfx::v1::pixelcopy_t::' is used uninitialized [-Werror=uninitialized]
40 | , dst_mask ( (1 << dst_bits) - 1 )

Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.