WM8960 Audio HAT

来自丢石头百科
WM8960 Audio HAT
WM8960-Audio-HAT
基本信息

分类: 树莓派 音频

品牌: Waveshare

功能简介
特性

WM8960音频编码解码

接口

I2S接口

相关产品

{{{related}}}

产品简介

前言

本产品是基于树莓派而设计的音频模块,采用WM8960低功耗立体声编解码器,通过I2C接口控制,I2S接口传输音频。板载标准3.5mm耳机接口,可通过外接耳机播放音乐,同时也可通过双通道喇叭接口外接喇叭播放。板子左右两边有一个高质量MEMS硅麦克风,可以立体声录音。

产品特性

  • 供电电压:5V
  • 逻辑电压:3.3V
  • 音频编解码芯片:WM8960
  • 控制接口:I2C
  • 音频接口:I2S
  • DAC信噪比:98dB
  • ADC信噪比:94dB
  • 耳机驱动:40mW (16Ω@3.3V)
  • 扬声器驱动:1W per channel (8Ω BTL)

硬件资源

Wm8960 audio hat.png
LP、LN分别对应左扬声器的正、负极; RP、RN分别对应右扬声器的正、负极。

功能引脚 树莓派引脚(BCM) 描述
5V 5V 电源正(5V电源输入)
GND GND 电源地
SDA P2/SDA I2C数据输入
SCL P2/SDA I2C时钟输入
CLK P18 I2S位时钟输入
LRCLK P19 I2S帧时钟输入
DAC P21 I2S串行数据输出
ADC P20 I2S串行数据输入
BUTTON P17 自定义按键

树莓派使用

本产品例程只适用于树莓派官方系统(Raspbian)

安装驱动

如果你是国内用户,用官方源可能会比较慢,整个安装过程下载需要很长时间且可能会更新失败,因此可以换成阿里源:

sudo nano /etc/apt/sources.list

将官方源开头用#注释,并添加阿里源:

#deb-src http://archive.raspberrypi.org/debian/ stretch main
deb http://mirrors.aliyun.com/raspbian/raspbian/ buster main contrib non-free rpi
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ buster main contrib non-free rpi

屏蔽树莓派默认音频:

sudo nano /boot/config.txt

找到dtparam=audio=on,在最前面加上#号,将其改成#dtparam=audio=on,改成ctrl+c然后Y保存退出

更新软件源:

sudo apt-get update
sudo apt-get upgrade

检查内核版本:

uname -a
如果内核版本低于5.0(即树莓派系统是2020-05-27之前)下载如下驱动
git clone -b rpi-4.9.y https://github.com/waveshare/WM8960-Audio-HAT.git
如果是最新的下载如下:
git clone https://github.com/waveshare/WM8960-Audio-HAT
如上两条命令请不要都运行

安装WM8960驱动:

cd WM8960-Audio-HAT
#需要等待一定的时间
sudo ./install.sh 
sudo reboot

重启后运行如下命令看下驱动是否加载成功。

sudo dkms status
pi@raspberrypi:~ $ sudo dkms status 
wm8960-soundcard, 1.0, 4.19.58-v7l+, armv7l: installed

这里提供的是一个完成教程,如果安装多次还是无法出现驱动可以使用我们做好的镜像(版本2019-07-10,密码l9jz)使用。

检测声卡

  • 检查播放:aplay -l
pi@raspberrypi:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: wm8960soundcard [wm8960-soundcard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
  • 检查录音:arecord -l
pi@raspberrypi:~ $ arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: wm8960soundcard [wm8960-soundcard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0

录音播放测试

录播测试

sudo arecord -f cd -Dhw:0 | aplay -Dhw:0

程序运行后通过耳机或者喇叭会听到麦克风采集到的声音,注意喇叭不能开靠近麦克风否 则会导致共振产生啸叫。

录音

sudo arecord -D hw:0,0 -f S32_LE -r 16000 -c 2 test.wav

test.wav是录制生成的文件名。

播放

sudo aplay -Dhw:0 test.wav

播放刚刚录制的音频

调节音量

默认的音量是比较小的

sudo alsamixer

如果 WM8960 声卡没有设置为默认声卡则需要按 F6 选择声卡设备。
Wm8960 audio hat alsamixer.png
实际上右边还有很多可以调节的选项。

mpg123播放器

aplay只支持wav的音乐,实际上MP3格式的音乐会更加多,安装:

sudo apt-get install mpg123 
sudo mpg123 music.mp3

需要注意,这里的music.mp3需要替换成你的mp3音乐。

图形化smplayer

如果是命令行系统可以跳过,如果你的是桌面系统,安装:

sudo apt-get install smplayer

在界面中右键选择wm8960-soundcard为默认
Wm8960 audio hat smplayer.png
在菜单中打开smplayer软件,打开音频文件即可播放。(smplayer也可以播放视频)
Wm8960 audio hat smplayer2.png
Wm8960 audio hat smplayer3.png

程序控制

我们提供了一个简单的python控制例程。

  • 安装对应的库
sudo apt-get install libasound2-dev
git clone https://github.com/larsimmisch/pyalsaaudio
cd pyalsaaudio
sudo python setup.py build
sudo python setup.py install
  • 下载例程
wget http://wiki.diustou.com/w/upload/1/19/WM8960_Audio_HAT_Code.tar.gz
tar zxvf WM8960_Audio_HAT_Code.tar.gz
sudo chmod 777 -R WM8960_Audio_HAT_Code
  • 播放
sudo python playwav.py music.wav
  • 录音
sudo python recordwav.py out.wav



FAQ


问题:
耳机座子是几段的
答复:

耳机座子是4段国标(又称OMTP)耳机接口,如果是美标(又称CTIA)耳机可能会出现麦没有声音现象。


问题:
板子的晶振是多大的
答复:

24Mhz。


问题:
喇叭的功率
答复:

两个喇叭都是8欧姆5W的。



Icon-mail.png 联系 丢石头

我们的工作时间是: 09:00-18:00 (UTC+8 周一到周六)