Skip to content

Commit 5956079

Browse files
authored
Merge branch '78:main' into waveshare-s3-epaper-1.54
2 parents 4a23367 + ce72f19 commit 5956079

File tree

15 files changed

+1095
-277
lines changed

15 files changed

+1095
-277
lines changed

main/CMakeLists.txt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,16 @@ elseif(CONFIG_BOARD_TYPE_WAVESHARE_C6_TOUCH_AMOLED_1_43)
283283
set(BUILTIN_TEXT_FONT font_puhui_basic_30_4)
284284
set(BUILTIN_ICON_FONT font_awesome_30_4)
285285
set(DEFAULT_EMOJI_COLLECTION twemoji_64)
286+
elseif(CONFIG_BOARD_TYPE_WAVESHARE_C6_TOUCH_AMOLED_1_32)
287+
set(BOARD_TYPE "waveshare-c6-touch-amoled-1.32")
288+
set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
289+
set(BUILTIN_ICON_FONT font_awesome_20_4)
290+
set(DEFAULT_EMOJI_COLLECTION twemoji_32)
291+
elseif(CONFIG_BOARD_TYPE_WAVESHARE_S3_TOUCH_AMOLED_1_32)
292+
set(BOARD_TYPE "waveshare-s3-touch-amoled-1.32")
293+
set(BUILTIN_TEXT_FONT font_puhui_basic_20_4)
294+
set(BUILTIN_ICON_FONT font_awesome_20_4)
295+
set(DEFAULT_EMOJI_COLLECTION twemoji_32)
286296
elseif(CONFIG_BOARD_TYPE_WAVESHARE_P4_NANO)
287297
set(BOARD_TYPE "waveshare-p4-nano")
288298
set(BUILTIN_TEXT_FONT font_puhui_basic_30_4)

main/Kconfig.projbuild

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,12 @@ choice BOARD_TYPE
270270
config BOARD_TYPE_WAVESHARE_C6_TOUCH_AMOLED_1_43
271271
bool "Waveshare ESP32-C6-Touch-AMOLOED-1.43"
272272
depends on IDF_TARGET_ESP32C6
273+
config BOARD_TYPE_WAVESHARE_C6_TOUCH_AMOLED_1_32
274+
bool "Waveshare ESP32-C6-Touch-AMOLOED-1.32"
275+
depends on IDF_TARGET_ESP32C6
276+
config BOARD_TYPE_WAVESHARE_S3_TOUCH_AMOLED_1_32
277+
bool "Waveshare ESP32-S3-Touch-AMOLOED-1.32"
278+
depends on IDF_TARGET_ESP32S3
273279
config BOARD_TYPE_WAVESHARE_S3_TOUCH_LCD_3_49
274280
bool "Waveshare ESP32-S3-Touch-LCD-3.49"
275281
depends on IDF_TARGET_ESP32S3

main/boards/otto-robot/otto_controller.cc

Lines changed: 127 additions & 269 deletions
Large diffs are not rendered by default.

main/boards/otto-robot/otto_emoji_display.cc

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@ OttoEmojiDisplay::OttoEmojiDisplay(esp_lcd_panel_io_handle_t panel_io, esp_lcd_p
1515
: SpiLcdDisplay(panel_io, panel, width, height, offset_x, offset_y, mirror_x, mirror_y, swap_xy) {
1616
InitializeOttoEmojis();
1717
SetupChatLabel();
18+
SetupPreviewImage();
19+
}
20+
21+
void OttoEmojiDisplay::SetupPreviewImage() {
22+
DisplayLockGuard lock(this);
23+
lv_obj_set_size(preview_image_, width_ , height_ );
1824
}
1925

2026
void OttoEmojiDisplay::InitializeOttoEmojis() {
@@ -135,4 +141,42 @@ void OttoEmojiDisplay::SetStatus(const char* status) {
135141
lv_obj_clear_flag(status_label_, LV_OBJ_FLAG_HIDDEN);
136142
lv_obj_clear_flag(network_label_, LV_OBJ_FLAG_HIDDEN);
137143
lv_obj_clear_flag(battery_label_, LV_OBJ_FLAG_HIDDEN);
144+
}
145+
146+
void OttoEmojiDisplay::SetPreviewImage(std::unique_ptr<LvglImage> image) {
147+
DisplayLockGuard lock(this);
148+
if (preview_image_ == nullptr) {
149+
ESP_LOGE(TAG, "Preview image is not initialized");
150+
return;
151+
}
152+
153+
if (image == nullptr) {
154+
esp_timer_stop(preview_timer_);
155+
lv_obj_remove_flag(emoji_box_, LV_OBJ_FLAG_HIDDEN);
156+
lv_obj_add_flag(preview_image_, LV_OBJ_FLAG_HIDDEN);
157+
preview_image_cached_.reset();
158+
if (gif_controller_) {
159+
gif_controller_->Start();
160+
}
161+
return;
162+
}
163+
164+
preview_image_cached_ = std::move(image);
165+
auto img_dsc = preview_image_cached_->image_dsc();
166+
// 设置图片源并显示预览图片
167+
lv_image_set_src(preview_image_, img_dsc);
168+
lv_image_set_rotation(preview_image_, -900);
169+
if (img_dsc->header.w > 0 && img_dsc->header.h > 0) {
170+
// zoom factor 1.0
171+
lv_image_set_scale(preview_image_, 256 * width_ / img_dsc->header.w);
172+
}
173+
174+
// Hide emoji_box_
175+
if (gif_controller_) {
176+
gif_controller_->Stop();
177+
}
178+
lv_obj_add_flag(emoji_box_, LV_OBJ_FLAG_HIDDEN);
179+
lv_obj_remove_flag(preview_image_, LV_OBJ_FLAG_HIDDEN);
180+
esp_timer_stop(preview_timer_);
181+
ESP_ERROR_CHECK(esp_timer_start_once(preview_timer_, PREVIEW_IMAGE_DURATION_MS * 1000));
138182
}

main/boards/otto-robot/otto_emoji_display.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@ class OttoEmojiDisplay : public SpiLcdDisplay {
1515

1616
virtual ~OttoEmojiDisplay() = default;
1717
virtual void SetStatus(const char* status) override;
18+
virtual void SetPreviewImage(std::unique_ptr<LvglImage> image) override;
1819

1920
private:
2021
void InitializeOttoEmojis();
2122
void SetupChatLabel();
23+
void SetupPreviewImage();
2224
};
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# 产品链接
2+
3+
[微雪电子 ESP32-C6-Touch-AMOLED-1.32](https://www.waveshare.net/shop/ESP32-C6-Touch-AMOLED-1.32.htm)
4+
5+
# 编译配置命令
6+
7+
**克隆工程**
8+
9+
```bash
10+
git clone https://github.com/78/xiaozhi-esp32.git
11+
```
12+
13+
**进入工程**
14+
15+
```bash
16+
cd xiaozhi-esp32
17+
```
18+
19+
**配置编译目标为 ESP32C6**
20+
21+
```bash
22+
idf.py set-target esp32c6
23+
```
24+
25+
**打开 menuconfig**
26+
27+
```bash
28+
idf.py menuconfig
29+
```
30+
31+
**选择板子**
32+
33+
```bash
34+
Xiaozhi Assistant -> Board Type -> Waveshare ESP32-C6-Touch-AMOLED-1.32
35+
```
36+
37+
**编译**
38+
39+
```ba
40+
idf.py build
41+
```
42+
43+
**下载并打开串口终端**
44+
45+
```bash
46+
idf.py build flash monitor
47+
```
48+
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#ifndef _BOARD_CONFIG_H_
2+
#define _BOARD_CONFIG_H_
3+
4+
#include <driver/gpio.h>
5+
6+
#define AUDIO_INPUT_SAMPLE_RATE 24000
7+
#define AUDIO_OUTPUT_SAMPLE_RATE 24000
8+
9+
#define AUDIO_I2S_GPIO_MCLK GPIO_NUM_15
10+
#define AUDIO_I2S_GPIO_WS GPIO_NUM_5
11+
#define AUDIO_I2S_GPIO_BCLK GPIO_NUM_3
12+
#define AUDIO_I2S_GPIO_DIN GPIO_NUM_4
13+
#define AUDIO_I2S_GPIO_DOUT GPIO_NUM_6
14+
15+
#define AUDIO_CODEC_PA_PIN GPIO_NUM_23
16+
#define AUDIO_CODEC_I2C_SDA_PIN GPIO_NUM_8
17+
#define AUDIO_CODEC_I2C_SCL_PIN GPIO_NUM_7
18+
#define AUDIO_CODEC_ES8311_ADDR ES8311_CODEC_DEFAULT_ADDR
19+
20+
#define BOOT_BUTTON_GPIO GPIO_NUM_9
21+
22+
23+
#define LCD_CS GPIO_NUM_22
24+
#define LCD_PCLK GPIO_NUM_18
25+
#define LCD_D0 GPIO_NUM_19
26+
#define LCD_D1 GPIO_NUM_20
27+
#define LCD_D2 GPIO_NUM_10
28+
#define LCD_D3 GPIO_NUM_11
29+
#define LCD_RST GPIO_NUM_21
30+
31+
#define EXAMPLE_LCD_H_RES 466
32+
#define EXAMPLE_LCD_V_RES 466
33+
34+
#define DISPLAY_MIRROR_X false
35+
#define DISPLAY_MIRROR_Y false
36+
#define DISPLAY_SWAP_XY false
37+
38+
#define DISPLAY_OFFSET_X 0
39+
#define DISPLAY_OFFSET_Y 0
40+
41+
#define SYS_POWER_IO_PIN GPIO_NUM_2
42+
#define PWR_KEY_GPIO GPIO_NUM_1
43+
44+
#endif // _BOARD_CONFIG_H_
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"target": "esp32c6",
3+
"builds": [
4+
{
5+
"name": "waveshare-c6-touch-amoled-1.32",
6+
"sdkconfig_append": [
7+
"CONFIG_USE_ESP_WAKE_WORD=y"
8+
]
9+
}
10+
]
11+
}

0 commit comments

Comments
 (0)