手动升级树莓派EEPROM固件教程

树莓派官方提供的EEPROM的相关说明:

https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-boot-eeprom

树莓派官方提供的EEPROM固件版本及说明:

https://github.com/raspberrypi/rpi-eeprom/blob/master/firmware-2712/release-notes.md

1. 查看eerpom和 bootloader 版本

vcgencmd bootloader_version

结果显示如下:

pi@raspberrypi:~ $ vcgencmd bootloader_version
2024/05/17 12:29:43
version 72caf66729df313801bcefe9b1ff7099c71bb5ce (release)
timestamp 1715945383
update-time 1716260490
capabilities 0x0000007f

2. 下载最新的EEPROM固件版本文件,推荐pieeprom-2024-05-17版本,并拷贝到树莓派目录中

3. 执行以下命令升级eeprom文件

sudo rpi-eeprom-config --edit pieeprom-2024-05-17.bin

4. 升级完后,重启树莓派再次查看看EEPROM版本,确认是否升级成功

ps.在重启前,可以通过 sudo rpi-eeprom-update -r 取消升级操作

Ubuntu系统安装树莓派启用配置工具raspi-config

第一步:安装更新系统安装包

sudo apt update && sudo apt upgrade

第二步:安装依赖包

sudo apt install whiptail parted lua5.1 alsa-utils psmisc

第三步:先下载raspi-config deb包

找到最新的deb 包并下载:http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/pool/main/r/raspi-config/

wget http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/pool/main/r/raspi-config/raspi-config_20240313_all.deb 

第四步:在ubuntu系统下安装raspi-config deb包

sudo dpkg -i raspi-config_20240313_all.deb

第五步:在ubuntu系统下启动raspi-config工具

sudo raspi-config

树莓派5开发指南(Part2)

关于树莓派5

Raspberry Pi 5单板计算机的速度是其他几代产品的两至三倍。Pi 5是一款全尺寸Raspberry Pi计算机,内部采用硅开发而成。该器件为外部UAS驱动器和其他高速外设提供更快传输速度。两个4通道MIPI接口最多支持两个摄像头或显示器的任意组合。同时,通过支持SD104高速模式,SD卡峰值性能加倍。Pi 5单板计算机支持单通道PCI Express 2.0接口,可连接更高带宽外设。

Raspberry Pi 5有4GB和8GB型号可供选择,采用双频带802.11ac Wi-Fi®和 BLUETOOTH® 5.0 /Bluetooth低功耗 (BLE) 连接。

树莓派5开发指南:https://www.raspberrypi.com/documentation/computers/raspberry-pi-5.html

PCIE接口

Raspberry Pi 5是首款采用单通道PCI Express(PCIe)连接器的Raspberrry Pi产品。这连接器是一个FFC连接器,体积小,成本低。此连接器可提供 Gen 2.0 x1的接口,用于快速外围设备。

该连接器采用16pin、0.5mm间距的FFC连接器,其定义如下图:

注意:在所示的Raspberry Pi 5垂直的FFC连接器上,触针位于右侧。16Pin FFC连接器通过引脚1和2提供5V电源。这些引脚的额定电流均为500mA(总电流为1A)。

官方PCIe连接的建议:
1.建议FPC软排线长度为50mm或更短。
2.FPC排线的PCIe差分对阻抗控制为90R+/-10%
3.注意FPC排线的方向,错误的排线方向和线序可能会损坏

使能PCIe

默认情况下,PCIe连接器未启用。要启用它,您应该将以下选项添加到/boot/firmware/config.txt并重新启动。

# Enable the PCIe External connector.
dtparam=pciex1

同样也可以将dtparam=nvme添加到/boot/firmware/config.txt文件中来启动PCIe

注意:目前树莓派5不支持枚举switch后面的PCIe设备。

PCIe Gen 3.0

目前这个连接已被证实可以提供PCIe Gen 2.0的速率(5 GT/sec),但如果在/boot/firmware/config.txt中添加以下行,则可以将其强制设置为Gen 3.0的速率(10 GT/s)。

# Enable the PCIe external connector
dtparam=pciex1

# Force Gen 3.0 speeds
dtparam=pciex1_gen=3

然后应该重新启动Raspberry Pi,使这些设置生效

注意:树莓派官方并未对Gen3.0的速度认可,在Gen3.0速度下与PCIe设备的连接可能不稳定。

查看PCIe 设备

可以通过lspci命令,查看PCIe设备是否正常识别

lspci

可以通过lspci -vvv命令查看PCIe设备的相关信息

lspci -vvv 

找到使能的PCIe设备的相关信息,LnkCap代表该设备支持的PCIe最大速率能力,比如上图中设备LnkCap支持能力为PCIE3.0(8GT/s),宽度x4;LnkSta代表实际PCIe链路的状态是PCIE3.0(8GT/s),宽度x1。

注意:树莓派5的PCIE接口最大能力为PCIE3.0(8GT/s),宽度x1,但官方不承诺PCIE3.0能稳定工作

使用 PCIe 启动树莓派

将NVME SSD硬盘安装在树莓派5上,并按照之前的步骤启用PCIe配置以及重新启动后,可以通过命令查看PCIe连接和NVMe磁盘是否正常工作。

通过ls命令查看nvme设备是否正常识别

这样nvme SSD就能在树莓派上正常使用了,但树莓派还不能从NVMe SSD硬盘上启动OS系统。如果您希望启用引导支持,则需要更改引导加载程序配置中的BOOT_ORDER。按照以下命令编辑EEPROM配置

sudo rpi-eeprom-config --edit

并将BOOT_ ORDER行更改为如下

BOOT_ORDER=0xf416

保存更改后,重新启动Raspberry Pi以更新EEPROM。

注意,需要确定先在nvme SSD上烧录了树莓派os系统

NVMe SSD 测速

  1. hdparm工具
 sudo apt-get install hdparm
sudo hdparm -tT /dev/nvme0n1

树莓派5开发指南(Part1)

关于树莓派5

Raspberry Pi 5单板计算机的速度是其他几代产品的两至三倍。Pi 5是一款全尺寸Raspberry Pi计算机,内部采用硅开发而成。该器件为外部UAS驱动器和其他高速外设提供更快传输速度。两个4通道MIPI接口最多支持两个摄像头或显示器的任意组合。同时,通过支持SD104高速模式,SD卡峰值性能加倍。Pi 5单板计算机支持单通道PCI Express 2.0接口,可连接更高带宽外设。

Raspberry Pi 5有4GB和8GB型号可供选择,采用双频带802.11ac Wi-Fi®和 BLUETOOTH® 5.0 /Bluetooth低功耗 (BLE) 连接。

树莓派5开发指南:https://www.raspberrypi.com/documentation/computers/raspberry-pi-5.html

风扇FAN接口

树莓派5默认是被设计用于处理典型的客户端工作负载的使用场景,树莓派5是无需外壳和主动冷却的。但是对于一些较重的负载的应用场景,树莓派5也提供两种散热选择,这两种选择都是通过插入位于板右上角40针GPIO接头和USB 2端口之间的四针JST PWM风扇连接器。

风扇连接器采用1mm间距的4P针脚的JST座接口,定义如下:

| 1 | +5V
| 2 | PWM
| 3 | GND
| 4 | Tach

两个可用的官方配件都由Raspberry Pi固件主动管理。随着树莓派的温度升高,风扇的反应如下:

低于50°C时,风扇根本不旋转(0%速度)

在50°C时,风扇以低速(30%的速度)打开

在60°C时,风扇速度增加到中等速度(50%的速度)

在67.5°C时,风扇速度增加到高速(70%的速度)

在75°C时,风扇增加到全速(100%速度)

温度范围与风扇速度的映射也适用于温度下降,滞后5°C;当温度降至低于上述每个阈值5°C时,风扇转速降低

注意:风扇电压5V,最大电流1.6A

实时时钟Real Time Clock (RTC)接口

树莓派5包括一个RTC模块。这可以通过位于USB-C电源连接器右侧的板上的J5(BAT)连接器由电池供电。

J5 RTC电池连接器座

官方不建议使用锂电池作为RTC时钟的备用电池,官方建议使用可充电的锂锰硬币电池。当板的主电源断开时,这适用于为Raspberry Pi 5 RTC供电,断电电流以个位数µa为单位,保持时间可以以月为单位测量。

使用RTC电池后玩家可以设置唤醒警报,将电路板切换到非常低功率的状态(约3mA)。当达到报警时间时,电路板将重新通电。这对于延时图像等周期性工作非常有用。

要支持唤醒警报的低功耗模式,玩家应该编辑引导加载程序配置:

sudo -E rpi-eeprom-config --edit

然后添加以下两行代码:

POWER_OFF_ON_HALT=1
WAKE_ON_GPIO=0

玩家可以使用以下命令测试功能:

echo +600 | sudo tee /sys/class/rtc/rtc0/wakealarm
sudo halt

执行命令后,

这将使电路板停止到非常低功率的状态,然后在10分钟后唤醒并重新启动。
RTC还提供引导时间,例如在系统dmesg日志中看到:

[    1.295799] rpi-rtc soc:rpi_rtc: setting system clock to 2023-08-16T15:58:50 UTC (1692201530)

​如果您没有通过NTP获取时间的互联网连接,RTC这可能会很有用。

注意:即使J5连接器没有连接RTC备用电池,RTC功能依然可用

启动RTC充电电池的涓流充电功能Enabling trickle charging

注意:只有使用的是充电RTC电池才能使用这个功能,请启动充电前再三确认电池是否可以充电,否则将会损坏电池或者树莓派

默认情况下,请禁用电池的涓流充电。这里有一些sysfs文件显示了当前的涓流充电电压和限制:

/sys/devices/platform/soc/soc:rpi_rtc/rtc/rtc0/charging_voltage:0
/sys/devices/platform/soc/soc:rpi_rtc/rtc/rtc0/charging_voltage_max:4400000
/sys/devices/platform/soc/soc:rpi_rtc/rtc/rtc0/charging_voltage_min:1300000

如果使能RTC电池充电,请将rtc_bbat_vchg添加到/boot/ffirmware/config.txt中:

dtparam=rtc_bbat_vchg=3000000

​然后重新启动,将看到以下信息:

/sys/devices/platform/soc/soc:rpi_rtc/rtc/rtc0/charging_voltage:3000000
/sys/devices/platform/soc/soc:rpi_rtc/rtc/rtc0/charging_voltage_max:4400000
/sys/devices/platform/soc/soc:rpi_rtc/rtc/rtc0/charging_voltage_min:1300000

RTC充电电池将进行涓流充电。从config.txt中删除dtparam行可以停止涓流充电。

串口UART接口

树莓派5提供了一个专用的调试UART连接器。它的最大波特率为921,600bps,可以使用EEPROM参数进行配置。它始终处于活动状态并启用,并提供对早期启动和固件信息的直接访问;以及引导后的Linux控制台。

J6 3P_UART接口

UART连接器是一个与Raspberry Pi树莓派调试连接器规范兼容的三P针座。调试探针提供了一根端接在适当的JST连接器中的线缆,允许您连接到UART。

默认情况下,UART接口在/dev/ttyAMA0(别名为/dev/serial0)上提供115200波特8N1连接。电平兼容1.8V和3.3V,请不要超过3.3V电平

创建串行控制台Creating a serial console

与以往Raspberry Pi树莓派型号不同,您可以在GPIO14和15上启用串行控制台,从raspi配置启用串行控制台将在Raspberrry Pi 5上/dev/ttyAMA0的新UART连接器上启用串行主机。

算力提升2.5倍,支持PCIe的树莓派5

关于树莓派5

Raspberry Pi 5单板计算机的速度是其他几代产品的两至三倍。Pi 5是一款全尺寸Raspberry Pi计算机,内部采用硅开发而成。该器件为外部UAS驱动器和其他高速外设提供更快传输速度。两个4通道MIPI接口最多支持两个摄像头或显示器的任意组合。同时,通过支持SD104高速模式,SD卡峰值性能加倍。Pi 5单板计算机支持单通道PCI Express 2.0接口,可连接更高带宽外设。

Raspberry Pi 5有4GB和8GB型号可供选择,采用双频带802.11ac Wi-Fi®和 BLUETOOTH® 5.0 /Bluetooth低功耗 (BLE) 连接。

新老产品特性对比

硬件概述

PCB正面布局

PCB背面布局

结构外形尺寸

主芯片

树莓派5代是采用Broadcom 新推出的一款四核 64 位 Arm Cortex-A76 处理器:BCM2712 ,主频为 2.4GHz,每核二级缓存为 512KB,共享三级缓存为 2MB。Cortex-A76 在微体系结构上比 Cortex-A72 进步了三代,更好的制造工艺使 Raspberry Pi 5 的速度更快,工作功耗更低。

RP1协处理器

RP1是树莓派5的I/O控制器,由树莓派提供RP2040微控制器的同一团队设计,并像RP2040一样在台积电成熟的40LP工艺上实现。它拥有两个USB 3.0和两个USB 2.0接口;一个千兆以太网控制器;两个用于相机和显示器的四通道MIPI收发器;模拟视频输出;3.3V通用I/O(GPIO);以及通常的GPIO多路低速接口(UART、SPI、I2C、I2S和PWM)。四通道PCI Express 2.0接口提供16Gb/s链接回BCM2712。

RP1早在2016年就开始开发,是树莓派实施持续时间最长、最复杂、也最昂贵(1500万美元)的项目。多年来,随着需求的变化,它经历了重大演变:树莓派上使用的C0步骤是芯片的第三次重大修订。虽然其接口与BCM2711的接口在细节上有所不同,但从功能角度来看,它们被设计为非常相似,确保了与早期树莓派设备的高度兼容性。

前几树莓派建立在整体AP架构上:虽然一些外围功能由外部设备(树莓派4上的Via Labs VL805 USB控制器和集线器以及早期产品上的Microchip LAN951x和LAN7515 USB集线器和以太网控制器芯片)提供,但几乎所有的I/O功能都集成到AP本身中。树莓派在早期就意识到,随着将AP迁移到逐渐更新制程工艺节点,这种方法最终在技术上和经济上都是不可持续的。

因此,树莓派5现在建立在小芯片(Chiplet)架构上。此处,AP只提供主要的快速数字功能、SD卡接口(由于电路板布局原因)和最快的接口(SDRAM、HDMI和PCI Express)。所有其他I/O功能都卸载到单独的I/O控制器上,在更旧、更便宜的制程工艺节点上实现,并通过PCI Express连接到AP。

电源芯片DA9091

电源芯片方面,搭载的是瑞萨(Renesas)DA9091“Gilmour”电源管理IC(PMIC),它集成了八个独立的开关模式电源,以产生电路板所需的各种电压,包括四相核心电源,能够提供20A的电流,为Cortex-A76核心和BCM2712中的其它数字逻辑芯片供电。

与BCM2712一样,DA9091是与爱丁堡的Renesas团队多年共同开发努力的产物,包括两个重要的功能:一是实时时钟(RTC),可由外部超级电容或可充电锂锰电池供电;另一个则是PC风格的电源按钮,支持硬断和软断电源和开机。

其他接口

1、在原有硬件接口上,通过 FPC 连接器引出的 PCIe 2.0 接口,支持高速外设使用;

2、可支持 5Gbps 同步运行的 USB 3.0 × 2;

3、2 × 4-lane MIPI DSI/CSI 接口,兼容 CSI-2 摄像头和 DSI 显示器;

4、支持高速 SDR104 模式的 Micro SD 卡插槽;

5、板载 RTC 电池接口,可接入外置电池供电(需单独购买),以及如下图的布局设计:

开发指南:https://www.raspberrypi.com/documentation/computers/getting-started.html

https://www.raspberrypi.com/documentation/computers/raspberry-pi-5.html

树莓派系统OS:https://www.raspberrypi.com/software/

树莓派配置文件Configuration说明:https://www.raspberrypi.com/documentation/computers/configuration.html

结构文件:

树莓派4B gpio readall 出现Oops – unable to determine board type… model

树莓派使用GPIO接口是基于wiringPi的;官网链接:http://wiringpi.com/

1:使用GPIO时出现问题的界面

pi@raspberrypi:~ $ gpio -v
gpio version: 2.50
Copyright (c) 2012-2018 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty

Raspberry Pi Details:
  Type: Unknown17, Revision: 01, Memory: 0MB, Maker: Sony 
  * Device tree is enabled.
  *–> Raspberry Pi 4 Model B Rev 1.1
  * This Raspberry Pi supports user-level GPIO access.
pi@raspberrypi:~ $ gpio readall
Oops – unable to determine board type… model: 17
2:问题是wiringPi版本为识别树莓派4B版本类型;需要按照官网指引升级版本如下:

打开树莓派终端输入:

cd /tmp
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
然后再:

pi@raspberrypi:/tmp $ gpio readall

使用RaspiCompute Stick为树莓派CM4烧录系统

产品简介

购买链接:https://item.taobao.com/item.htm?id=644904714813

前言

Raspberry Pi Compute Module 4(CM4)模块是基于Raspberry Pi 4 Model B性能的产品,但其外形尺寸较小,非常适合嵌入到没有大量经典Raspberry Pi的产品或项目中。对于深度嵌入的应用程序,您可以以紧凑的形式获得Raspberry Pi 4的所有计算能力。CM4采用了相同的四核ARM Cortex-A72处理器、双视频输出、千兆以太网、UART、I2C、SPI、I2S和一些PWM。

本产品Raspi Compute Stick是基于Raspberry Pi CM4的扩展板底板。为CM4模块提供多种扩展接口,包括升级接口、GPIO扩展、CSI、HDMI、TF、USB、风扇等等,并且扩展底板尺寸小巧轻薄可适应更多使用场景。

注:通电前请确认CM4模块正确的安装在扩展板上

产品特性

§ 树莓派CM4模块接口

§ 1 x 全尺寸 HDMI 2.0 接口

§ 1x USB-A: OTG USB(用于升级更新Compute Module 4模块)

§ 1x USB-AF: USB 2.0 High Speed接口

§ 1x USB-C: Type-c电源接口 5V/3A

§ TF Card接口: microSD卡插槽 (只支持不包含eMMC的CM4模块)

§ GPIO: 20Pin GPIO扩展接口(定义见丝印标)

§ 1x 风扇接口r: 4P/1.25mm PWM风扇控制接口

§ 1 x CSI 摄像头 FPC connectors (22-pin 0.5 mm pitch cable)

§ 1x Boot Switch系统启动切换接口(升级系统时使用)

§ 1x Reboot Button重启按键 

§ 工作温度: 0℃~80℃

§ 尺寸: 70x45mm

注意: USB-A 和 USB-AF/USB-接口不能同时使用。USB-AF 和USB-C供电接口可以同时使用

产品接口

使用底板为树莓派CM4烧录系统

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

将CM4安装到底板上

插上TF卡,并将底板启动开关拨至左侧如下图所示
注意:带emmc的CM4模块是不需要插TF卡的,TF卡只针对Lite型号

将底板插入电脑U口,上电后我们可以看到win10设备里面已经识别到BCM2711 Boot

打开rpiboot软件,树莓派USB驱动会自动安装,初始化后电脑会识别emmc为U盘

接下来就和普通树莓派烧录系统一样了,用Win32DiskImager烧录系统

烧录完系统我们把掉USB,然后断电,拔回BOOT开关,插入电源开机,这里我们发现一个问题,开机后无法使用USB,这是为什么呢,难道是之前哪里出现问题了?其实不是,查阅官方手册,我们发现CM4为了降低功耗,默认关闭了USB功能此时我们只需要按照手册上的操作,在配置文件中写入上述内容,我们将第1步的条线接回,插入电脑开机,找到系统中的config.txt,加入上述内容,保存退出

dtoverlay=dwc2,dr_mode=host

此时我们再拔下底板再通过type-c供电,树莓派可以正常使用了

Raspi Voice HAT-配置使用教程

产品简介

前言

Raspi Voice HRaspi Voice HAT是专为AI和语音应用设计的Raspberry Pi双麦克风扩展板。 这意味着您可以构建一个集成Amazon Amazona语音服务,Google助手,百度AI等的功能更强大,更灵活的语音产品。

该板是基于树莓派而设计的音频模块,采用WM8960低功耗立体声编解码器,通过I2C接口控制,I2S接口传输音频。 电路板两侧有两个麦克风采集声音,还提供12个APA102 RGB LED和1个板载扬声器,并提供1个用户按钮和1个I2C接口,用于扩展应用程序。

此外,板载3.5mm音频插孔或JST 2.0扬声器输出均可用于音频输出,可通过外接耳机播放音乐,同时也可通过双通道喇叭接口外接喇叭播放。板子左右两边有一个高质量MEMS硅麦克风,可以立体声录音。

产品特性

  • 供电电压:5V
  • 逻辑电压:3.3V
  • 音频编解码芯片:WM8960
  • 控制接口:I2C
  • 音频接口:I2S
  • 扩展接口:1x I2C,1x按键
  • 电源接口:1xType-C 接口(5V)
  • LED接口:12个APA102可编程RGB LED,连接到SPI接口
  • DAC信噪比:98dB
  • ADC信噪比:94dB
  • 耳机驱动:40mW (16Ω@3.3V)
  • 扬声器驱动:1W per channel (8Ω BTL)(板载mono扬声器)

硬件资源


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

功能引脚树莓派引脚(BCM)描述
5V5V电源正(5V电源输入)
GNDGND电源地
SDAP3/GPIO2I2C数据输入
SCLP5/GPIO3I2C时钟输入
CLKP12/GPIO18I2S位时钟输入
LRCLKP35/GPIO19I2S帧时钟输入
DACP40/GPIO21I2S串行数据输出
ADCP38/GPIO20I2S串行数据输入
BUTTONP29/GPIO5或P31/GPIO6自定义按键

树莓派使用

本产品例程只适用于树莓派官方系统(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 apt-get update
sudo apt-get upgrade

检查内核版本:

请使用树莓派官方内核版本为5.4以上的官方系统(Kernel version:5.4)
git clone --depth=1 https://github.com/respeaker/seeed-voicecard

安装WM8960驱动:

cd seeed-voicecard
#需要等待一定的时间
sudo ./install.sh
reboot

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

检测声卡

  • 检查播放:aplay -l
pi@raspberrypi:~/seeed-voicecard $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
  Subdevices: 8/8
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
  Subdevice #4: subdevice #4
  Subdevice #5: subdevice #5
  Subdevice #6: subdevice #6
  Subdevice #7: subdevice #7
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: seeed2micvoicec [seeed-2mic-voicecard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
  • 检查录音:arecord -l
pi@raspberrypi:~/seeed-voicecard $ arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: seeed2micvoicec [seeed-2mic-voicecard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
pi@raspberrypi:~/seeed-voicecard $

录音播放测试

录播测试

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

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

录音

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

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

播放

sudo aplay -Dhw:1 test.wav

播放刚刚录制的音频

调节音量

默认的音量是比较小的

sudo alsamixer

如果 WM8960 声卡没有设置为默认声卡则需要按 F6 选择声卡设备。

实际上右边还有很多可以调节的选项。

使用板子上的彩色LED灯

安装spidev

sudo pip install spidev

下载程序并解压

cd Voice_HAT
sudo python pixels.py

使用按键

板上的按键默认使用GPIO6(可通过跳线更改为GPIO5).

sudo pip install rpi.gpio    // install RPi.GPIO library
nano button.py               // copy the following code in button.py
编辑button.py文件,添加以下代码并保存
import RPi.GPIO as GPIO
import time
 
BUTTON = 6
 
GPIO.setmode(GPIO.BCM)
GPIO.setup(BUTTON, GPIO.IN)
 
while True:
    state = GPIO.input(BUTTON)
    if state:
        print("off")
    else:
        print("on")
    time.sleep(1)

运行程序后,可以从打印中看到按键的状态

pi@raspberrypi:~ $ python button.py
off
off
on
on
off

Raspi Voice HAT-搭建自己的亚马逊智能音箱Amazon Echo

产品简介

前言

Raspi Voice HAT是专为AI和语音应用设计的Raspberry Pi双麦克风扩展板。 这意味着您可以搭建自己的亚马逊智能音箱Amazon Echo。

该板是基于树莓派而设计的音频模块,采用WM8960低功耗立体声编解码器,通过I2C接口控制,I2S接口传输音频。 电路板两侧有两个麦克风采集声音,还提供12个APA102 RGB LED和1个板载扬声器,并提供1个用户按钮和1个I2C接口,用于扩展应用程序。

此外,板载3.5mm音频插孔或JST 2.0扬声器输出均可用于音频输出,可通过外接耳机播放音乐,同时也可通过双通道喇叭接口外接喇叭播放。板子左右两边有一个高质量MEMS硅麦克风,可以立体声录音。

产品特性

  • 供电电压:5V
  • 逻辑电压:3.3V
  • 音频编解码芯片:WM8960
  • 控制接口:I2C
  • 音频接口:I2S
  • 扩展接口:1x I2C,1x按键
  • 电源接口:1xType-C 接口(5V)
  • LED接口:12个APA102可编程RGB LED,连接到SPI接口
  • DAC信噪比:98dB
  • ADC信噪比:94dB
  • 耳机驱动:40mW (16Ω@3.3V)
  • 扬声器驱动:1W per channel (8Ω BTL)(板载mono扬声器)

硬件资源


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

功能引脚树莓派引脚(BCM)描述
5V5V电源正(5V电源输入)
GNDGND电源地
SDAP2/SDAI2C数据输入
SCLP2/SDAI2C时钟输入
CLKP18I2S位时钟输入
LRCLKP19I2S帧时钟输入
DACP21I2S串行数据输出
ADCP20I2S串行数据输入
BUTTONP29或P31自定义按键

树莓派使用

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

安装配置

在树莓派上安装Alexa Voice Service 

我们需要在Raspberry Pi上安装Amazon Alexa语音服务(Alexa Voice Service)。请参阅此处的完整说明和安装方法。

https://developer.amazon.com/en-US/docs/alexa/avs-device-sdk/raspberry-pi.html

AVS中文安装教程:

https://aws.amazon.com/cn/blogs/china/raspberry-alexa/

开启语音服务Alexa Voice Service

sudo amixer cset numid=3 1

和 Alexa交流

You can now talk to Alexa by simply using the wake word “Alexa”. Try the following:

  • Say “Alexa“, then wait for the beep. Now say “what's the time?
  • Say “Alexa“, then wait for the beep. Now say “what's the weather in Seattle? “

Raspi Voice HAT-AI智能音箱2-Mic麦克风语音识别阵列适用树莓派2/3/4B

产品简介

前言

Raspi Voice HAT是专为AI和语音应用设计的Raspberry Pi双麦克风扩展板。 这意味着您可以构建一个集成Amazon Amazona语音服务,Google助手,百度AI等的功能更强大,更灵活的语音产品。

该板是基于树莓派而设计的音频模块,采用WM8960低功耗立体声编解码器,通过I2C接口控制,I2S接口传输音频。 电路板两侧有两个麦克风采集声音,还提供12个APA102 RGB LED和1个板载扬声器,并提供1个用户按钮和1个I2C接口,用于扩展应用程序。

此外,板载3.5mm音频插孔或JST 2.0扬声器输出均可用于音频输出,可通过外接耳机播放音乐,同时也可通过双通道喇叭接口外接喇叭播放。板子左右两边有一个高质量MEMS硅麦克风,可以立体声录音。

产品特性

  • 供电电压:5V
  • 逻辑电压:3.3V
  • 音频编解码芯片:WM8960
  • 控制接口:I2C
  • 音频接口:I2S
  • 扩展接口:1x I2C,1x按键
  • 电源接口:1xType-C 接口(5V)
  • LED接口:12个APA102可编程RGB LED,连接到SPI接口
  • DAC信噪比:98dB
  • ADC信噪比:94dB
  • 耳机驱动:40mW (16Ω@3.3V)
  • 扬声器驱动:1W per channel (8Ω BTL)(板载mono扬声器)

硬件资源


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

功能引脚树莓派引脚(BCM)描述
5V5V电源正(5V电源输入)
GNDGND电源地
SDAP3/GPIO2I2C数据输入
SCLP5/GPIO3I2C时钟输入
CLKP12/GPIO18I2S位时钟输入
LRCLKP35/GPIO19I2S帧时钟输入
DACP40/GPIO21I2S串行数据输出
ADCP38/GPIO20I2S串行数据输入
BUTTONP29/GPIO5或P31/GPIO6自定义按键

树莓派使用

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

脚本自动安装

请使用树莓派官方内核版本为5.4以上的官方系统(Kernel version:5.4

执行以下脚本自动安装驱动:(包含demo)

git clone https://github.com/u-geek/RaspiVoiceHAT

cd RaspiVoiceHAT

sudo ./setup.sh
             ┌───────┤ AOIDE RaspiVoiceHAT setup tools(5.4.51) ├────────┐
             │ RaspiVoiceHAT Config Tool.                               │
             │                                                          │
             │                     1 Install Driver                     │
             │                     2 Remove Driver                      │
             │                     3 Demo                               │
             │                     E Exit                               │
             │                                                          │
             │                                                          │
             │                                                          │
             │                                                          │
             │                                                          │
             │                                                          │
             │                                                          │
             │                                                          │
             │              <Ok>                  <Exit>                │
             │                                                          │
             └──────────────────────────────────────────────────────────┘

手动安装驱动

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

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 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

检测声卡

  • 检查播放: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 选择声卡设备。

实际上右边还有很多可以调节的选项。

mpg123播放器

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

sudo apt-get install mpg123 
sudo mpg123 music.mp3

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

图形化smplayer

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

sudo apt-get install smplayer

在界面中右键选择wm8960-soundcard为默认

在菜单中打开smplayer软件,打开音频文件即可播放。(smplayer也可以播放视频)

程序控制

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

  • 安装对应的库
sudo apt-get install libasound2-devgit 
clone https://github.com/larsimmisch/pyalsaaudio
cd pyalsaaudio
sudo python setup.py build
sudo python setup.py install
  • 下载例程
wget http://www.waveshare.net/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