外观
3.1 项目功能总览
这节要搞懂:要做什么、要买什么、哪个引脚接哪。 需要基础:第二章
一、功能清单
| # | 功能 | 用到前面哪节课 |
|---|---|---|
| 1 | 显示时间和日期 | 2.4 屏幕 |
| 2 | 联网自动校时,永远准 | 3.5 |
| 3 | 显示室内温湿度 | 2.3 I2C |
| 4 | 显示网上拉的天气 | 3.6 |
| 5 | 手机蓝牙设闹钟 | 2.8 BLE |
| 6 | MQTT 远程设闹钟 / 上报数据 | 3.6 |
| 7 | 闹钟用喇叭播放铃声 | 2.6 / 2.7 I2S |
| 8 | 天黑背光自动变暗 | 2.5 ADC + PWM |
| 9 | 断电后设置不丢 | 3.4 NVS |
| 10 | 网页配网,换地方不用重烧固件 | 3.8 |
| 11 | SD 卡存历史数据和铃声 | 3.9 |
| 12 | OTA 远程升级固件 | 3.8 |
| 13 | 语音命令 | 2.6 / 2.7 PDM 麦克风 |
这台设备没有按键
所有设置都通过手机或者电脑完成 —— 蓝牙(近距离直连)或 MQTT(远程,走网络)。
二、买什么(约 ¥150)
| 器件 | 型号 | 价格 | 备注 |
|---|---|---|---|
| 开发板 | ESP32-S3-DevKitC-1 | ¥45 | ⭐ 认准 S3,别买成老款 ESP32 |
| 屏幕 | 2.8寸 ST7789 240×320 SPI | ¥45 | 接口选 SPI,看清驱动 IC |
| 温湿度 | AHT20 或 SHT30 | ¥8 | I2C 接口 |
| 光敏 | 光敏电阻 + 10kΩ 电阻 | ¥1 | 接 ADC1 |
| 功放 | NS4168 模块 | ¥10 | I2S 输入,闹铃靠它 |
| 喇叭 | 4Ω 或 8Ω 小喇叭 | ¥5 | 接功放输出 |
| 麦克风 | LMD4030T261-OA1 | ¥5 | PDM,语音命令 |
| SD 卡 | microSD 32GB 以下 | ¥15 | FAT32,存数据和铃声 |
| 其他 | 面包板 + 杜邦线 + USB 线 | ¥15 |
合计约 ¥150。
三、引脚分配表 ⭐
这张表是整个项目的地基,代码里所有引脚宏都照它填。
屏幕(SPI,软件模拟)
| 功能 | ESP32-S3 引脚 | 说明 |
|---|---|---|
| 屏幕 SCL | GPIO12 | 时钟 |
| 屏幕 SDA(MOSI) | GPIO11 | 数据 |
| 屏幕 CS | GPIO10 | 片选 |
| 屏幕 DC | GPIO5 | 区分命令和数据 |
| 屏幕 RST | GPIO4 | 复位 |
| 屏幕背光 BLK | GPIO17 | PWM 调亮度,经三极管驱动 |
温湿度和光敏
| 功能 | ESP32-S3 引脚 | 说明 |
|---|---|---|
| AHT20 SDA | GPIO14 | I2C 数据 |
| AHT20 SCL | GPIO13 | I2C 时钟 |
| 光敏电阻 | GPIO1 | ⭐ ADC1_CH0,联网后仍可用 |
音频(I2S)
| 功能 | ESP32-S3 引脚 | 说明 |
|---|---|---|
| 功放 BCLK | GPIO46 | I2S 位时钟 |
| 功放 LRC | GPIO9 | I2S 声道选择 |
| 功放 SDATA | GPIO8 | I2S 音频数据 |
| 功放 CTRL | GPIO38 | 使能,拉高才出声 |
| 麦克风 CLK | GPIO3 | PDM 时钟 |
| 麦克风 DATA | GPIO42 | PDM 数据 |
LED 和按键
| 功能 | ESP32-S3 引脚 | 说明 |
|---|---|---|
| LED1 / LED2 / LED3 | GPIO18 / 39 / 21 | 输出 1 亮 |
| KEY1 | GPIO45 | 开内部下拉,按下读 1 |
| KEY2 / KEY3 | GPIO47 / 48 | 开内部上拉,按下读 0 |
这几个引脚为什么这样选
- 光敏必须用 ADC1 的脚(GPIO1) —— ADC2(GPIO11-20)开了 WiFi 就失效(2.5 讲过)
- 屏幕用 10/11/12 —— 这组正好是 S3 的 FSPI 引脚,以后想换成硬件 SPI 不用改板子
- 背光经三极管驱动 —— 2.8 寸屏背光电流大,直接接 GPIO 会超过 20mA 上限
- 避开了 GPIO 26-32(接内部 Flash,动了就起不来)、GPIO 43/44(串口日志)、GPIO 19/20(USB)
- GPIO 3 / 45 / 46 是 strapping 脚,开机瞬间的电平会影响启动模式 —— 这里接的都是麦克风时钟、按键这类开机时不会被强行拉住的东西,所以能用(2.2 讲过)
四、先别急着写代码
建议顺序:
- 只接屏幕 → 用 2.4 的代码点亮它 ✅
- 只接传感器 → 用 2.3 的代码读出温度 ✅
- 只接功放和喇叭 → 用 2.7 的代码放出声音 ✅
- 光敏接上 → 用 2.5 的代码打印读数 ✅
- 都验证过了,再往下走
为什么要这样
如果一上来就把所有功能堆到一起,出问题时你分不清是哪个模块的毛病。
一次只验证一件事,是嵌入式调试最重要的习惯。
本节要点
- 8 个功能,全部用到前两章的知识
- 器材约 ¥150,开发板认准 ESP32-S3
- 引脚分配是地基,光敏必须用 ADC1 的脚(GPIO1);功放除了 I2S 三根线,还要一根 CTRL 使能脚
- 一次只验证一个模块,别一起接
动手试试
- 下单买齐器材。
- 拿到板子后用第二章的代码逐个验证:屏能亮、传感器能读、按键有反应。