Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
115 changes: 113 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ jobs:
run: |
find main components/mybot_platform tests/atom_echos3r \
tests/st7789_lifecycle tests/co5300_lifecycle tests/bread_compact_wifi_lcd \
tests/cores3_pixel_ui -type f \
tests/cst816s_input tests/tca9554 tests/cores3_pixel_ui -type f \
\( -name '*.c' -o -name '*.h' -o -name '*.cc' -o -name '*.cpp' \) \
-exec clang-format --dry-run --Werror {} +
- name: Whitespace check
Expand All @@ -40,7 +40,7 @@ jobs:
run: |
find main components/mybot_platform tests/atom_echos3r \
tests/st7789_lifecycle tests/co5300_lifecycle tests/bread_compact_wifi_lcd \
tests/cores3_pixel_ui -type f \
tests/cst816s_input tests/tca9554 tests/cores3_pixel_ui -type f \
\( -name '*.c' -o -name '*.h' -o -name '*.cc' -o -name '*.cpp' \) \
-print0 | while IFS= read -r -d '' file; do
head -n 5 "$file" | grep -q 'SPDX-License-Identifier:' || {
Expand All @@ -54,6 +54,10 @@ jobs:
run: sh tests/st7789_lifecycle/run.sh
- name: CO5300 host lifecycle tests
run: sh tests/co5300_lifecycle/run.sh
- name: CST816S and Boot input host lifecycle tests
run: sh tests/cst816s_input/run.sh
- name: TCA9554 masked update host tests
run: sh tests/tca9554/run.sh
- name: Bread Compact Wi-Fi LCD host lifecycle tests
run: sh tests/bread_compact_wifi_lcd/run.sh
- name: CoreS3 pixel UI host lifecycle tests
Expand Down Expand Up @@ -153,6 +157,30 @@ jobs:
language: en-US
ptime: 60
defaults: ci/ptime60.defaults;ci/en-us.defaults
- board: esp32-s3-touch-amoled-1.8-v2
language: zh-CN
ptime: 60
defaults: ci/ptime60.defaults
- board: esp32-s3-touch-amoled-1.8-v2
language: en-US
ptime: 60
defaults: ci/ptime60.defaults;ci/en-us.defaults
- board: esp32-s3-touch-lcd-1.85
language: zh-CN
ptime: 60
defaults: ci/ptime60.defaults
- board: esp32-s3-touch-lcd-1.85
language: en-US
ptime: 60
defaults: ci/ptime60.defaults;ci/en-us.defaults
- board: genjutech-s3-1.54tft
language: zh-CN
ptime: 60
defaults: ci/ptime60.defaults
- board: genjutech-s3-1.54tft
language: en-US
ptime: 60
defaults: ci/ptime60.defaults;ci/en-us.defaults
- board: m5stack-core-s3
language: zh-CN
ptime: 60
Expand Down Expand Up @@ -241,3 +269,86 @@ jobs:
build-${{ matrix.board }}-ptime-${{ matrix.ptime }}-ui-${{ matrix.ui || 'default' }}-lang-${{ matrix.language }}-video-${{ matrix.video || 'off' }}/bootloader/bootloader.bin
build-${{ matrix.board }}-ptime-${{ matrix.ptime }}-ui-${{ matrix.ui || 'default' }}-lang-${{ matrix.language }}-video-${{ matrix.video || 'off' }}/partition_table/partition-table.bin
build-${{ matrix.board }}-ptime-${{ matrix.ptime }}-ui-${{ matrix.ui || 'default' }}-lang-${{ matrix.language }}-video-${{ matrix.video || 'off' }}/ota_data_initial.bin

extended-idf-build:
name: extended-${{ matrix.board }}-${{ matrix.language }}
runs-on: ubuntu-24.04
container:
image: espressif/idf:v5.5.2
defaults:
run:
shell: bash
env:
BUILD_DIR: build-extended-${{ matrix.board }}-${{ matrix.language }}
strategy:
fail-fast: false
matrix:
board:
- xingzhi-metal-1.54-wifi
- xingzhi-cube-0.85tft-wifi
- xingzhi-cube-0.96oled-wifi
- xingzhi-abs-2.0
- m5stack-stopwatch
- esp32-s3-touch-amoled-1.8
- esp32-s3-touch-amoled-1.32
- esp32-s3-touch-amoled-1.43c
- esp32-s3-touch-amoled-2.06
- atoms3r-echo-base
- atoms3r-echo-pyramid
- sp-esp32-s3-1.28-box
- esp-box
- esp-box-3
- esp-box-lite
- esp32s3-korvo2-v3
- lichuang-dev
- quandong-s3-dev
- rymcu-bigsmart
- df-k10
- mixgo-nova
- taiji-pi-s3
- freenove-esp32s3-display-2.8-lcd
- esp32-s3-touch-lcd-1.54
- esp32-s3-touch-lcd-1.83
- esp32-s3-lcd-0.85
- esp32-s3-touch-lcd-1.85b
- esp32-s3-touch-lcd-1.85c
- sp-esp32-s3-1.54-muma
- atk-dnesp32s3-box0
- nulllab-ai-vox-v3
- aipi-lite
- doit-s3-aibox
- magiclick-2p4
- movecall-cuican-esp32s3
- movecall-moji-esp32s3
- bread-compact-wifi
- hu-087
- kevin-sp-v4-dev
- du-chatx
language: [zh-CN, en-US]
steps:
- uses: actions/checkout@v4
- name: Build ESP32-S3 firmware
run: |
source /opt/esp/idf/export.sh >/dev/null
defaults="ci/ptime60.defaults"
if [ "${{ matrix.language }}" = "en-US" ]; then
defaults="$defaults;ci/en-us.defaults"
fi
idf.py -B "$BUILD_DIR" \
-DMYBOT_BOARD=${{ matrix.board }} \
-DSDKCONFIG="$BUILD_DIR/sdkconfig" \
-DSDKCONFIG_DEFAULTS="sdkconfig.defaults;$defaults" \
build
- name: Report size
run: |
source /opt/esp/idf/export.sh >/dev/null
idf.py -B "$BUILD_DIR" size
- name: Upload firmware
uses: actions/upload-artifact@v4
with:
name: mybot-esp32-${{ matrix.board }}-${{ matrix.language }}-${{ github.sha }}
path: |
${{ env.BUILD_DIR }}/mybot_esp32.bin
${{ env.BUILD_DIR }}/bootloader/bootloader.bin
${{ env.BUILD_DIR }}/partition_table/partition-table.bin
${{ env.BUILD_DIR }}/ota_data_initial.bin
38 changes: 36 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,32 @@ Versioning and Conventional Commits.

### Added

- Per-board hardware, input and operation documentation for all thirteen profiles, with shared
- KEVIN SP V4 Dev with a 240×280 ST7789 panel and ES8311 audio, plus DuChat X with a 128×160
ST7789 panel, separate raw I2S audio and GPIO1 power hold. Both passed local ESP-IDF v5.5.2
Chinese and English reconfigure/build/size/merge-bin validation; real-device validation
remains pending.
- Six additional ESP32-S3 profiles: DOIT S3 AI Box with PDM capture, Magiclick 2.4 with
NV3023, Movecall CuiCan/Moji with GC9A01, and Bread Compact Wi-Fi/HU-087 as headless raw-I2S
subsets. Chinese and English local merged builds passed; real-device validation remains pending.
- Ten additional ESP32-S3 profiles: eight ST7789/ILI9341 boards using ES8311 or
ES8311+ES7210 audio, followed by ST77916 LCD 1.85B/1.85C and SP 1.54 Muma. The batch adds
compact 128×128 layout coverage, AXP2101/TCA9554 reset paths, a secondary board power rail,
CST816S touch, and board-specific READMEs. Chinese and English local merged builds passed;
real-device validation remains pending.
- Twenty-two additional ESP32-S3 board profiles covering NV3023, GC9A01, ILI9341, SH8601 and
ST77916 panels; PCA9557/TCA9554, M5PM1/M5IOE1 and AXP2101 reset/power paths; FT5x06, GT911,
CST816S-compatible touch and GPIO input; ES8311, ES7210, ES8374 and raw/PDM audio paths.
`xingzhi-cube-0.96oled-wifi` is intentionally headless. All new profiles passed local
ESP-IDF v5.5.2 Chinese and English reconfigure/build/size/merge-bin validation; real-device
validation remains pending. Each new profile has its own concise board README linked from the
board index.
- Shared compile-time board/hardware skeleton for board families whose lifecycle contracts match.
- Per-board hardware, input and operation documentation for the original profiles, with shared
build/flash instructions and one validation matrix.
- CoreS3-only process-gray pixel-glasses UI, with 23 expressions, four 9 px terminal rows,
a 10 px signature and fixed 32 px six-digit pairing codes on its 320x240 display.
Automatic faces follow READY/conversation phases. Expressions affect only the LCD.
`MYBOT_BOARD` selects the view automatically; other twelve profiles retain their UI/hardware.
`MYBOT_BOARD` selects the view automatically; other profiles retain their UI/hardware.
- Shared LVGL status UI for the other display-board profiles, with Chinese/English text,
pairing codes, voiceprint status, and listening/thinking/speaking indicators.
- LVGL light/dark themes, local state emoji, rounded status cards, persistent voiceprint
Expand Down Expand Up @@ -42,6 +62,15 @@ Versioning and Conventional Commits.
- Waveshare ESP32-S3 Touch AMOLED 2.16 Board profile with a 480x480 CO5300 panel, zero display
gap, CST9217/Boot input, and shared AXP2101 and ES7210/ES8311 integration. Chinese and English
variants passed ESP-IDF v5.5.2 reconfigure/build/size/merge-bin validation.
- Waveshare ESP32-S3 Touch AMOLED 1.8 V2 Board profile with a 368x448 CO5300 panel, TCA9554
reset, AXP2101 power sequencing, CST816S/Boot input, and ES8311 audio.
- Waveshare ESP32-S3 Touch LCD 1.85 Board profile with a 360x360 ST77916 panel, panel-version
selection, dual I2C buses, TCA9554 reset, separated I2S, right-slot microphone capture, and
both-slot playback.
- GenjuTech S3 1.54 TFT Board profile with an inverting ST7789 display, ES8311 audio, Boot and
volume buttons, and board-specific PA/display power coupling.
- Chinese and English variants for all three new profiles passed ESP-IDF v5.5.2
reconfigure/build/size/merge-bin validation.
- Espressif ESP-VoCat Board profile with PCB V1.0/V1.2 runtime detection, ST77916 QSPI display,
CST816S touch input, and ES7210/ES8311 full-duplex audio.
- Pinned ST77916 2.0.2 and CST816S 1.1.1~1 production components.
Expand Down Expand Up @@ -74,6 +103,11 @@ Versioning and Conventional Commits.

### Changed

- Extend the shared board skeleton with an optional secondary power rail for profiles that keep
codec and system power on separate GPIOs.
- Centralize generic hardware sequencing, round-screen safe-area layout, dual-I2C selection,
speaker PA control and display/audio capability derivation so additional profiles do not copy
board lifecycle code.
- Centralize build and flash commands in the board index and current validation status in
`docs/VALIDATION.md`; remove repeated status paragraphs, volatile build timings and per-board
command copies from board and topic documentation.
Expand Down
23 changes: 20 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ voice-chat runtime on
ESP32-S3 boards. The project owns board initialization, Wi-Fi provisioning, persistent storage,
HTTPS transport, audio, input, display, and the firmware lifecycle around the SDK.

The development baseline is **ESP-IDF v5.5.2**. Thirteen compile-time board profiles are
The development baseline is **ESP-IDF v5.5.2**. Fifty-six compile-time board profiles are
supported; the board, Flash, PSRAM, partition table, and hardware drivers are selected with
`MYBOT_BOARD`. See the [board documentation index](components/mybot_platform/boards/README.md)
for hardware details, controls, build commands, and per-board limitations.
Expand Down Expand Up @@ -41,12 +41,29 @@ Display profiles:
`zhengchen-1.54tft-ml307`, `zhengchen-1.54tft-wifi`,
`xingzhi-cube-1.54tft-wifi`, `bread-compact-wifi-lcd`, `esp-vocat`,
`esp32-s3-touch-amoled-1.75`, `esp32-s3-touch-amoled-1.75c`,
`esp32-s3-touch-amoled-2.16`, `m5stack-core-s3`, `m5stack-stick-s3`, and
`esp32-s3-touch-amoled-2.16`, `esp32-s3-touch-amoled-1.8-v2`,
`esp32-s3-touch-lcd-1.85`, `esp32-s3-touch-amoled-1.8`,
`esp32-s3-touch-amoled-1.32`, `esp32-s3-touch-amoled-1.43c`,
`esp32-s3-touch-amoled-2.06`, `atoms3r-echo-base`, `atoms3r-echo-pyramid`,
`sp-esp32-s3-1.28-box`, `esp-box`, `esp-box-3`, `esp-box-lite`,
`esp32s3-korvo2-v3`, `lichuang-dev`, `quandong-s3-dev`, `rymcu-bigsmart`,
`df-k10`, `mixgo-nova`, `taiji-pi-s3`, `m5stack-stopwatch`,
`xingzhi-metal-1.54-wifi`, `xingzhi-cube-0.85tft-wifi`, `xingzhi-abs-2.0`,
`freenove-esp32s3-display-2.8-lcd`, `esp32-s3-touch-lcd-1.54`,
`esp32-s3-touch-lcd-1.83`, `esp32-s3-lcd-0.85`,
`esp32-s3-touch-lcd-1.85b`, `esp32-s3-touch-lcd-1.85c`,
`sp-esp32-s3-1.54-muma`, `atk-dnesp32s3-box0`, `nulllab-ai-vox-v3`,
`aipi-lite`, `magiclick-2p4`, `movecall-cuican-esp32s3`,
`movecall-moji-esp32s3`,
`kevin-sp-v4-dev`, `du-chatx`,
`genjutech-s3-1.54tft`, `m5stack-core-s3`, `m5stack-stick-s3`, and
`sensecap-watcher`.

Headless profiles:

`atom-echos3r` and `respeaker-flex-xvf3800-circular4-xiao`.
`atom-echos3r`, `xingzhi-cube-0.96oled-wifi`, `doit-s3-aibox`,
`bread-compact-wifi`, `hu-087`, and
`respeaker-flex-xvf3800-circular4-xiao`.

All profiles currently use Wi-Fi. The ML307 profile reserves modem UART pins but does not
implement modem or 4G networking. Only `m5stack-core-s3` currently exposes camera video.
Expand Down
23 changes: 20 additions & 3 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
工程负责板级初始化、Wi-Fi 配网、持久化存储、HTTPS、音频、输入、显示,以及 SDK 外围的
固件生命周期。

当前开发基线为 **ESP-IDF v5.5.2**,支持 13 个编译期 Board profile。通过 `MYBOT_BOARD`
当前开发基线为 **ESP-IDF v5.5.2**,支持 56 个编译期 Board profile。通过 `MYBOT_BOARD`
选择板型、Flash、PSRAM、分区表和硬件驱动。具体硬件配置、输入操作、构建命令和限制见
[板卡说明索引](components/mybot_platform/boards/README.md)。

Expand All @@ -37,12 +37,29 @@
`zhengchen-1.54tft-ml307`、`zhengchen-1.54tft-wifi`、
`xingzhi-cube-1.54tft-wifi`、`bread-compact-wifi-lcd`、`esp-vocat`、
`esp32-s3-touch-amoled-1.75`、`esp32-s3-touch-amoled-1.75c`、
`esp32-s3-touch-amoled-2.16`、`m5stack-core-s3`、`m5stack-stick-s3` 和
`esp32-s3-touch-amoled-2.16`、`esp32-s3-touch-amoled-1.8-v2`、
`esp32-s3-touch-lcd-1.85`、`esp32-s3-touch-amoled-1.8`、
`esp32-s3-touch-amoled-1.32`、`esp32-s3-touch-amoled-1.43c`、
`esp32-s3-touch-amoled-2.06`、`atoms3r-echo-base`、`atoms3r-echo-pyramid`、
`sp-esp32-s3-1.28-box`、`esp-box`、`esp-box-3`、`esp-box-lite`、
`esp32s3-korvo2-v3`、`lichuang-dev`、`quandong-s3-dev`、`rymcu-bigsmart`、
`df-k10`、`mixgo-nova`、`taiji-pi-s3`、`m5stack-stopwatch`、
`xingzhi-metal-1.54-wifi`、`xingzhi-cube-0.85tft-wifi`、`xingzhi-abs-2.0`、
`freenove-esp32s3-display-2.8-lcd`、`esp32-s3-touch-lcd-1.54`、
`esp32-s3-touch-lcd-1.83`、`esp32-s3-lcd-0.85`、
`esp32-s3-touch-lcd-1.85b`、`esp32-s3-touch-lcd-1.85c`、
`sp-esp32-s3-1.54-muma`、`atk-dnesp32s3-box0`、`nulllab-ai-vox-v3`、
`aipi-lite`、`magiclick-2p4`、`movecall-cuican-esp32s3`、
`movecall-moji-esp32s3`、
`kevin-sp-v4-dev`、`du-chatx`、
`genjutech-s3-1.54tft`、`m5stack-core-s3`、`m5stack-stick-s3` 和
`sensecap-watcher`。

无屏 profile:

`atom-echos3r` 和 `respeaker-flex-xvf3800-circular4-xiao`。
`atom-echos3r`、`xingzhi-cube-0.96oled-wifi`、`doit-s3-aibox`、
`bread-compact-wifi`、`hu-087` 和
`respeaker-flex-xvf3800-circular4-xiao`。

所有 profile 当前均使用 Wi-Fi。ML307 profile 仅预留 Modem UART 引脚,未实现 Modem 或
4G 联网。目前仅 `m5stack-core-s3` 提供摄像头视频能力。
Expand Down
7 changes: 7 additions & 0 deletions THIRD_PARTY_NOTICES.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ It does not replace third-party terms. This file is informational and is not leg
| Espressif SCCB 0.0.8 (I2C subset) | Apache-2.0 | `components/esp_sccb_intf` |
| Espressif JPEG 0.6.1 (ESP32-S3 binary) | Espressif MIT, use on Espressif products | `components/esp_new_jpeg` |
| Espressif ILI9341 LCD driver 2.0.2 | Apache-2.0 | `components/esp_lcd_ili9341` |
| Espressif GC9A01 LCD driver 2.0.4 | Apache-2.0 | `components/esp_lcd_gc9a01` |
| Espressif NV3023 LCD driver 1.0.1 | Apache-2.0 | `components/esp_lcd_nv3023` |
| Espressif SH8601 LCD driver 1.0.2 | Apache-2.0 | `components/esp_lcd_sh8601` |
| LVGL 9.5.0 | MIT plus retained font/library-specific terms | `components/lvgl` |
| Espressif LVGL port 2.8.0~1 | Apache-2.0 | `components/esp_lvgl_port` |
| Espressif SPD2010 LCD driver 2.0.0~1 | Apache-2.0 | `components/esp_lcd_spd2010` |
Expand All @@ -24,12 +27,16 @@ It does not replace third-party terms. This file is informational and is not leg
| Espressif LCD touch 1.2.1 | Apache-2.0 | `components/esp_lcd_touch` |
| Espressif CST816S touch driver 1.1.1~1 | Apache-2.0 | `components/esp_lcd_touch_cst816s` |
| Waveshare CST9217 touch driver 1.0.4 | Apache-2.0 | `components/esp_lcd_touch_cst9217` |
| Espressif FT5x06 touch driver 1.1.0~1 | Apache-2.0 | `components/esp_lcd_touch_ft5x06` |
| Espressif GT911 touch driver 1.2.0~2 | Apache-2.0 | `components/esp_lcd_touch_gt911` |
| Espressif IO expander 1.2.1 | Apache-2.0 | `components/esp_io_expander` |
| Espressif TCA95xx 16-bit IO expander 2.0.2 | Apache-2.0 | `components/esp_io_expander_tca95xx_16bit` |
| Espressif button 4.2.0 | Apache-2.0 | `components/button` |
| Espressif knob 1.1.0 | Apache-2.0 | `components/knob` |
| Espressif CMake utilities 0.5.0 | Apache-2.0 | `components/cmake_utilities` |
| M5Stack M5PM1 1.0.7 | MIT | `components/m5pm1` |
| M5Stack M5IOE1 1.0.9 | MIT | `components/m5ioe1` |
| Espressif ES8374 codec source | Apache-2.0 | `components/mybot_platform/src/drivers/audio/es8374_codec.c` and its private headers |
| Source Han Sans UI glyph subset | SIL Open Font License 1.1 | `components/mybot_platform/src/drivers/display/renderers/lvgl/lvgl_fonts.c`, `components/mybot_platform/src/drivers/display/assets/licenses/LVGL_VIEW_FONT_LICENSE.txt` |
| Noto Color Emoji rasterized glyphs | SIL Open Font License 1.1 | `components/mybot_platform/assets/ui/noto_emoji`, `components/mybot_platform/src/drivers/display/renderers/lvgl/lvgl_assets.c` |
| MyBot Terminal bitmap subsets derived from DejaVu Sans Mono Bold | Bitstream Vera font terms, with public-domain DejaVu changes | `components/mybot_platform/src/drivers/display/renderers/lvgl/pixel_fonts.c`, `TERMINAL_FONT_LICENSE.txt` |
Expand Down
Loading
Loading