- 项目介绍
树莓派对音频支持较弱,原生仅有一个耳机插孔,而到第五代甚至连耳机插孔都取消了。因此我打算在这次项目里设计一个树莓派的音频拓展,支持麦克风和音箱同步工作,方便未来做一些智能音箱类的应用。
- 市场应用介绍
该设计可用来作为家庭物联网的人机交互平台,可在树莓派中部署智能音箱,同时接入WIFI,方便控制家用电器
- 项目设计思路
项目中使用了I2S端口进行通信,麦克风使用的INMP441模块,里面自带了ADC,输出信号为I2S;喇叭用的是MAX98357,同样内置了DAC,通信信号为I2S。
I2S,全称为Inter-IC Sound,是一种数字音频接口标准,用于在集成电路之间传输音频数据。它最初由Philips(现在的NXP半导体)在1986年引入,并且现在被广泛应用于各种音频设备和应用中。
- 项目方案框图和原理图解释
该项目的原理图由三块组成。首先是最核心的MAX98357外围电路的设计。
在上述电路中,除去旁路,滤波电容和限流电阻(阻抗匹配)外,外围电路主要是R3,R4,R5这三个配置电阻。其中R3和R4是分别起到对GAIN引脚的上下拉,通过接入不同的电阻可以改变信号增益。这两个元件都是预留位置,因为这个引脚可以悬空,如果悬空就是默认增益设置。
R5控制的是左右声道模式,通过接入不同大小的电阻来实现声道信号的选择。在这里我接入了一个100K的电阻,实现的效果就是将左右声道的音频合并后进行输出。
声音输入的部分相对简单一些,使用的是现成的INMP441模块,只是将它作为贴片元件贴在板子上而已。在这里我额外添加了两个配置电阻,是用来配置麦克风输出的音频信号声道。接下拉电阻输出左声道,接上拉电阻输出右声道。
特别需要注意的是,在I2S端口描述中DATA IN和DATA OUT一般都是相对于当前设备而言,所以要注意接法上类似于UART的TX-RX交叉接法。
- 设计中用到规定厂商的元器件介绍
ADI的MAX98357是一款高性能、低功耗的数字音频放大器芯片。它由ADI(Analog Devices Inc.)开发,旨在提供高品质音频输出和简化音频系统的设计。
MAX98357采用了I2S接口,可以直接与数字音频源(如数字音频处理器、微控制器或数字音频接口芯片)进行连接。它支持多种音频数据格式,包括标准的PCM(脉冲编码调制)格式和压缩格式(如AC-3和MP3)。
该芯片内置了数字音频处理功能,包括均衡器、音量控制和动态范围压缩等。它还提供了丰富的配置选项,可通过I2C接口进行控制和配置。用户可以根据具体需求调整音频参数,如增益、均衡、限制器等,以实现所需的音频效果。
MAX98357具有高质量的音频输出性能。它提供了低失真和低噪声的音频放大,并支持高达24位的音频分辨率和高采样率。这使得它非常适用于音频播放器、音频扬声器、耳机放大器和其他音频应用。
此外,MAX98357还具有低功耗特性,可在低电压供电条件下工作。这使得它非常适合便携式和电池供电设备,可以延长电池寿命并降低能耗。
- PCB绘制打板介绍及遇到的问题和解决方法
PCB layout比较简单,布线非常宽松。而且bclk频率不算高,可以随意布。
打回来的板子还是很漂亮的。但是出了一些问题,就是我在上面提到过的DIN和DOUT接法,在这里我耽误了不少时间,最后用示波器才搞定。于是板子上我只好手动做了一下hack。本文中的资料都已经做过修正,可直接使用。
- 关键代码及说明
驱动安装比较简单,安装好最新的树莓派系统后,只需以下几条命令就可以安装好驱动。
sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get install python3-pip
sudo pip3 install --upgrade click
sudo pip3 install --upgrade setuptools
sudo pip3 install --upgrade adafruit-python-shell
wget https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/i2smic.py
sudo python3 i2smic.py
- 功能展示及说明
由于这个项目中仅用到了I2S端口,因此其他不相干的引脚排母我就没有焊接。焊接好的成品如下:
上面提到需要hack的地方已经用飞线处理了。但在这又遇到了一个小问题,由于板子我原本设计是给zero用的,作为zero的拓展板。可是我手上目前还没有zero,只能拿树莓派4B先做实验。由于4B的散热器较高,导致拓展板没法插到位,因此只好用杜邦线来完成演示。树莓派zero的散热片比较矮,装了散热片的情况下也可以直接使用。
录音与播放的演示由于需要声音,故在此无法展示,大家可以去视频里看。
- 对本活动的心得体会(包括意见或建议),及整个设计过程中遇到的难点和解决方法
在大赛即将结束之时才了解到有这么好的比赛,既可以玩到硬件,还可以学到知识。希望以后还能有类似的活动,一定全力支持。