-
DIY 所需硬件
-
开发板:ESP32-S3-DevKitC-1(选择 WROOM N16R8 模组)
-
数字麦克风:INMP441
-
功放:MAX98357A
-
腔体喇叭:8Ω 2~3W 或 4Ω 2~3W
-
导线:跳线一盒,杜邦线若干
-
400 孔面包板 2 块
-
128×32 I2C(IIC) 液晶显示屏,SSD1306 驱动(推荐)
-
ML307R Cat.1 4G 模组,AT固件版(可选)
-
6*6mm 立式 轻触开关(可选)
除此之外,你可能还需要用到万用表,电烙铁套件,钳子三件套,Type-C数据线,用于烧录固件的PC。
1.1 开发板(ESP32-S3-DevKitC-1)
尽量要选择 N16R8,即 16 MB Flash 和 8 MB PSRAM 的配置。
因为 N8R2 需要把 PSRAM 的工作模式从 OCTAL 改为 QUAD,Flash大小改为 8MB,自定义分区表改为 partitions_8M.csv,重新编译固件。
部分开发板的 RGB 灯是没有接通的,需要焊接灯座旁边的两个小焊点才能使用,参见下图位置2。建议在购买的时选择已经接通RGB灯的,查看商品详情图或者咨询卖家。
1.2 MEMS 数字麦克风(INMP441)
这个电子元件最小,焊接难度较大,新手建议买焊接好的。自行焊接要注意一定不可以让引脚和半环形金属线接通。
INMP441 很脆弱,如果使用杜邦线接线,要注意不能把 VDD 和 GND 反接,否则容易烧坏(可以多买一个备用)。
1.3 数字功放(MAX98357A)
使用面包板连接,建议购买已经焊接排针的配件。
1.4 腔体喇叭(8Ω 3W)/ (4Ω 3W)
端子可自行选择或不要
1.5 导线(跳线一盒,杜邦线若干)
1.6 面包板(2 块 可拼 400 孔,可选,推荐)
如果没有面包板,我们在开发板上接的电子元件越来越多后,很容易就会乱成一团糟。
面包板400孔外观图
面包板内部结构图,分区横向连通,竖条为正负极
如图,两块 400 孔的面包板拼成一块,把开发板装在中间,可使面包板的利用率最大化。
面包板基础知识:面包板是分区块的,中间两个区块相同数字横向的每行是连通的(中间隔断除外),正负红蓝线是竖向每列连通的(如有隔断除外)。
1.7 OLED 显示屏(IIC 接口,推荐,可选)
购买时需要确认是使用 SSD 1306 驱动的,建议买GND开头的新版OLED屏幕。
1.8 Cat. 1 4G 模块(ML307R,可选)
ML307R 是中移物联推出的 Cat. 1 物联网模块,DC 版比 DL 版增加了 OpenCPU SDK 二次开发的支持。
购买时需要确认是 AT 固件版本。
注:此模块用来连接国内的 4G 移动数据网络,实现AI联网对话聊天。(不能打电话和发短信,使用该模块后可以不用连接WIFI,适合到户外等无WIFI网络的环境下使用。当然没有WIFI时也可以使用手机热点,具体请自己视情况考虑是否选择配备。)
注:建议4G模组选择可插拔卡的,如果经常使用可以使用自己的手机号码副卡,4G模块自带的流量卡每月流量可能不够(一般不能充值流量),或者需要另选流量套餐比较多的流量卡。
1.9 微动开关/按钮
使用尺寸6*6MM微动开关/轻触开关,在面包板上请岔开横行按示意图插到面包板,按钮如下图示:
注意:为防止新手短接引脚,虾哥推荐2脚的直插按钮,替代4脚的(老手忽略)。
购买链接:https://item.taobao.com/item.htm?id=42823169259
-
便捷购买地址
2.1 淘宝快速下单渠道
非带货!!
注意:部分电子元件未焊接引脚,可与商家沟通进行焊接或选择焊接好的商品。
注意:由于商家产品存在差异,请尽量选择信誉高销量高评价好的店铺购买,购买咨询和售后质量问题请自行和商家协商,不归本项目负责。
2.2 电烙铁入门必看
小白可以选择购买焊接好的版本,或者先观看电烙铁入门教程再进行焊接,避免损坏电子元件。
【小白的电烙铁使用入门】 https://www.bilibili.com/video/BV1qr4y1J7bW/?share_source=copy_web&vd_source=ee1aafe19d6e60cf22e60a93881faeba
-
新版接线方案
3.1 ESP32-S3-DevKitC-1开发板版本1(乐鑫标准版 44 IO引脚)接线图
新版/第二版接线方案适用于小智AI聊天机器人固件版本 >=V0.3.0,为了方便快速上手和演示,均使用了飞线(跳线)进行连接,具体引脚对接参考如下表格:
注意:如果你使用杜邦线连接(不使用面包板),请在购买杜邦线可以买几条1分2的分叉线(母线)用于麦克风和数字功放的短接,以解决开发板的电源3V3和接地GND的排针接口不够用的问题。
注意:如果用户使用的MAX98357数字功放是 BGA 封装的(芯片比较上图中的小),可以不接 GAIN_GND 这根短线(上图左边绿色短线),如用户接线正常工作则不用管。
麦克风焊接反了解决方案
如果用户的麦克风焊接反了(进声孔和麦克风图标丝印朝下,排针朝上),如下图示。
1)请参考麦克风反接图乐鑫标准版44引脚接线(点击图片放大),也可在群文件里参考麦克风和对应开发板的反接图接线,其他模块参考上图接线不变。
2)如果有电烙铁和风枪等工具,动手能力强的可以自己改过来,新手不建议自己改焊接。
ESP32S3开发板
|
麦克风 INMP441(I2S接口)
|
GPIO4
|
WS 数据选择
|
GPIO5
|
SCK 数据时钟
|
GPIO6
|
SD 数据输出
|
3V3
|
VDD 电源正 3.3V
|
GND
|
GND 接地 短接 L/R 左/右声道
|
|
数字功放 MAX98357A
|
GPIO7
|
DIN 数字信号
|
GPIO15
|
BCLK 位时钟
|
GPIO16
|
LRC 左/右时钟
|
3V3 /3.3V
|
Vin(或VCC)电源输入 短接 SD 关机频道
|
GND
|
GND 接地 短接 GAIN 增益和频道(BGA封装麦克风不用短接)
|
|
音频+ 接 喇叭正极(一般红线,不清楚问卖家、或用万用表测或其他方法)
|
|
音频- 接 喇叭负极
|
|
显示屏(IIC / I2C接口,可选)
|
GPIO41
|
SDA 数据线
|
GPIO42
|
SCK 时钟线
|
3V3 /3.3V
|
VCC 电源正
|
GND
|
GND 接地
|
|
4G 模块(ML307R,可选)
|
LDO 正极(4.7V)3个脚最右边那个
|
BAT(3.7~4.5V) 或者 +5V 短接 EN 使能(电压>4.7V)
|
GND
|
GND 接地
|
GPIO11
|
TXD 发送数据
|
GPIO12
|
RXD 接收数据
|
|
按钮(0.4.1版本及以上)
|
GPIO39
|
接音量减-短触按钮(另一头接地 GND),短按减小音量,长按静音(音量0)
**请注意四角按钮的同向是连通的。
|
GPIO40
|
接音量加+短触按钮(另一头接地 GND),短按加大音量。
**请注意四角按钮的同向是连通的
|
注意:如果开发板上LDO是AMS1117,LDO正极对应位置如上图。如果不是最好用万用表测试一下电压确认
使用短线尽可能减少信号干扰。
目前两个版本接线方案的固件互不兼容,烧录固件时,要留意是哪个版本(固件版本在 0.3 之前的都是采用第一版接线方案),如果是自己编译固件,可以自行配置 GPIO。
3.2 ESP32-S3-DevKitC-1 开发板版本2(GOOUUU 果云版 42 IO引脚)接线图
如果你买到的开发板相关引脚与下图示一致,为ESP32S3开发板版本2,相对于开发板版本1,主要区别是少几个引脚,多了个4个固定开孔(支持铜柱等固定),接口方面版本1左上方3V3供电口调整到左下方,版本2左边增加了GPIO19、GPIO20,版本1左边的GPIO13、GPIO14、5VIN对应调整到了版本2的右下方,版本2少了左右最下方的两个GND,版面元件布局等其他调整,参考下方图示。
ESP32S3开发板版本2接线图与版本1与外部模块 麦克风、数字功放,OLED屏幕、4G模块等导线接线图GPIO接口一样,使用同样的程序固件,见下方接线表格,实物对接请参考下方图例。
注意:如果你使用杜邦线连接(不使用面包板),请在购买杜邦线可以买几条1分2的分叉线(母线3条)用于麦克风和数字功放的短接,以解决开发板的电源3V3和接地GND的排针接口不够用的问题。
注意:如果用户使用的MAX98357数字功放是 BGA封装的(芯片比较上图中的小),可以不接 GAIN_GND 这根短线(上图左边绿色短线),如果接了正常工作就继续使用。
麦克风焊接反了解决方案
如果用户的麦克风焊接反了(进声孔和麦克风图标丝印朝下,排针朝上),如下图示。
1)请参考麦克风反接图果云版42引脚接线(点击图片放大),也可在群文件里参考麦克风和对应开发板的反接图接线,其他模块参考上图接线不变。
2)如果有电烙铁和风枪等工具,动手能力强的可以自己改过来,新手不建议自己改焊接。
ESP32S3开发板
|
麦克风 INMP441(I2S接口)
|
GPIO4
|
WS 数据选择
|
GPIO5
|
SCK 数据时钟
|
GPIO6
|
SD 数据输出
|
3V3
|
VDD 电源正 3.3V
|
GND
|
GND 接地 短接 L/R 左/右声道
|
|
数字功放 MAX98357A
|
GPIO7
|
DIN 数字信号
|
GPIO15
|
BCLK 位时钟
|
GPIO16
|
LRC 左/右时钟
|
3V3 /3.3V
|
Vin(或VCC)电源输入 短接 SD 关机频道
|
GND
|
GND 接地 短接 GAIN 增益和频道
(BGA封装麦克风不用短接)
|
|
音频+ 接 喇叭正极(一般红线,不清楚问卖家、或用万用表测或其他方法)
|
|
音频- 接 喇叭负极
|
|
显示屏(IIC/I2C 接口,可选)
|
GPIO41
|
SDA 数据线
|
GPIO42
|
SCK 时钟线
|
3V3 3.3V
|
VCC 电源正
|
GND
|
GND 接地
|
|
4G 模块(ML307R,可选)
|
LDO 正极(4.7V)
3个脚最右边那个,如右图红色箭头
|
BAT(3.7~4.5V)
或+5V 短接 EN 使能(电压>4.7V)
|
GND
|
GND 接地
|
GPIO11
|
TXD 发送数据
|
GPIO12
|
RXD 接收数据
|
|
按钮(0.4.1版本及以上)
|
GPIO39
|
接音量减-短触按钮(另一头接地 GND),短按减小音量,长按静音(音量0)
**请注意四角按钮的同向是连通的。
|
GPIO40
|
接音量加+短触按钮(另一头接地 GND),短按加大音量。
**请注意四角按钮的同向是连通的
|
注意:如果开发板上LDO是AMS1117,LDO正极对应位置如上图。如果不是最好用万用表测试一下电压确认
3.3 外接按键及注意事项
3.3.1 按键外接(可选)
-
音量调节
固件版本0.3.3新增了音量调节按钮,触控按钮对应 GPIO40引脚,另一端接地GND,按下按钮进行声音增加,长按静音。0.4.1版本增加音量减少按钮,对应 GPIO39,长按静音,之前的音量按钮长按操作变为最大音量。
-
唤醒/中断
固件版本0.3.1以上支持按键唤醒和中断对话,可使用开发板上的 Boot按钮,或者对接 GPIO0引脚,另一端接地GND,在进行对话时,按下按钮可以打断对话,再次按下按钮即可唤醒恢复对话。
注意事项:在外接按钮时,请不要直接在开发板上单行连接四脚开关,请错开成两行来插接。因为面包板中间区块的横向数字行是直接连通的(中间隔断了除外)。单行插接连接会造成引脚短接,相当于按钮为常按状态,按钮无法使用。
3.3.2 跳线颜色方案
在跳线款式有限的情况下,尽最大可能统一配色方案。
统一的配色也方便其他人读懂。
比如 VCC 使用红色和棕色,GND 使用灰色和黑色,数字信号使用了咖啡色和橙色,这样可以避免正负极反接的情况。
也有例外的情况,比如上图中使用了黄色线短接麦克风的 L/R 和 GND,使用了蓝色线从开发板的 LDO 引脚引出 USB 的 5V 电压。
3.4 基础版硬件模块
能够实现语音对话的最简单方案,面包板上只需要放置麦克风和功放,通过 ESP32 的 I2S(集成电路内置音频总线) 控制器进行通信。
ESP32 S3 一共有两个 I2S 控制器(ESP32 C3 只有一个)。如果需要输入和输出支持不同的采样率,就需要用到两个 I2S 控制器。
3.4.1 Duplex 模式
使用一个 I2S 控制器连接麦克风和功放。Duplex 模式适合 GPIO 数量不多的开发板。
开发板
|
INMP441
|
MAX98357A
|
GND
|
GND, L/R
|
GND, GAIN
|
3.3V
|
VDD
|
SD, VIN
|
GPIO4
|
WS
|
LRC
|
GPIO5
|
SCK
|
BCLK
|
GPIO6
|
SD
|
|
GPIO7
|
|
DIN
|
3.4.2 Simplex 模式
使用 I2S 0 连接麦克风,使用 I2S 1 连接功放。比 Duplex 模式多使用两个 GPIO。
开发板
|
INMP441
|
MAX98357A
|
GND
|
GND, L/R
|
GND, GAIN
|
3.3V
|
VDD
|
SD, VIN
|
GPIO4
|
WS
|
|
GPIO5
|
SCK
|
|
GPIO6
|
SD
|
|
GPIO7
|
|
DIN
|
GPIO15
|
|
BCLK
|
GPIO16
|
|
LRC
|
如下图所示,默认配置使用的是 Simplex 模式,GPIO 与电子元件引脚一对一关系,没有共用,接线相对容易一些。
MAX98357A 的 VIN 引脚可以接 3.3V,也可以接 5V,后面的 4G 扩展版接了 5V。
MAX98357 和 INMP441 底部均有隐藏接线,如下图:
接完线后,把万用表调到那个短路红黑表笔蜂鸣器会响起的那个模式,可以用检查开发板和已安装的电子元件上的 GND 与 VCC(3.3V)之间是否有短路情况。确认没有短路情况下,给开发板接入 USB 电源进行下一步测试。
(PS,我因为买到一块面板包,左侧的供电孔的正负极是短路的,最终导致两块开发板的 USB 口烧坏)
-
液晶屏幕扩展版
增加了一个液晶屏幕,使用 4 线 I2C 接口,可以用来显示 WiFi 或 4G 信号强度,网络信号弱会影响使用体验。
如图所示,由于开发板右侧缺少 3.3V 引脚,所以在面包板顶部中间用红线引过来。液晶屏幕底部预留了一个孔可以把 3.3V 继续往右引至正极红线处。
开发板
|
SSD1306
|
GND
|
GND
|
3.3V
|
VCC
|
GPIO41
|
SDA
|
GPIO42
|
SCK
|
-
4G 扩展版
面包板左下角增加了一个 4G 模块,4G 天线藏到了面包板背后。天线不能离麦克风太近,距离 3cm 以内会听到明显信号干扰。最简单的处理方案是把天线粘贴在喇叭的模拟信号线上,并且远离麦克风。
开发板
|
ML307R
|
GND
|
GND
|
GPIO11
|
TXD
|
GPIO12
|
RXD
|
LDO 正极(4.7V)
3个脚最右边,如下图示蓝色导线
|
BAT(3.7~4.5V)
或 +5V 并短接 EN 使能(电压>4.7V)
|
4G 模块需要 5V 电压供电,因为开发板只有 5V VIN 输入引脚,没有 5V 输出引脚,所以我们在 LDO (稳压器)的近似 5V (大约4.7-4.8V)引脚上引电出来,如图所示。
外围电子元件拿开后,可以看到完整的接线图。
-
常见接线问题 FAQ
-
烧录固件后,RGB 灯不亮。 需要检查 RGB 灯旁边的两个焊点是否已经接上,如果没有焊接,可以先用导线接通,重启查看是否会亮。
-
如何检查电路故障?
-
在没有接电源的情况下,用万用表测试导线是否导通,比如距离相远的两个 GND 引脚,或者两个 3.3V 引脚。
-
接电源后,检查 GND 与其他引脚电压是否在正常值。
社区与交流
QQ 群
群友经验丰富,有不懂的可以在群里提问交流。
欢迎参与完善本文档。