Introducción a Raspberry Pi
Esta wiki está escrita para ReSpeaker 2-Mics Pi HAT v2, para distinguir los dispositivos v1 y v2, consulte Cómo Distinguir las Revisiones de Hardware de ReSpeaker 2-Mics Pi HAT.
En el último Raspberry Pi OS, el método tradicional de instalación de controladores (para dispositivos v1) ya no está disponible y puede llevar a los siguientes problemas conocidos:
- El entorno de escritorio puede corromperse después de la instalación.
- El dispositivo ReSpeaker puede no ser detectado por
aplay/arecord.
Por lo tanto, hemos relanzado una nueva wiki sobre este problema. Si está usando el Raspberry Pi OS más moderno en lugar de versiones anteriores, siga estos pasos para hacer funcionar su ReSpeaker.
Instalación y configuración del controlador
1. Conectar ReSpeaker 2-Mics Pi HAT a Raspberry Pi
Monte ReSpeaker 2-Mics Pi HAT en su Raspberry Pi, asegúrese de que los pines estén correctamente alineados al apilar el ReSpeaker 2-Mics Pi HAT.
Conexión Raspberry Pi

Conexión Raspberry Pi Zero

2. Configurar el controlador en Raspberry Pi
Asegúrese de que esté ejecutando el último Raspberry Pi OS en su Pi. (actualizado el 2024.11.19)
Preparar para Raspberry Pi Zero W
## Install kernel
sudo apt install flex bison libssl-dev bc build-essential libncurses5-dev libncursesw5-dev linux-headers-6.6.51+rpt-rpi-v6
git clone --depth=1 --branch rpi-6.6.y https://github.com/raspberrypi/linux.git
## Make target directory
mkdir ~/tlv320aic3x_i2c_driver
cd ~/tlv320aic3x_i2c_driver
## Copy code
cp ~/linux/sound/soc/codecs/tlv320aic3x.c ~/tlv320aic3x_i2c_driver/
cp ~/linux/sound/soc/codecs/tlv320aic3x.h ~/tlv320aic3x_i2c_driver/
cp ~/linux/sound/soc/codecs/tlv320aic3x-i2c.c ~/tlv320aic3x_i2c_driver/
## Modify Makefile
nano Makefile
-------------------
obj-m += snd-soc-tlv320aic3x-i2c.o
snd-soc-tlv320aic3x-i2c-objs := tlv320aic3x.o tlv320aic3x-i2c.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
all:
$(MAKE) -C $(KDIR) M=$(PWD) modules
clean:
$(MAKE) -C $(KDIR) M=$(PWD) clean
install:
sudo cp snd-soc-tlv320aic3x-i2c.ko /lib/modules/$(shell uname -r)/kernel/sound/soc/codecs/
sudo depmod -a
-------------------
## Compile the driver
make
sudo make install
sudo modprobe snd-soc-tlv320aic3x-i2c
## Check logs
lsmod | grep tlv320
dmesg | grep tlv320
- Paso 1: Obtener Device Tree Source (DTS) para el ReSpeaker 2-Mics Pi HAT (V2.0), compilarlo e instalar el device tree overlay.
git clone https://github.com/Seeed-Studio/seeed-linux-dtoverlays.git
cd seeed-linux-dtoverlays/
make overlays/rpi/respeaker-2mic-v2_0-overlay.dtbo
sudo cp overlays/rpi/respeaker-2mic-v2_0-overlay.dtbo /boot/firmware/overlays/respeaker-2mic-v2_0.dtbo
echo "dtoverlay=respeaker-2mic-v2_0" | sudo tee -a /boot/firmware/config.txt
Nota: Si su versión del kernel es mayor que 4.0, no necesita agregar
dtoverlay=i2s-mmap.

- Paso 2: Reinicie su Pi.
sudo reboot
- Paso 3: Verifique si el dispositivo es detectado por
aplay/arecord.
La salida esperada para aplay debería ser:
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: vc4hdmi0 [vc4-hdmi-0], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: vc4hdmi1 [vc4-hdmi-1], device 0: MAI PCM i2s-hifi-0 [MAI PCM i2s-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: seeed2micvoicec [seeed2micvoicec], device 0: 1f000a4000.i2s-tlv320aic3x-hifi tlv320aic3x-hifi-0 [1f000a4000.i2s-tlv320aic3x-hifi tlv320aic3x-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
La salida esperada para arecord debería ser:
$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 2: seeed2micvoicec [seeed2micvoicec], device 0: 1f000a4000.i2s-tlv320aic3x-hifi tlv320aic3x-hifi-0 [1f000a4000.i2s-tlv320aic3x-hifi tlv320aic3x-hifi-0]
Subdevices: 1/1
Subdevice #0: subdevice #0
Donde la card 2 es el índice del ReSpeaker 2-Mics Pi HAT, dependiendo de su sistema este número puede diferir. Para acceder al ReSpeaker en este ejemplo, puede usar arecord -D plughw:2,0 o aplay -D plughw:2,0.
3. Configurar ajustes de sonido y ajustar el volumen con alsamixer
alsamixer es un programa mezclador de interfaz de usuario de terminal para la Advanced Linux Sound Architecture (ALSA) que se usa para configurar ajustes de sonido y ajustar el volumen.
alsamixer

Las teclas de flecha izquierda y derecha se usan para seleccionar el canal o dispositivo y las flechas arriba y abajo controlan el volumen para el dispositivo actualmente seleccionado. Salga del programa con ALT+Q, o presionando la tecla Esc. Más información
Por favor use F6 para seleccionar primero el dispositivo seeed-2mic-voicecard.
Resumen de uso
Para comenzar, clone el repositorio https://github.com/respeaker/mic_hat.git en su Raspberry Pi.
git clone https://github.com/respeaker/mic_hat.git
cd mic_hat
Todos los scripts de Python, mencionados en los ejemplos a continuación, se pueden encontrar dentro de este repositorio. Para instalar las dependencias necesarias, desde la carpeta del repositorio mic_hat, ejecute
sudo apt-get install portaudio19-dev libatlas-base-dev
pip3 install -r requirements.txt
LEDs APA102
Para usar los LEDs, necesita habilitar primero la interfaz SPI. Para habilitar la interfaz SPI, abra la herramienta de configuración de software de Raspberry Pi:
sudo raspi-config
Elija "3 Interface Options" -> "I4 SPI" para habilitar la interfaz SPI. Luego reinicie su Raspberry Pi.
sudo reboot
Cada LED APA102 integrado tiene un chip controlador adicional. El chip controlador se encarga de recibir el color deseado a través de sus líneas de entrada, y luego mantener este color hasta que se reciba un nuevo comando.
cd mic_hat
python3 interfaces/pixels.py
Botón de Usuario
Hay un Botón de Usuario integrado, que está conectado a GPIO_17.
El código de demostración del repositorio no está disponible para Raspberry Pi 5 debido a la incompatibilidad de RPI.GPIO. Pero hemos proporcionado un código de demostración alternativo para Raspberry Pi 5 usando la librería gpiozero.
Dispositivo que no es Raspberry Pi 5
Ejecute el script de ejemplo del repositorio que clonó en el Paso 4, y debería mostrar "on" cuando presione el botón:
$ python3 button.py
off
off
on
on
off
Dispositivo Raspberry Pi 5
Copie el siguiente código y guárdelo en ~/button.py:
from gpiozero import DigitalInputDevice
from time import sleep
def main():
pin = DigitalInputDevice(pin=17, pull_up=True)
try:
while True:
print("on" if pin.value == 1 else "off")
sleep(1)
finally:
pin.close()
if __name__ == '__main__':
main()
También debería mostrar "on" cuando presione el botón:
$ python3 ~/button.py
off
on
on
off
on
off
No funciona en un entorno virtual, necesita salir de él primero:
deactivate
python3 ~/button.py
Grabar sonido con Python
Usamos la librería PyAudio de python para grabar sonido con Python.
Primero, ejecute el siguiente script para obtener el número de índice del dispositivo ReSpeaker:
cd mic_hit
python3 recording_examples/get_device_index.py
Verá el ID del dispositivo como se muestra a continuación.
Input Device id 1 - seeed2micvoicec: 1f000a4000.i2s-tlv320aic3x-hifi tlv320aic3x-hifi-0 (hw:2,0)
Para grabar el sonido, abra el archivo recording_examples/record.py con nano, vim u otro editor de texto y cambie RESPEAKER_INDEX = 2 al número de índice de ReSpeaker en su sistema. Luego ejecute el script de python record.py para hacer una grabación:
python3 recording_examples/record.py
Si quiere extraer datos del canal 0 de 2 canales, eche un vistazo al contenido de record_one_channel.py. Para otro canal X, por favor cambie [0::2] a [X::2].
python3 recording_examples/record_one_channel.py
Para reproducir las muestras grabadas puede usar la utilidad del sistema aplay, por ejemplo
aplay -f cd -D hw:2,0 output.wav # for Stereo sound
aplay -D plughw:2,0 output_one_channel.wav #for Mono sound from one channel
Alternativamente puede usar el script recording_examples/play.py para reproducir los archivos .wav con PyAudio.
python3 recording_examples/play.py path-to-wav-file
¡Asegúrese de especificar el índice correcto del dispositivo de salida en play.py - de lo contrario PyAudio se congelará!
Soporte Técnico y Discusión del Producto
¡Gracias por elegir nuestros productos! Estamos aquí para brindarle diferentes tipos de soporte para asegurar que su experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para atender diferentes preferencias y necesidades.