Skip to main content

Introducción a Raspberry Pi

caution

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

connection picture1

Conexión Raspberry Pi Zero

connection picture2

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.

config example

  • 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

caution

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.

caution

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
note

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.

Loading Comments...