FastBond2阶段2-基于MAX98357设计的树莓派声卡
树莓派对音频支持较弱,原生仅有一个耳机插孔,而到第五代甚至连耳机插孔都取消了。因此我打算在这次项目里设计一个树莓派的音频拓展,支持麦克风和音箱同步工作,方便未来做一些智能音箱类的应用。
标签
嵌入式系统
ADC
接口
FastBond第二季
江华210
更新2023-11-13
451
  • 项目介绍

树莓派对音频支持较弱,原生仅有一个耳机插孔,而到第五代甚至连耳机插孔都取消了。因此我打算在这次项目里设计一个树莓派的音频拓展,支持麦克风和音箱同步工作,方便未来做一些智能音箱类的应用。

 

  • 市场应用介绍

该设计可用来作为家庭物联网的人机交互平台,可在树莓派中部署智能音箱,同时接入WIFI,方便控制家用电器

 

  • 项目设计思路

项目中使用了I2S端口进行通信,麦克风使用的INMP441模块,里面自带了ADC,输出信号为I2S;喇叭用的是MAX98357,同样内置了DAC,通信信号为I2S。

I2S,全称为Inter-IC Sound,是一种数字音频接口标准,用于在集成电路之间传输音频数据。它最初由Philips(现在的NXP半导体)在1986年引入,并且现在被广泛应用于各种音频设备和应用中。

 

  • 项目方案框图和原理图解释

FpvcSlnhRHdPzEas_3xQxkIoDOJ2

Fmjk-pscxqZKIxXVFN-yopAYV1xj

该项目的原理图由三块组成。首先是最核心的MAX98357外围电路的设计。

FuBt0Ezm4y-ILi92jqFEf4G7k7fa

在上述电路中,除去旁路,滤波电容和限流电阻(阻抗匹配)外,外围电路主要是R3,R4,R5这三个配置电阻。其中R3和R4是分别起到对GAIN引脚的上下拉,通过接入不同的电阻可以改变信号增益。这两个元件都是预留位置,因为这个引脚可以悬空,如果悬空就是默认增益设置。

R5控制的是左右声道模式,通过接入不同大小的电阻来实现声道信号的选择。在这里我接入了一个100K的电阻,实现的效果就是将左右声道的音频合并后进行输出。

FhvTR82L_ReDyETJ3eOpm5zbIPBD

声音输入的部分相对简单一些,使用的是现成的INMP441模块,只是将它作为贴片元件贴在板子上而已。在这里我额外添加了两个配置电阻,是用来配置麦克风输出的音频信号声道。接下拉电阻输出左声道,接上拉电阻输出右声道。

FrWUaNAaueOh1ji0Qcm67cPR-M7x

特别需要注意的是,在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频率不算高,可以随意布。

FlsFwsnSITVKoUWj0ZS8_vF70X_s

打回来的板子还是很漂亮的。但是出了一些问题,就是我在上面提到过的DIN和DOUT接法,在这里我耽误了不少时间,最后用示波器才搞定。于是板子上我只好手动做了一下hack。本文中的资料都已经做过修正,可直接使用。

FmABUvcE5QbSPVHW9niIUgfZ5jrMFrCWSo7Nd6vLPTaGNciLQKvd3IVX

 

  • 关键代码及说明

驱动安装比较简单,安装好最新的树莓派系统后,只需以下几条命令就可以安装好驱动。

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端口,因此其他不相干的引脚排母我就没有焊接。焊接好的成品如下:

FjktkFrHl788ZOHqGid37sOwWMegFkpLgE32dwjxnqCJLqaTcxFjbGfM

上面提到需要hack的地方已经用飞线处理了。但在这又遇到了一个小问题,由于板子我原本设计是给zero用的,作为zero的拓展板。可是我手上目前还没有zero,只能拿树莓派4B先做实验。由于4B的散热器较高,导致拓展板没法插到位,因此只好用杜邦线来完成演示。树莓派zero的散热片比较矮,装了散热片的情况下也可以直接使用。

FoMz72XPFhOGz5O1loDMeMHjscMkFnqpJSgbenbpZxwasoApGYvhqtLm

Fhx4OQo9Sl4zoGXW8I5v1_igRtA8

录音与播放的演示由于需要声音,故在此无法展示,大家可以去视频里看。

 

  • 对本活动的心得体会(包括意见或建议),及整个设计过程中遇到的难点和解决方法

在大赛即将结束之时才了解到有这么好的比赛,既可以玩到硬件,还可以学到知识。希望以后还能有类似的活动,一定全力支持。

软硬件
电路图
附件下载
extend.7z
团队介绍
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号