forked from xiaozhi/xiaozhi-esp32
Adjust dependency components for ESP32-P4 (#623)
* Adjust dependency components for ESP32-P4 * Add backlight control and touch control to Waveshare ESP32-P4-NANO * Increase the amount of saved information for Waveshare ESP32-P4-NANO
This commit is contained in:
@@ -17,13 +17,13 @@
|
|||||||
#include <wifi_station.h>
|
#include <wifi_station.h>
|
||||||
#include <esp_log.h>
|
#include <esp_log.h>
|
||||||
#include <driver/i2c_master.h>
|
#include <driver/i2c_master.h>
|
||||||
|
#include <esp_lvgl_port.h>
|
||||||
|
#include "esp_lcd_touch_gt911.h"
|
||||||
#define TAG "WaveshareEsp32p4nano"
|
#define TAG "WaveshareEsp32p4nano"
|
||||||
|
|
||||||
LV_FONT_DECLARE(font_puhui_20_4);
|
LV_FONT_DECLARE(font_puhui_20_4);
|
||||||
LV_FONT_DECLARE(font_awesome_20_4);
|
LV_FONT_DECLARE(font_awesome_20_4);
|
||||||
|
|
||||||
// TODO: Backlight control and i2c drive conflict, has not been resolved
|
|
||||||
class CustomBacklight : public Backlight {
|
class CustomBacklight : public Backlight {
|
||||||
public:
|
public:
|
||||||
CustomBacklight(i2c_master_bus_handle_t i2c_handle)
|
CustomBacklight(i2c_master_bus_handle_t i2c_handle)
|
||||||
@@ -70,7 +70,7 @@ private:
|
|||||||
i2c_master_bus_handle_t codec_i2c_bus_;
|
i2c_master_bus_handle_t codec_i2c_bus_;
|
||||||
Button boot_button_;
|
Button boot_button_;
|
||||||
LcdDisplay *display__;
|
LcdDisplay *display__;
|
||||||
// CustomBacklight *backlight_;
|
CustomBacklight *backlight_;
|
||||||
|
|
||||||
void InitializeCodecI2c() {
|
void InitializeCodecI2c() {
|
||||||
// Initialize I2C peripheral
|
// Initialize I2C peripheral
|
||||||
@@ -167,10 +167,40 @@ private:
|
|||||||
.icon_font = &font_awesome_20_4,
|
.icon_font = &font_awesome_20_4,
|
||||||
.emoji_font = font_emoji_64_init(),
|
.emoji_font = font_emoji_64_init(),
|
||||||
});
|
});
|
||||||
// backlight_ = new CustomBacklight(codec_i2c_bus_);
|
backlight_ = new CustomBacklight(codec_i2c_bus_);
|
||||||
// backlight_->RestoreBrightness();
|
backlight_->RestoreBrightness();
|
||||||
|
}
|
||||||
|
void InitializeTouch()
|
||||||
|
{
|
||||||
|
esp_lcd_touch_handle_t tp;
|
||||||
|
esp_lcd_touch_config_t tp_cfg = {
|
||||||
|
.x_max = DISPLAY_WIDTH,
|
||||||
|
.y_max = DISPLAY_HEIGHT,
|
||||||
|
.rst_gpio_num = GPIO_NUM_NC,
|
||||||
|
.int_gpio_num = GPIO_NUM_NC,
|
||||||
|
.levels = {
|
||||||
|
.reset = 0,
|
||||||
|
.interrupt = 0,
|
||||||
|
},
|
||||||
|
.flags = {
|
||||||
|
.swap_xy = 0,
|
||||||
|
.mirror_x = 0,
|
||||||
|
.mirror_y = 0,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
esp_lcd_panel_io_handle_t tp_io_handle = NULL;
|
||||||
|
esp_lcd_panel_io_i2c_config_t tp_io_config = ESP_LCD_TOUCH_IO_I2C_GT911_CONFIG();
|
||||||
|
tp_io_config.scl_speed_hz = 100 * 1000;
|
||||||
|
ESP_ERROR_CHECK(esp_lcd_new_panel_io_i2c(codec_i2c_bus_, &tp_io_config, &tp_io_handle));
|
||||||
|
ESP_LOGI(TAG, "Initialize touch controller");
|
||||||
|
ESP_ERROR_CHECK(esp_lcd_touch_new_i2c_gt911(tp_io_handle, &tp_cfg, &tp));
|
||||||
|
const lvgl_port_touch_cfg_t touch_cfg = {
|
||||||
|
.disp = lv_display_get_default(),
|
||||||
|
.handle = tp,
|
||||||
|
};
|
||||||
|
lvgl_port_add_touch(&touch_cfg);
|
||||||
|
ESP_LOGI(TAG, "Touch panel initialized successfully");
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitializeButtons() {
|
void InitializeButtons() {
|
||||||
boot_button_.OnClick([this]() {
|
boot_button_.OnClick([this]() {
|
||||||
auto& app = Application::GetInstance();
|
auto& app = Application::GetInstance();
|
||||||
@@ -184,7 +214,7 @@ private:
|
|||||||
void InitializeIot() {
|
void InitializeIot() {
|
||||||
auto &thing_manager = iot::ThingManager::GetInstance();
|
auto &thing_manager = iot::ThingManager::GetInstance();
|
||||||
thing_manager.AddThing(iot::CreateThing("Speaker"));
|
thing_manager.AddThing(iot::CreateThing("Speaker"));
|
||||||
// thing_manager.AddThing(iot::CreateThing("Screen"));
|
thing_manager.AddThing(iot::CreateThing("Screen"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@@ -193,6 +223,7 @@ public:
|
|||||||
InitializeCodecI2c();
|
InitializeCodecI2c();
|
||||||
InitializeIot();
|
InitializeIot();
|
||||||
InitializeLCD();
|
InitializeLCD();
|
||||||
|
InitializeTouch();
|
||||||
InitializeButtons();
|
InitializeButtons();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -207,9 +238,9 @@ public:
|
|||||||
return display__;
|
return display__;
|
||||||
}
|
}
|
||||||
|
|
||||||
// virtual Backlight *GetBacklight() override {
|
virtual Backlight *GetBacklight() override {
|
||||||
// return backlight_;
|
return backlight_;
|
||||||
// }
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
DECLARE_BOARD(WaveshareEsp32p4nano);
|
DECLARE_BOARD(WaveshareEsp32p4nano);
|
||||||
|
|||||||
@@ -435,8 +435,11 @@ void LcdDisplay::SetupUI() {
|
|||||||
lv_obj_center(low_battery_label_);
|
lv_obj_center(low_battery_label_);
|
||||||
lv_obj_add_flag(low_battery_popup_, LV_OBJ_FLAG_HIDDEN);
|
lv_obj_add_flag(low_battery_popup_, LV_OBJ_FLAG_HIDDEN);
|
||||||
}
|
}
|
||||||
|
#if CONFIG_IDF_TARGET_ESP32P4
|
||||||
|
#define MAX_MESSAGES 40
|
||||||
|
#else
|
||||||
#define MAX_MESSAGES 20
|
#define MAX_MESSAGES 20
|
||||||
|
#endif
|
||||||
void LcdDisplay::SetChatMessage(const char* role, const char* content) {
|
void LcdDisplay::SetChatMessage(const char* role, const char* content) {
|
||||||
DisplayLockGuard lock(this);
|
DisplayLockGuard lock(this);
|
||||||
if (content_ == nullptr) {
|
if (content_ == nullptr) {
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ dependencies:
|
|||||||
espressif/button: "~4.1.3"
|
espressif/button: "~4.1.3"
|
||||||
espressif/knob: "^1.0.0"
|
espressif/knob: "^1.0.0"
|
||||||
espressif/esp_lcd_touch_ft5x06: "~1.0.7"
|
espressif/esp_lcd_touch_ft5x06: "~1.0.7"
|
||||||
|
espressif/esp_lcd_touch_gt911: "^1"
|
||||||
lvgl/lvgl: "~9.2.2"
|
lvgl/lvgl: "~9.2.2"
|
||||||
esp_lvgl_port: "~2.6.0"
|
esp_lvgl_port: "~2.6.0"
|
||||||
espressif/esp_io_expander_tca95xx_16bit: "^2.0.0"
|
espressif/esp_io_expander_tca95xx_16bit: "^2.0.0"
|
||||||
@@ -26,6 +27,15 @@ dependencies:
|
|||||||
version: "^1.0.0"
|
version: "^1.0.0"
|
||||||
rules:
|
rules:
|
||||||
- if: 'idf_version >= "5.4.0"'
|
- if: 'idf_version >= "5.4.0"'
|
||||||
|
|
||||||
|
waveshare/esp_lcd_jd9365_10_1:
|
||||||
|
version: "*"
|
||||||
|
rules:
|
||||||
|
- if: "target in [esp32p4]"
|
||||||
|
espressif/esp_wifi_remote:
|
||||||
|
version: "*"
|
||||||
|
rules:
|
||||||
|
- if: "target in [esp32p4]"
|
||||||
## Required IDF version
|
## Required IDF version
|
||||||
idf:
|
idf:
|
||||||
version: ">=5.3"
|
version: ">=5.3"
|
||||||
|
|||||||
Reference in New Issue
Block a user