Files
note_sync/有趣的项目/AI桌面陪伴助手/ESP32-S3与2.8寸SPI触摸屏接线记录.md
T
ylhan bdd6bfb63d AI桌面陪伴助手:方案更新至 v2.4,代码剥离到独立仓库
代码剥离
- 助手本体、TTS 服务、P0 基准脚本、ESP32 固件移到 ~/workspace/ai-companion
  (独立 git 仓库),本目录只留方案、P0 报告与硬件记录
- 因此删除 esp32_smile_test.ino / esp32_touch_eyes.ino
- 同时移除已失效的 .gitignore(原本只为挡住模型体积,代码已搬走)

方案 v2.4 重大变更:架构从"单机"改为"服务器即助手、本地为客户端"
- 起因:实测 N5095 无 AVX2,跑不动可用的语音模型
- N5095 降为客户端/外设桥,只做 USB 接入、DoA、WebRTC 客户端
- 实施阶段表加进度列(P0/P1/P3/P4a 部分完成),新增三条验收要求
- 采购清单按实际到货更新,标出屏幕形态待确认(2.8寸 vs 原定1.28寸圆屏)

技术栈(实测更新)
- LLM:DeepSeek deepseek-flash(云端,必须关思考);本机 27B 已停用
- TTS:Qwen3-TTS 1.7B(服务器 3090);vits-zh-ll 因音色不满意被替换
- STT:Zipformer int8 未变,中文识别率仍是未闭合项

新增两份 P0 报告
- P0-Qwen3TTS报告.md:TTS 换型过程与实测
- P0-DeepSeek验证报告.md:四条路径验证

两份旧报告加了状态说明(结论仍有效但选型已变),
并修正了随代码移走而失效的引用与复现命令。
2026-09-15 11:08:56 +08:00

127 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ESP32-S3 与 2.8 英寸 SPI 触摸屏接线记录
更新:2026-09-14。
## 设备与当前状态
- 主控:ESP32-S3 N16R8 开发板,已焊排针。
- 屏幕:2.8英寸、240×320、SPI TFT,带触摸和SD卡座。
- 显示驱动:当前程序按ILI9341配置,用户提供的型号尚未通过芯片读取确认。
- 触摸驱动:当前按XPT2046兼容控制器配置;具体芯片型号尚未独立确认。
- 用户已反馈屏幕接好并点亮、触摸线已接好;动态眼睛程序将X/Y同时翻转后,用户确认点击与视线方向正确。
- SD卡功能暂不连接、不初始化。
## 接线表
GPIO编号指开发板丝印数字,不是排针从一端数起的序号。插拔杜邦线前先断开USB供电。
### 显示部分
| 屏幕标注 | ESP32-S3 | 说明 |
|---|---|---|
| VCC | 3V3(此前试接方案) | 用户反馈已亮,但未单独确认最终电源接法;按实物补核,不据此改接5V |
| GND | GND | 公共地 |
| CS | GPIO10 | 显示片选,低有效 |
| RESET | GPIO8 | 显示复位,由程序控制 |
| DC | GPIO9 | 显示数据/命令选择 |
| SDI〈MOSI〉 | GPIO11 | 主控向屏幕发送数据 |
| SCK | GPIO12 | SPI时钟 |
| LED | ESP32-S3 的 3V3(用户已确认) | 直接接3.3V,背光常亮;不接GPIO,当前程序不控制背光亮度或开关 |
| SDO〈MISO〉 | 不接 | 暂不读取显示芯片寄存器或像素,不影响写入图像 |
### 触摸部分
| 屏幕标注 | ESP32-S3 | 说明 |
|---|---|---|
| T_CLK | GPIO12 | 与显示SCK共用 |
| T_DIN | GPIO11 | 与显示SDI/MOSI共用 |
| T_DO | GPIO13 | 触摸数据返回,即MISO |
| T_CS | GPIO7 | 触摸独立片选,不能与显示CS合并 |
| T_IRQ | GPIO6 | 触摸通知;现有程序以轮询读取,暂不依赖中断 |
### 共用连线示意
```text
ESP32-S3 GPIO12 ─┬─ 屏幕 SCK
└─ 触摸 T_CLK
ESP32-S3 GPIO11 ─┬─ 屏幕 SDI / MOSI
└─ 触摸 T_DIN
ESP32-S3 GPIO13 ─── 触摸 T_DO
ESP32-S3 GPIO10 ─── 屏幕 CS
ESP32-S3 GPIO7 ─── 触摸 T_CS
ESP32-S3 GPIO9 ─── 屏幕 DC
ESP32-S3 GPIO8 ─── 屏幕 RESET
ESP32-S3 GPIO6 ─── 触摸 T_IRQ
ESP32-S3 GND ─── 屏幕 GND
```
GPIO11、GPIO12各需要分接两根线,可通过面包板或分线连接。触摸T_DO与显示SDO是不同引脚,目前只连接T_DO。SD卡接口所有信号保持不接,测试时不插SD卡。
## 软件配置
Arduino IDE开发板:`ESP32S3 Dev Module`(安装Espressif Systems提供的esp32开发板包)。
库管理器安装:
- Adafruit ILI9341
- Adafruit GFX Library,以及安装提示中的依赖
- XPT2046_Touchscreen,作者Paul Stoffregen
与接线对应的关键配置:
```cpp
Adafruit_ILI9341 tft(&SPI, 9, 10, 8); // DC, CS, RESET
XPT2046_Touchscreen touch(7); // T_CS;采用轮询
// 初始化总线前,两个片选均设为输出高电平。
pinMode(10, OUTPUT);
digitalWrite(10, HIGH);
pinMode(7, OUTPUT);
digitalWrite(7, HIGH);
pinMode(6, INPUT_PULLUP);
SPI.begin(12, 13, 11, 10); // SCK, MISO, MOSI, SS
tft.begin(10000000); // 显示SPI初始10MHz
tft.setRotation(1); // 横屏320×240
touch.begin(SPI);
touch.setRotation(1);
```
## 测试程序
### 笑脸与触摸基础测试
文件:`~/workspace/ai-companion/esp32_smile_test/esp32_smile_test.ino`(在代码仓库,不在本笔记库)。
- 启动切换红、绿、蓝,再显示笑脸。
- 按下屏幕时笑脸在黄色/青色之间切换,显示触摸次数。
- 串口115200输出原始坐标、压力及IRQ电平;原始坐标不是屏幕像素坐标。
### 动态眼睛测试
文件:`~/workspace/ai-companion/esp32_touch_eyes/esp32_touch_eyes.ino`(在代码仓库)。
- 已取消开机三点校准,直接显示眼睛,使用代码顶部的默认触摸范围。
- 点击时眨眼,视线朝向触摸位置;按住移动可跟随。
- 最后一次有效触摸后3秒,视线平滑回到正前方。
- 连续15秒没有触摸后,随机眨眼、向周围看,并间歇回正;触摸立即接管。当前“无人互动”仅按触摸计时,不代表摄像头检测到无人。
- 根据用户实测上下左右均反向,已设TOUCH_FLIP_X=true、TOUCH_FLIP_Y=true,TOUCH_SWAP_XY仍为false;重新上传后用户确认方向正确。边缘误差调整TOUCH_MIN/MAX_X/Y。IDLE_AFTER_MS控制闲置等待时间。
两个程序分别打开、分别上传,不将两个ino复制到同一草图目录。动态眼睛程序已获用户实机反馈:触摸与视线方向正确;长期运行及完整功能验收尚未记录。
## 排查提示
- 背光亮不代表显示初始化成功;白屏时检查ILI9341型号、CS/DC/RESET和SPI连线。
- `XPT2046_Touchscreen.h: No such file or directory`表示缺库,先安装触摸库。
- 显示正常但触摸无响应:检查T_DO→GPIO13、T_CS→GPIO7,以及共用的T_CLK/T_DIN。
- 触摸方向不对:调整动态眼睛程序顶部的轴交换/翻转和范围参数,更改屏幕旋转方向后需重新检查映射。
- 当前不要将触摸信号接5V,也不要用显示GPIO给电机供电。
## 参考与适用边界
同类[MSP2807模块接口说明](https://www.lcdwiki.com/2.8inch_SPI_Module_ILI9341_SKU:MSP2807)与实物照片的引脚名称相符,但不能由外观证明具体板卡版本完全一致。用户已确认LED直接接ESP32-S3的3V3,背光常亮;VCC的最终接法和触摸芯片型号仍需单独核对,不能由LED接法推定。
本记录仅适用于当前2.8英寸模块,不能直接套用到此前的GC9A01小圆屏。