本帖最后由 hugh_jie 于 2025-3-12 16:27 编辑
前言
最近小智爆火,看起来很流畅的样子,想着esphome的应该也能差不多,就攒了一套搞起来试试,没有代码能力,也不会画板子,只是组装了一下,目前感觉是能用,自己的j1900平台部署的stt,代理用的智谱清言,没搞定本地LLM,总体速度跟Miot auto的conversion接入的小爱差不多,有时候代理抽风会很费时间
物料
序号 |
名称 |
数量 |
价格 |
运费 |
说明 |
01 |
ESP32-S3 N16R8 NANO开发板 |
1 |
27.07 |
|
|
02 |
INMP441麦克风 |
1 |
9.00 |
|
|
03 |
PCM5102 i2s解码板 |
1 |
9.39 |
|
|
04 |
2寸4欧15w喇叭 |
1 |
8.6 |
|
|
05 |
4按键开关模块 |
1 |
1.8 |
3 |
|
06 |
pam8610 2x15w功放板 |
1 |
10.45 |
|
|
07 |
DC母座5.5x2.1mm |
1 |
2.99 |
|
|
08 |
ws2812b灯带 30灯1米 |
1 |
5.28 |
|
|
09 |
M3x6mm平头螺丝套装 |
4 |
2.4 |
|
这个价格是20套的 |
10 |
M3平头自攻螺丝 |
4 |
2.5 |
|
中间板子长度大于10mm更稳妥,价格是100颗10mm的,按键要用5mm以内的 |
11 |
海绵胶带1cmx2mm,5米 |
1 |
1.84 |
|
用于底部防滑 |
合计 |
|
|
84.32 |
|
|
接线
外观
功能
- 使用了4个实体按键,分别是音量减、闭麦、音量加、静音。长按
- 、+ 可以持续加减音量;静音按键可以静音和恢复到之前音量;闭麦按键只是简单的使用了关闭了音量和micro_wake_word.stop ,测试的时候发现闭麦的时候也有可能被触发,不知道咋回事
- 搞了两个唤醒词,
okay_nabu 和hey_jarvis ,没尝试加其他的,可以都加上试试效果
- 使用了5颗led,用于各种状态和音量指示,闭麦和静音时led常亮,加减音量时指示灯会跟随亮和灭
- 没有采用大家常用的MAX98357,使用了PCM5102解码板,可以用外接其他功放提供更好的音质
led和语音演示视频在附件里
缺陷
- led的缓启缓灭很不流畅,不知道如何解决
- 有噪音,不是很大,不知道是我没理线的原因还是里面模块互相干扰了
注意
-
编译使用的2025.2.0版本的esphome,会报黄字,没发现实际影响:
warning: #warning "This set of I2S APIs has been deprecated, please include 'driver/i2s_std.h', 'driver/i2s_pdm.h' or 'driver/i2s_tdm.h' instead. if you want to keep using the old APIs and ignore this warning, you can enable 'Suppress leagcy driver deprecated warning' option under 'I2S Configuration' menu in Kconfig" [-Wcpp]
-
外壳前网有2个版本,区别是卡扣前面的厚度,我目前使用的是薄的,有一点点松,厚点的应该能紧点,但是有可能会断卡扣,初版使用的卡扣整体是2mm,用的pla材料打印,结果弹性不够断了就改了两版出来,如果非常喜欢pla的话也建议前网用petg或abs,主体和中间板子用pla
-
按键也建议使用petg打印,按钮我是单色打印机,只能手动分层打印,所以画图的时候是挖空了,没有填补,如果有多色打印机的话可以自己修改把空处填补上再用双色打印,效果应该会好很多
-
中间板led的孔我修改过,没完全贯穿,能带点均光效果,如果使用不透明材料的话可以自己修改完全贯穿
-
led我是直接用灯带剪断了一颗颗焊的,可以考虑买单颗带板的,需要考虑尺寸
-
图便宜买的这个开发板,当时一看参数挺高,但是比其他便宜,结果不能开启psram,不知道其他板子开启的话能不能更快
-
音量调节的led使用了非常原始的办法,一个个设置的。。尝试过用for 循环,结果编译通过了缺启动不了,就删掉了,有大佬优化一下的话就更好了
-
所有打印零件都没有加支撑,我的打印机很便宜,加了支撑打出来效果和不加差不多,就干脆没加了,需要的话可以加
-
买到那个按键板按键有点长,需要修剪一下,具体操作步骤:把按键帽装上盒体后把按键板放上去,然后目测或者想办法量一下板子离螺柱的距离,就是需要修剪的长度。这个不是必须买的,有多余的按键的话(1、2块钱几十个)可以直接硬接到板子上,总共需要5根线,这个板子还需要vcc线
其他
之前打印的一个燃气红外模块TCRT5000的壳子,有需要且正好燃气表差不多的可以拿去,tb上写的pcb尺寸是31x14mm的,方便插拔我改成了4pin的端子接口,杜邦的掰一掰应该也能放进去,不行就小刀伺候吧
更新
更新功能
-
添加了media_player,可以当做音箱使用,播放音乐,在播放音乐时tts会压低音乐
-
添加了定时器,之前感觉没啥用没加上,这次加上了。定时结束会有闹钟音效,结束音效的方法:
- 唤醒一次(可能会很难唤醒)
- 按静音按键(第四个键,闹钟音效激活该按键为停止音效功能,不会静音)
- 3分钟后自动停止,时间可自定义
-
添加了唤醒回复我在 ,用的edge-tts生成的。
固件编译
- 由于加了本地音频文件,需要把
default_16MB.csv 、im_here.wav 、timer_finish.wav 三个文件放入esphome目录,位置可能不一样,看看编译报错日志里面的路径,放进去就行,我在windows上编译的,位置是C:\Users\用户名\AppData\Local\Programs\Python\Python310\Lib\site-packages\esphome
- 没找到esphome里面的静音方法,调用了HA的action,所以如果你的配置名不是
test 的话就需要手动设置entityId,在substitutions 里面修改即可,需要先刷一次固件,找到实体名 修改后再OTA一次
- 我使用的esphome版本是2025.2.0
存在的问题:
- 播放音乐时麦克风基本是没法唤醒的,只能贴很近才能唤醒,或者手动静音后唤醒,打印了个小罩子加上好像没啥用
- 播放音乐时TTS偶尔可能有点卡顿
|