forked from xiaozhi/xiaozhi-esp32
增加设备ESP32-CGC (#201)
* Update Kconfig.projbuild 增加设备ESP32-CGC * Update CMakeLists.txt 新增设备EPS32-CGC * Update idf_component.yml 添加ST7735显示驱动 * Update lamp.cc 与ESP32的屏幕GPIO引脚冲突修改 * Add files via upload 新增一个引脚控制风扇 * Update wifi_board.cc 编译提示错误没有这个函数,暂时注释掉 //wifi_ap.SetLanguage(Lang::CODE); * Create README.md 创建新设备ESP32-CGC * Add files via upload 创建新设备ESP32-CGC * Add files via upload ESP32-CGC设备引脚图 * Update esp32_cgc_board.cc * Update idf_component.yml * Delete main/iot/things/newfan.cc * Update lamp.cc * Update wifi_board.cc * Update idf_component.yml * Delete main/boards/esp32-cgc/esp32_cgc_board.cc * Delete main/boards/esp32-cgc/config.h * Delete main/boards/esp32-cgc/README.md * Add files via upload 添加设备ESP32-CGC * Update Kconfig.projbuild 添加ESP32-CGC多屏选择支持,增加一个ST7735-128x128分辨率 * Update config.json * Delete docs/ESP32-CGC-PINMAP.png * Update README.md * Update README.md * Update esp32_cgc_board.cc * Update config.h * Update esp32_cgc_board.cc 跟随主线修改 * Create README.md 加入了ESP32 CGC 144开发板 * Add files via upload 加入ESP32 CGC 144开发板 * Update esp32_cgc_144_board.cc * Update config.h * Update Kconfig.projbuild 增加ESP32 CGC 144 * Update CMakeLists.txt 增加ESP32 CGC 144 * Update config.json * Update config.h * Update esp32_cgc_144_board.cc 修改屏幕控制参数 * Add files via upload * Update Kconfig.projbuild 删除重复定义 * Update esp32_cgc_144_board.cc 修改音量控制,增加语音配网指令 * Add files via upload * Delete main/boards/esp32-cgc-144/esp32_cgc_144_lcd_display.h * Delete main/boards/esp32-cgc-144/esp32_cgc_144_lcd_display.cc * Update board_control.cc 修改背光控制逻辑 * Update esp32_cgc_144_board.cc 跟随主代码更新 * Update config.h 删除不使用的引脚定义 * Update esp32_cgc_board.cc 跟随主代码更新,去除多余引脚 * Update esp32_cgc_board.cc * Update board_control.cc * Update config.h * Update esp32_cgc_144_board.cc * Update Kconfig.projbuild * Update CMakeLists.txt * Update CMakeLists.txt 先移除144开发板 * Update Kconfig.projbuild 先移除144开发板 * Delete main/boards/esp32-cgc-144 directory 先移除144开发板 * Update esp32_cgc_board.cc --------- Co-authored-by: Xiaoxia <terrence@tenclass.com>
This commit is contained in:
@@ -120,6 +120,8 @@ elseif(CONFIG_BOARD_TYPE_XINGZHI_Cube_1_54TFT_ML307)
|
|||||||
set(BOARD_TYPE "xingzhi-cube-1.54tft-ml307")
|
set(BOARD_TYPE "xingzhi-cube-1.54tft-ml307")
|
||||||
elseif(CONFIG_BOARD_TYPE_SENSECAP_WATCHER)
|
elseif(CONFIG_BOARD_TYPE_SENSECAP_WATCHER)
|
||||||
set(BOARD_TYPE "sensecap-watcher")
|
set(BOARD_TYPE "sensecap-watcher")
|
||||||
|
elseif(CONFIG_BOARD_TYPE_ESP32_CGC)
|
||||||
|
set(BOARD_TYPE "esp32-cgc")
|
||||||
endif()
|
endif()
|
||||||
file(GLOB BOARD_SOURCES
|
file(GLOB BOARD_SOURCES
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/boards/${BOARD_TYPE}/*.cc
|
${CMAKE_CURRENT_SOURCE_DIR}/boards/${BOARD_TYPE}/*.cc
|
||||||
|
|||||||
@@ -62,6 +62,8 @@ choice BOARD_TYPE
|
|||||||
bool "面包板新版接线(ML307 AT)"
|
bool "面包板新版接线(ML307 AT)"
|
||||||
config BOARD_TYPE_BREAD_COMPACT_ESP32
|
config BOARD_TYPE_BREAD_COMPACT_ESP32
|
||||||
bool "面包板 ESP32 DevKit"
|
bool "面包板 ESP32 DevKit"
|
||||||
|
config BOARD_TYPE_ESP32_CGC
|
||||||
|
bool "ESP32 CGC"
|
||||||
config BOARD_TYPE_ESP_BOX_3
|
config BOARD_TYPE_ESP_BOX_3
|
||||||
bool "ESP BOX 3"
|
bool "ESP BOX 3"
|
||||||
config BOARD_TYPE_ESP_BOX
|
config BOARD_TYPE_ESP_BOX
|
||||||
@@ -157,7 +159,7 @@ choice DISPLAY_OLED_TYPE
|
|||||||
endchoice
|
endchoice
|
||||||
|
|
||||||
choice DISPLAY_LCD_TYPE
|
choice DISPLAY_LCD_TYPE
|
||||||
depends on BOARD_TYPE_BREAD_COMPACT_WIFI_LCD
|
depends on BOARD_TYPE_BREAD_COMPACT_WIFI_LCD || BOARD_TYPE_ESP32_CGC
|
||||||
prompt "LCD Type"
|
prompt "LCD Type"
|
||||||
default LCD_ST7789_240X320
|
default LCD_ST7789_240X320
|
||||||
help
|
help
|
||||||
|
|||||||
46
main/boards/esp32-cgc/README.md
Normal file
46
main/boards/esp32-cgc/README.md
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# 主板开源地址:
|
||||||
|
[https://oshwhub.com/wdmomo/esp32-xiaozhi-kidpcb](https://oshwhub.com/wdmomo/esp32-xiaozhi-kidpcb)
|
||||||
|
|
||||||
|
# 编译配置命令
|
||||||
|
|
||||||
|
**配置编译目标为 ESP32:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
idf.py set-target esp32
|
||||||
|
```
|
||||||
|
|
||||||
|
**打开 menuconfig:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
idf.py menuconfig
|
||||||
|
```
|
||||||
|
|
||||||
|
**选择板子:**
|
||||||
|
|
||||||
|
```
|
||||||
|
Xiaozhi Assistant -> Board Type -> ESP32 CGC
|
||||||
|
```
|
||||||
|
|
||||||
|
**选择屏幕类型:**
|
||||||
|
|
||||||
|
```
|
||||||
|
Xiaozhi Assistant -> LCD Type -> "ST7735, 分辨率128*128"
|
||||||
|
```
|
||||||
|
|
||||||
|
**修改 flash 大小:**
|
||||||
|
|
||||||
|
```
|
||||||
|
Serial flasher config -> Flash size -> 4 MB
|
||||||
|
```
|
||||||
|
|
||||||
|
**修改分区表:**
|
||||||
|
|
||||||
|
```
|
||||||
|
Partition Table -> Custom partition CSV file -> partitions_4M.csv
|
||||||
|
```
|
||||||
|
|
||||||
|
**编译:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
idf.py build
|
||||||
|
```
|
||||||
268
main/boards/esp32-cgc/config.h
Normal file
268
main/boards/esp32-cgc/config.h
Normal file
@@ -0,0 +1,268 @@
|
|||||||
|
#ifndef _BOARD_CONFIG_H_
|
||||||
|
#define _BOARD_CONFIG_H_
|
||||||
|
|
||||||
|
#include <driver/gpio.h>
|
||||||
|
|
||||||
|
#define AUDIO_INPUT_SAMPLE_RATE 16000
|
||||||
|
#define AUDIO_OUTPUT_SAMPLE_RATE 24000
|
||||||
|
|
||||||
|
// 如果使用 Duplex I2S 模式,请注释下面一行
|
||||||
|
#define AUDIO_I2S_METHOD_SIMPLEX
|
||||||
|
|
||||||
|
#ifdef AUDIO_I2S_METHOD_SIMPLEX
|
||||||
|
|
||||||
|
#define AUDIO_I2S_MIC_GPIO_WS GPIO_NUM_25
|
||||||
|
#define AUDIO_I2S_MIC_GPIO_SCK GPIO_NUM_26
|
||||||
|
#define AUDIO_I2S_MIC_GPIO_DIN GPIO_NUM_32
|
||||||
|
|
||||||
|
#define AUDIO_I2S_SPK_GPIO_DOUT GPIO_NUM_33
|
||||||
|
#define AUDIO_I2S_SPK_GPIO_BCLK GPIO_NUM_14
|
||||||
|
#define AUDIO_I2S_SPK_GPIO_LRCK GPIO_NUM_27
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#define AUDIO_I2S_GPIO_WS GPIO_NUM_4
|
||||||
|
#define AUDIO_I2S_GPIO_BCLK GPIO_NUM_5
|
||||||
|
#define AUDIO_I2S_GPIO_DIN GPIO_NUM_6
|
||||||
|
#define AUDIO_I2S_GPIO_DOUT GPIO_NUM_7
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define BOOT_BUTTON_GPIO GPIO_NUM_0
|
||||||
|
#define ASR_BUTTON_GPIO GPIO_NUM_13
|
||||||
|
|
||||||
|
#define DISPLAY_SDA_PIN GPIO_NUM_NC
|
||||||
|
#define DISPLAY_SCL_PIN GPIO_NUM_NC
|
||||||
|
|
||||||
|
#define DISPLAY_BACKLIGHT_PIN GPIO_NUM_4
|
||||||
|
#define DISPLAY_SCLK_PIN GPIO_NUM_18
|
||||||
|
#define DISPLAY_MOSI_PIN GPIO_NUM_23
|
||||||
|
#define DISPLAY_CS_PIN GPIO_NUM_5
|
||||||
|
#define DISPLAY_DC_PIN GPIO_NUM_2
|
||||||
|
#define DISPLAY_RESET_PIN GPIO_NUM_NC
|
||||||
|
|
||||||
|
#define DISPLAY_SPI_SCLK_HZ (20 * 1000 * 1000)
|
||||||
|
|
||||||
|
#ifdef CONFIG_LCD_ST7789_240X320
|
||||||
|
#define LCD_TYPE_ST7789_SERIAL
|
||||||
|
#define DISPLAY_WIDTH 240
|
||||||
|
#define DISPLAY_HEIGHT 320
|
||||||
|
#define DISPLAY_MIRROR_X false
|
||||||
|
#define DISPLAY_MIRROR_Y false
|
||||||
|
#define DISPLAY_SWAP_XY false
|
||||||
|
#define DISPLAY_INVERT_COLOR true
|
||||||
|
#define DISPLAY_RGB_ORDER LCD_RGB_ELEMENT_ORDER_BGR
|
||||||
|
#define DISPLAY_OFFSET_X 0
|
||||||
|
#define DISPLAY_OFFSET_Y 0
|
||||||
|
#define DISPLAY_BACKLIGHT_OUTPUT_INVERT false
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_LCD_ST7789_240X320_NO_IPS
|
||||||
|
#define LCD_TYPE_ST7789_SERIAL
|
||||||
|
#define DISPLAY_WIDTH 240
|
||||||
|
#define DISPLAY_HEIGHT 320
|
||||||
|
#define DISPLAY_MIRROR_X false
|
||||||
|
#define DISPLAY_MIRROR_Y false
|
||||||
|
#define DISPLAY_SWAP_XY false
|
||||||
|
#define DISPLAY_INVERT_COLOR false
|
||||||
|
#define DISPLAY_RGB_ORDER LCD_RGB_ELEMENT_ORDER_BGR
|
||||||
|
#define DISPLAY_OFFSET_X 0
|
||||||
|
#define DISPLAY_OFFSET_Y 0
|
||||||
|
#define DISPLAY_BACKLIGHT_OUTPUT_INVERT false
|
||||||
|
#define DISPLAY_SPI_MODE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_LCD_ST7789_170X320
|
||||||
|
#define LCD_TYPE_ST7789_SERIAL
|
||||||
|
#define DISPLAY_WIDTH 170
|
||||||
|
#define DISPLAY_HEIGHT 320
|
||||||
|
#define DISPLAY_MIRROR_X false
|
||||||
|
#define DISPLAY_MIRROR_Y false
|
||||||
|
#define DISPLAY_SWAP_XY false
|
||||||
|
#define DISPLAY_INVERT_COLOR true
|
||||||
|
#define DISPLAY_RGB_ORDER LCD_RGB_ELEMENT_ORDER_BGR
|
||||||
|
#define DISPLAY_OFFSET_X 35
|
||||||
|
#define DISPLAY_OFFSET_Y 0
|
||||||
|
#define DISPLAY_BACKLIGHT_OUTPUT_INVERT false
|
||||||
|
#define DISPLAY_SPI_MODE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_LCD_ST7789_172X320
|
||||||
|
#define LCD_TYPE_ST7789_SERIAL
|
||||||
|
#define DISPLAY_WIDTH 172
|
||||||
|
#define DISPLAY_HEIGHT 320
|
||||||
|
#define DISPLAY_MIRROR_X false
|
||||||
|
#define DISPLAY_MIRROR_Y false
|
||||||
|
#define DISPLAY_SWAP_XY false
|
||||||
|
#define DISPLAY_INVERT_COLOR true
|
||||||
|
#define DISPLAY_RGB_ORDER LCD_RGB_ELEMENT_ORDER_BGR
|
||||||
|
#define DISPLAY_OFFSET_X 34
|
||||||
|
#define DISPLAY_OFFSET_Y 0
|
||||||
|
#define DISPLAY_BACKLIGHT_OUTPUT_INVERT false
|
||||||
|
#define DISPLAY_SPI_MODE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_LCD_ST7789_240X280
|
||||||
|
#define LCD_TYPE_ST7789_SERIAL
|
||||||
|
#define DISPLAY_WIDTH 240
|
||||||
|
#define DISPLAY_HEIGHT 280
|
||||||
|
#define DISPLAY_MIRROR_X false
|
||||||
|
#define DISPLAY_MIRROR_Y false
|
||||||
|
#define DISPLAY_SWAP_XY false
|
||||||
|
#define DISPLAY_INVERT_COLOR true
|
||||||
|
#define DISPLAY_RGB_ORDER LCD_RGB_ELEMENT_ORDER_BGR
|
||||||
|
#define DISPLAY_OFFSET_X 0
|
||||||
|
#define DISPLAY_OFFSET_Y 20
|
||||||
|
#define DISPLAY_BACKLIGHT_OUTPUT_INVERT false
|
||||||
|
#define DISPLAY_SPI_MODE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_LCD_ST7789_240X240
|
||||||
|
#define LCD_TYPE_ST7789_SERIAL
|
||||||
|
#define DISPLAY_WIDTH 240
|
||||||
|
#define DISPLAY_HEIGHT 240
|
||||||
|
#define DISPLAY_MIRROR_X false
|
||||||
|
#define DISPLAY_MIRROR_Y false
|
||||||
|
#define DISPLAY_SWAP_XY false
|
||||||
|
#define DISPLAY_INVERT_COLOR true
|
||||||
|
#define DISPLAY_RGB_ORDER LCD_RGB_ELEMENT_ORDER_BGR
|
||||||
|
#define DISPLAY_OFFSET_X 0
|
||||||
|
#define DISPLAY_OFFSET_Y 0
|
||||||
|
#define DISPLAY_BACKLIGHT_OUTPUT_INVERT false
|
||||||
|
#define DISPLAY_SPI_MODE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_LCD_ST7789_240X240_7PIN
|
||||||
|
#define LCD_TYPE_ST7789_SERIAL
|
||||||
|
#define DISPLAY_WIDTH 240
|
||||||
|
#define DISPLAY_HEIGHT 240
|
||||||
|
#define DISPLAY_MIRROR_X false
|
||||||
|
#define DISPLAY_MIRROR_Y false
|
||||||
|
#define DISPLAY_SWAP_XY false
|
||||||
|
#define DISPLAY_INVERT_COLOR true
|
||||||
|
#define DISPLAY_RGB_ORDER LCD_RGB_ELEMENT_ORDER_BGR
|
||||||
|
#define DISPLAY_OFFSET_X 0
|
||||||
|
#define DISPLAY_OFFSET_Y 0
|
||||||
|
#define DISPLAY_BACKLIGHT_OUTPUT_INVERT false
|
||||||
|
#define DISPLAY_SPI_MODE 2
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_LCD_ST7789_240X135
|
||||||
|
#define LCD_TYPE_ST7789_SERIAL
|
||||||
|
#define DISPLAY_WIDTH 240
|
||||||
|
#define DISPLAY_HEIGHT 135
|
||||||
|
#define DISPLAY_MIRROR_X true
|
||||||
|
#define DISPLAY_MIRROR_Y false
|
||||||
|
#define DISPLAY_SWAP_XY true
|
||||||
|
#define DISPLAY_INVERT_COLOR true
|
||||||
|
#define DISPLAY_RGB_ORDER LCD_RGB_ELEMENT_ORDER_BGR
|
||||||
|
#define DISPLAY_OFFSET_X 40
|
||||||
|
#define DISPLAY_OFFSET_Y 53
|
||||||
|
#define DISPLAY_BACKLIGHT_OUTPUT_INVERT false
|
||||||
|
#define DISPLAY_SPI_MODE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_LCD_ST7735_128X160
|
||||||
|
#define LCD_TYPE_ST7789_SERIAL
|
||||||
|
#define DISPLAY_WIDTH 128
|
||||||
|
#define DISPLAY_HEIGHT 160
|
||||||
|
#define DISPLAY_MIRROR_X true
|
||||||
|
#define DISPLAY_MIRROR_Y true
|
||||||
|
#define DISPLAY_SWAP_XY false
|
||||||
|
#define DISPLAY_INVERT_COLOR false
|
||||||
|
#define DISPLAY_RGB_ORDER LCD_RGB_ELEMENT_ORDER_BGR
|
||||||
|
#define DISPLAY_OFFSET_X 0
|
||||||
|
#define DISPLAY_OFFSET_Y 0
|
||||||
|
#define DISPLAY_BACKLIGHT_OUTPUT_INVERT false
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_LCD_ST7735_128X128
|
||||||
|
#define LCD_TYPE_ST7789_SERIAL
|
||||||
|
#define DISPLAY_WIDTH 128
|
||||||
|
#define DISPLAY_HEIGHT 128
|
||||||
|
#define DISPLAY_MIRROR_X true
|
||||||
|
#define DISPLAY_MIRROR_Y true
|
||||||
|
#define DISPLAY_SWAP_XY false
|
||||||
|
#define DISPLAY_INVERT_COLOR false
|
||||||
|
#define DISPLAY_RGB_ORDER LCD_RGB_ELEMENT_ORDER_BGR
|
||||||
|
#define DISPLAY_OFFSET_X 2
|
||||||
|
#define DISPLAY_OFFSET_Y 3
|
||||||
|
#define DISPLAY_BACKLIGHT_OUTPUT_INVERT false
|
||||||
|
#define DISPLAY_SPI_MODE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_LCD_ST7796_320X480
|
||||||
|
#define LCD_TYPE_ST7789_SERIAL
|
||||||
|
#define DISPLAY_WIDTH 320
|
||||||
|
#define DISPLAY_HEIGHT 480
|
||||||
|
#define DISPLAY_MIRROR_X false
|
||||||
|
#define DISPLAY_MIRROR_Y false
|
||||||
|
#define DISPLAY_SWAP_XY false
|
||||||
|
#define DISPLAY_INVERT_COLOR true
|
||||||
|
#define DISPLAY_RGB_ORDER LCD_RGB_ELEMENT_ORDER_BGR
|
||||||
|
#define DISPLAY_OFFSET_X 0
|
||||||
|
#define DISPLAY_OFFSET_Y 0
|
||||||
|
#define DISPLAY_BACKLIGHT_OUTPUT_INVERT false
|
||||||
|
#define DISPLAY_SPI_MODE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_LCD_ILI9341_240X320
|
||||||
|
#define LCD_TYPE_ILI9341_SERIAL
|
||||||
|
#define DISPLAY_WIDTH 240
|
||||||
|
#define DISPLAY_HEIGHT 320
|
||||||
|
#define DISPLAY_MIRROR_X true
|
||||||
|
#define DISPLAY_MIRROR_Y false
|
||||||
|
#define DISPLAY_SWAP_XY false
|
||||||
|
#define DISPLAY_INVERT_COLOR true
|
||||||
|
#define DISPLAY_RGB_ORDER LCD_RGB_ELEMENT_ORDER_BGR
|
||||||
|
#define DISPLAY_OFFSET_X 0
|
||||||
|
#define DISPLAY_OFFSET_Y 0
|
||||||
|
#define DISPLAY_BACKLIGHT_OUTPUT_INVERT false
|
||||||
|
#define DISPLAY_SPI_MODE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_LCD_ILI9341_240X320_NO_IPS
|
||||||
|
#define LCD_TYPE_ILI9341_SERIAL
|
||||||
|
#define DISPLAY_WIDTH 240
|
||||||
|
#define DISPLAY_HEIGHT 320
|
||||||
|
#define DISPLAY_MIRROR_X true
|
||||||
|
#define DISPLAY_MIRROR_Y false
|
||||||
|
#define DISPLAY_SWAP_XY false
|
||||||
|
#define DISPLAY_INVERT_COLOR false
|
||||||
|
#define DISPLAY_RGB_ORDER LCD_RGB_ELEMENT_ORDER_BGR
|
||||||
|
#define DISPLAY_OFFSET_X 0
|
||||||
|
#define DISPLAY_OFFSET_Y 0
|
||||||
|
#define DISPLAY_BACKLIGHT_OUTPUT_INVERT false
|
||||||
|
#define DISPLAY_SPI_MODE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_LCD_GC9A01_240X240
|
||||||
|
#define LCD_TYPE_GC9A01_SERIAL
|
||||||
|
#define DISPLAY_WIDTH 240
|
||||||
|
#define DISPLAY_HEIGHT 240
|
||||||
|
#define DISPLAY_MIRROR_X true
|
||||||
|
#define DISPLAY_MIRROR_Y false
|
||||||
|
#define DISPLAY_SWAP_XY false
|
||||||
|
#define DISPLAY_INVERT_COLOR true
|
||||||
|
#define DISPLAY_RGB_ORDER LCD_RGB_ELEMENT_ORDER_BGR
|
||||||
|
#define DISPLAY_OFFSET_X 0
|
||||||
|
#define DISPLAY_OFFSET_Y 0
|
||||||
|
#define DISPLAY_BACKLIGHT_OUTPUT_INVERT false
|
||||||
|
#define DISPLAY_SPI_MODE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_LCD_CUSTOM
|
||||||
|
#define DISPLAY_WIDTH 240
|
||||||
|
#define DISPLAY_HEIGHT 320
|
||||||
|
#define DISPLAY_MIRROR_X false
|
||||||
|
#define DISPLAY_MIRROR_Y false
|
||||||
|
#define DISPLAY_SWAP_XY false
|
||||||
|
#define DISPLAY_INVERT_COLOR true
|
||||||
|
#define DISPLAY_RGB_ORDER LCD_RGB_ELEMENT_ORDER_RGB
|
||||||
|
#define DISPLAY_OFFSET_X 0
|
||||||
|
#define DISPLAY_OFFSET_Y 0
|
||||||
|
#define DISPLAY_BACKLIGHT_OUTPUT_INVERT false
|
||||||
|
#define DISPLAY_SPI_MODE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // _BOARD_CONFIG_H_
|
||||||
11
main/boards/esp32-cgc/config.json
Normal file
11
main/boards/esp32-cgc/config.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"target": "esp32",
|
||||||
|
"builds": [
|
||||||
|
{
|
||||||
|
"name": "esp32-cgc",
|
||||||
|
"sdkconfig_append": [
|
||||||
|
"CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y",
|
||||||
|
"CONFIG_PARTITION_TABLE_CUSTOM_FILENAME=\"partitions_4M.csv\"",
|
||||||
|
"CONFIG_LCD_ST7735_128X128=y"
|
||||||
|
]
|
||||||
|
}
|
||||||
192
main/boards/esp32-cgc/esp32_cgc_board.cc
Normal file
192
main/boards/esp32-cgc/esp32_cgc_board.cc
Normal file
@@ -0,0 +1,192 @@
|
|||||||
|
#include "wifi_board.h"
|
||||||
|
#include "audio_codecs/no_audio_codec.h"
|
||||||
|
#include "display/lcd_display.h"
|
||||||
|
#include "system_reset.h"
|
||||||
|
#include "application.h"
|
||||||
|
#include "button.h"
|
||||||
|
#include "config.h"
|
||||||
|
#include "iot/thing_manager.h"
|
||||||
|
#include "led/single_led.h"
|
||||||
|
|
||||||
|
#include <wifi_station.h>
|
||||||
|
#include <esp_log.h>
|
||||||
|
#include <driver/i2c_master.h>
|
||||||
|
#include <esp_lcd_panel_vendor.h>
|
||||||
|
#include <esp_lcd_panel_io.h>
|
||||||
|
#include <esp_lcd_panel_ops.h>
|
||||||
|
#include <driver/spi_common.h>
|
||||||
|
|
||||||
|
#if defined(LCD_TYPE_ILI9341_SERIAL)
|
||||||
|
#include <esp_lcd_ili9341.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(LCD_TYPE_GC9A01_SERIAL)
|
||||||
|
#include <esp_lcd_gc9a01.h>
|
||||||
|
static const gc9a01_lcd_init_cmd_t gc9107_lcd_init_cmds[] = {
|
||||||
|
// {cmd, { data }, data_size, delay_ms}
|
||||||
|
{0xfe, (uint8_t[]){0x00}, 0, 0},
|
||||||
|
{0xef, (uint8_t[]){0x00}, 0, 0},
|
||||||
|
{0xb0, (uint8_t[]){0xc0}, 1, 0},
|
||||||
|
{0xb1, (uint8_t[]){0x80}, 1, 0},
|
||||||
|
{0xb2, (uint8_t[]){0x27}, 1, 0},
|
||||||
|
{0xb3, (uint8_t[]){0x13}, 1, 0},
|
||||||
|
{0xb6, (uint8_t[]){0x19}, 1, 0},
|
||||||
|
{0xb7, (uint8_t[]){0x05}, 1, 0},
|
||||||
|
{0xac, (uint8_t[]){0xc8}, 1, 0},
|
||||||
|
{0xab, (uint8_t[]){0x0f}, 1, 0},
|
||||||
|
{0x3a, (uint8_t[]){0x05}, 1, 0},
|
||||||
|
{0xb4, (uint8_t[]){0x04}, 1, 0},
|
||||||
|
{0xa8, (uint8_t[]){0x08}, 1, 0},
|
||||||
|
{0xb8, (uint8_t[]){0x08}, 1, 0},
|
||||||
|
{0xea, (uint8_t[]){0x02}, 1, 0},
|
||||||
|
{0xe8, (uint8_t[]){0x2A}, 1, 0},
|
||||||
|
{0xe9, (uint8_t[]){0x47}, 1, 0},
|
||||||
|
{0xe7, (uint8_t[]){0x5f}, 1, 0},
|
||||||
|
{0xc6, (uint8_t[]){0x21}, 1, 0},
|
||||||
|
{0xc7, (uint8_t[]){0x15}, 1, 0},
|
||||||
|
{0xf0,
|
||||||
|
(uint8_t[]){0x1D, 0x38, 0x09, 0x4D, 0x92, 0x2F, 0x35, 0x52, 0x1E, 0x0C,
|
||||||
|
0x04, 0x12, 0x14, 0x1f},
|
||||||
|
14, 0},
|
||||||
|
{0xf1,
|
||||||
|
(uint8_t[]){0x16, 0x40, 0x1C, 0x54, 0xA9, 0x2D, 0x2E, 0x56, 0x10, 0x0D,
|
||||||
|
0x0C, 0x1A, 0x14, 0x1E},
|
||||||
|
14, 0},
|
||||||
|
{0xf4, (uint8_t[]){0x00, 0x00, 0xFF}, 3, 0},
|
||||||
|
{0xba, (uint8_t[]){0xFF, 0xFF}, 2, 0},
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define TAG "ESP32_CGC"
|
||||||
|
|
||||||
|
LV_FONT_DECLARE(font_puhui_14_1);
|
||||||
|
LV_FONT_DECLARE(font_awesome_14_1);
|
||||||
|
|
||||||
|
class ESP32_CGC : public WifiBoard {
|
||||||
|
private:
|
||||||
|
Button boot_button_;
|
||||||
|
LcdDisplay* display_;
|
||||||
|
Button asr_button_;
|
||||||
|
|
||||||
|
void InitializeSpi() {
|
||||||
|
spi_bus_config_t buscfg = {};
|
||||||
|
buscfg.mosi_io_num = DISPLAY_MOSI_PIN;
|
||||||
|
buscfg.miso_io_num = GPIO_NUM_NC;
|
||||||
|
buscfg.sclk_io_num = DISPLAY_SCLK_PIN;
|
||||||
|
buscfg.quadwp_io_num = GPIO_NUM_NC;
|
||||||
|
buscfg.quadhd_io_num = GPIO_NUM_NC;
|
||||||
|
buscfg.max_transfer_sz = DISPLAY_WIDTH * DISPLAY_HEIGHT * sizeof(uint16_t);
|
||||||
|
ESP_ERROR_CHECK(spi_bus_initialize(SPI3_HOST, &buscfg, SPI_DMA_CH_AUTO));
|
||||||
|
}
|
||||||
|
|
||||||
|
void InitializeLcdDisplay() {
|
||||||
|
esp_lcd_panel_io_handle_t panel_io = nullptr;
|
||||||
|
esp_lcd_panel_handle_t panel = nullptr;
|
||||||
|
// 液晶屏控制IO初始化
|
||||||
|
ESP_LOGD(TAG, "Install panel IO");
|
||||||
|
esp_lcd_panel_io_spi_config_t io_config = {};
|
||||||
|
io_config.cs_gpio_num = DISPLAY_CS_PIN;
|
||||||
|
io_config.dc_gpio_num = DISPLAY_DC_PIN;
|
||||||
|
io_config.spi_mode = DISPLAY_SPI_MODE;
|
||||||
|
io_config.pclk_hz = DISPLAY_SPI_SCLK_HZ;
|
||||||
|
io_config.trans_queue_depth = 10;
|
||||||
|
io_config.lcd_cmd_bits = 8;
|
||||||
|
io_config.lcd_param_bits = 8;
|
||||||
|
ESP_ERROR_CHECK(esp_lcd_new_panel_io_spi(SPI3_HOST, &io_config, &panel_io));
|
||||||
|
|
||||||
|
// 初始化液晶屏驱动芯片
|
||||||
|
ESP_LOGD(TAG, "Install LCD driver");
|
||||||
|
esp_lcd_panel_dev_config_t panel_config = {};
|
||||||
|
panel_config.reset_gpio_num = DISPLAY_RESET_PIN;
|
||||||
|
panel_config.rgb_ele_order = DISPLAY_RGB_ORDER;
|
||||||
|
panel_config.bits_per_pixel = 16;
|
||||||
|
#if defined(LCD_TYPE_ILI9341_SERIAL)
|
||||||
|
ESP_ERROR_CHECK(esp_lcd_new_panel_ili9341(panel_io, &panel_config, &panel));
|
||||||
|
#elif defined(LCD_TYPE_GC9A01_SERIAL)
|
||||||
|
ESP_ERROR_CHECK(esp_lcd_new_panel_gc9a01(panel_io, &panel_config, &panel));
|
||||||
|
gc9a01_vendor_config_t gc9107_vendor_config = {
|
||||||
|
.init_cmds = gc9107_lcd_init_cmds,
|
||||||
|
.init_cmds_size = sizeof(gc9107_lcd_init_cmds) / sizeof(gc9a01_lcd_init_cmd_t),
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
ESP_ERROR_CHECK(esp_lcd_new_panel_st7789(panel_io, &panel_config, &panel));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
esp_lcd_panel_reset(panel);
|
||||||
|
|
||||||
|
|
||||||
|
esp_lcd_panel_init(panel);
|
||||||
|
esp_lcd_panel_invert_color(panel, DISPLAY_INVERT_COLOR);
|
||||||
|
esp_lcd_panel_swap_xy(panel, DISPLAY_SWAP_XY);
|
||||||
|
esp_lcd_panel_mirror(panel, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y);
|
||||||
|
#ifdef LCD_TYPE_GC9A01_SERIAL
|
||||||
|
panel_config.vendor_config = &gc9107_vendor_config;
|
||||||
|
#endif
|
||||||
|
display_ = new SpiLcdDisplay(panel_io, panel,
|
||||||
|
DISPLAY_WIDTH, DISPLAY_HEIGHT, DISPLAY_OFFSET_X, DISPLAY_OFFSET_Y, DISPLAY_MIRROR_X, DISPLAY_MIRROR_Y, DISPLAY_SWAP_XY,
|
||||||
|
{
|
||||||
|
.text_font = &font_puhui_14_1,
|
||||||
|
.icon_font = &font_awesome_14_1,
|
||||||
|
.emoji_font = font_emoji_32_init(),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void InitializeButtons() {
|
||||||
|
|
||||||
|
boot_button_.OnClick([this]() {
|
||||||
|
auto& app = Application::GetInstance();
|
||||||
|
if (app.GetDeviceState() == kDeviceStateStarting && !WifiStation::GetInstance().IsConnected()) {
|
||||||
|
ResetWifiConfiguration();
|
||||||
|
}
|
||||||
|
app.ToggleChatState();
|
||||||
|
});
|
||||||
|
|
||||||
|
asr_button_.OnClick([this]() {
|
||||||
|
std::string wake_word="你好小智";
|
||||||
|
Application::GetInstance().WakeWordInvoke(wake_word);
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// 物联网初始化,添加对 AI 可见设备
|
||||||
|
void InitializeIot() {
|
||||||
|
auto& thing_manager = iot::ThingManager::GetInstance();
|
||||||
|
thing_manager.AddThing(iot::CreateThing("Speaker"));
|
||||||
|
thing_manager.AddThing(iot::CreateThing("Backlight"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
ESP32_CGC() :
|
||||||
|
boot_button_(BOOT_BUTTON_GPIO), asr_button_(ASR_BUTTON_GPIO) {
|
||||||
|
InitializeSpi();
|
||||||
|
InitializeLcdDisplay();
|
||||||
|
InitializeButtons();
|
||||||
|
InitializeIot();
|
||||||
|
GetBacklight()->RestoreBrightness();
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual AudioCodec* GetAudioCodec() override
|
||||||
|
{
|
||||||
|
#ifdef AUDIO_I2S_METHOD_SIMPLEX
|
||||||
|
static NoAudioCodecSimplex audio_codec(AUDIO_INPUT_SAMPLE_RATE, AUDIO_OUTPUT_SAMPLE_RATE,
|
||||||
|
AUDIO_I2S_SPK_GPIO_BCLK, AUDIO_I2S_SPK_GPIO_LRCK, AUDIO_I2S_SPK_GPIO_DOUT, AUDIO_I2S_MIC_GPIO_SCK, AUDIO_I2S_MIC_GPIO_WS, AUDIO_I2S_MIC_GPIO_DIN);
|
||||||
|
#else
|
||||||
|
static NoAudioCodecDuplex audio_codec(AUDIO_INPUT_SAMPLE_RATE, AUDIO_OUTPUT_SAMPLE_RATE,
|
||||||
|
AUDIO_I2S_GPIO_BCLK, AUDIO_I2S_GPIO_WS, AUDIO_I2S_GPIO_DOUT, AUDIO_I2S_GPIO_DIN);
|
||||||
|
#endif
|
||||||
|
return &audio_codec;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual Display* GetDisplay() override {
|
||||||
|
return display_;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual Backlight* GetBacklight() override {
|
||||||
|
static PwmBacklight backlight(DISPLAY_BACKLIGHT_PIN, DISPLAY_BACKLIGHT_OUTPUT_INVERT);
|
||||||
|
return &backlight;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
DECLARE_BOARD(ESP32_CGC);
|
||||||
Reference in New Issue
Block a user