外观
软件架构
开发环境
- 软件环境:ESP-IDF 框架
- 开发语言:C/C++
- AI 框架:ESP-Claw
- 板级配置:YAML 描述外设/设备
软件栈
- 固件 · ESP-IDF 框架,YAML 描述外设/设备的板级配置
- 显示驱动 · esp_lcd_panel_st7789,SPI3 @ 40MHz,旋转 90°(swap_xy + mirror_x)
- 背光与音效 · LEDC PWM @ 5kHz / 2.7kHz,10-bit 分辨率
- 按键 · 9 路 GPIO 输入,低电平有效,下拉默认电平 1
- AI 生成 · 与大模型对话,自然语言一句话生成完整可玩游戏代码
2.1 ESP-Claw 框架
什么是 ESP-Claw?
ESP-Claw 继承了 Vibe Coding 的理念 —— 你不再需要写大量模板代码、手动搭建工程,也不用反复「编译 → 烧录 → 调试」,直接通过自然语言与它协作完成功能开发。
🚫 传统嵌入式开发
- 写大量模板代码与初始化函数
- 手动搭建工程、配置 CMake 与依赖
- 编译 → 烧录 → 调试反复循环
- 调试问题靠翻寄存器手册与串口日志
✨ ESP-Claw · Chat Coding
- 用自然语言描述「我要实现什么功能」
- 它自动生成可运行的完整工程
- 屏幕效果不理想,告诉它哪里不对
- 它结合反馈持续迭代优化
Chat Coding 五大核心原则
为了让 ESP-Claw 更高效、更准确地交付结果,建议在对话中遵循以下原则:
1. 意图优先,而非语法优先
核心资产不是代码,而是清晰的目标。专注描述「想实现什么功能、用户如何交互、设备如何响应」,而不是纠结具体的实现细节。
✅ 做一个显示天气和时间的桌面屏幕 ✅ 做一个坦克大战游戏,五向摇杆控制移动,A键开火 ❌ 帮我写一个 while(1) 的 GPIO 控制逻辑
2. 先跑通,再优化
ESP-Claw 强调快速原型与迭代开发。别一开始就追求完美架构、极致性能、最优资源占用 —— 先让它「能运行」,再逐步修复问题、优化体验。
3. 保持反馈循环
Chat Coding 不是「提一个需求就生成完美应用」,而是持续迭代的过程。运行结果不符合预期时,主动反馈屏幕效果、性能问题、行为差异。
4. 学会拆分任务
复杂需求不建议一次性提出超大型目标。建议拆分为多个阶段:先点亮屏幕,再接入按键,再实现游戏逻辑,最后添加音效。
5. 明确 ESP32 的能力边界
ESP-Claw 运行在真实硬件之上,既有硬件能力,也受资源限制。设计功能前,先明确哪些可直接完成、哪些超出能力。
2.2 板级配置
源码结构
ESP-CLAW 版型目录由 4 个 YAML / sdkconfig + 1 个 LCD 工厂入口 C 文件构成,零样板代码即可描述整块板。
📄 board_info.yaml
板卡身份信息:芯片型号(esp32s3)、版本、厂商。本项目标识为
eda_ai_gamebox v1.0.0⚙ board_peripherals.yaml
外设描述:SPI3 总线 (MOSI=13/SCLK=14)、9 路 GPIO 按键、2 路 LEDC PWM (背光 5kHz / 蜂鸣器 2.7kHz)
🎮 board_devices.yaml
设备配置:display_lcd(ST7789 + swap_xy 旋转)、lcd_brightness、5 路 D-Pad、4 路 XYAB 按键、buzzer。低电平有效,默认上拉 1
🔧 sdkconfig.defaults.board
CPU 240MHz、Flash QIO 80MHz 8MB、PSRAM Octal 80MHz、ST7789 240×320、USB Serial JTAG 控制台
LCD 配置示例
yaml
# board_devices.yaml · LCD 配置片段
- name: display_lcd
chip: st7789
type: display_lcd
config:
# 顺时针 90° 旋转 → 横屏 320×240
mirror_x: true
swap_xy: true
invert_color: true
x_max: 320
y_max: 240
io_spi_config:
cs_gpio_num: 11
dc_gpio_num: 12
pclk_hz: 400000001
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
蜂鸣器与按键配置示例
yaml
# board_peripherals.yaml · 蜂鸣器 + 按键
- name: ledc_buzzer
type: ledc
config:
gpio_num: 48
freq_hz: 2700
duty_resolution: LEDC_TIMER_10_BIT
- name: gpio_btn_a
type: gpio
config:
pin: 9
mode: GPIO_MODE_INPUT
default_level: 11
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
LCD 工厂入口
c
// setup_device.c · LCD 工厂入口
#include "esp_lcd_panel_st7789.h"
esp_err_t lcd_panel_factory_entry_t(esp_lcd_panel_io_handle_t io,
const esp_lcd_panel_dev_config_t *panel_dev_config,
esp_lcd_panel_handle_t *ret_panel)
{
return esp_lcd_new_panel_st7789(io, panel_dev_config, ret_panel);
}1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
2.3 AI 生成游戏
一句话生成游戏
配合 ESP-Claw 框架,只需一句话描述玩法,AI 即可自动生成可烧录运行的完整游戏。以下是已成功运行的四款经典游戏:

Chrome 恐龙跑酷
单键跳跃避开仙人掌,支持加速难度递增

坦克大战
五向摇杆控制移动,A键开火,B键放炸弹

超级玛丽
横版闯关跳跃,金币、地块、敌人一应俱全

飞机大战
竖版弹幕射击,A键开火,BOSS战伴随蜂鸣音效
AI 对话示例
以坦克大战为例,提供硬件描述 + 玩法需求,模型直接产出可编译运行的完整工程:

坦克大战 AI 对话记录

超级玛丽 AI 对话记录
提示词示例:
我有一个基于 ESP32-S3 的掌上游戏机,屏幕是 2.0 寸 ST7789 240×320 SPI LCD,旋转后 320×240 横屏显示。有五向摇杆(上下左右中)和 XYAB 四个按键,还有一个无源蜂鸣器。请帮我生成一个坦克大战游戏,五向摇杆控制坦克移动,A键开火,B键放炸弹,砖墙可破坏。
2.4 ESP32 能力边界
| 类别 | 说明 |
|---|---|
| ✅ 可直接实现 | GPIO 控制、点亮屏幕、读按键、驱动蜂鸣器 |
| ✅ 可直接实现 | 本地自动化、事件触发、状态机、定时任务 |
| ✅ 可直接实现 | 云端 AI 协同、Wi-Fi 联网 + 大模型 API 调用 |
| ⚠️ 视硬件而定 | 摄像头识别,取决于是否扩展摄像头模组 |
| 🚫 不适合 ESP32 | 大模型本地推理,算力与内存不足,请走云端协同 |
| 🔧 可扩展 | 安装 Skills + 外设,添加传感器、扩展能力插件 |