Primeros Pasos con Raspberry Pi
Esta wiki está escrita para ReSpeaker 2-Mics Pi HAT v2.
Para distinguir entre los dispositivos v1 y v2, por favor consulta:
Cómo distinguir las revisiones de hardware del ReSpeaker 2-Mics Pi HAT.
En la versión más reciente de Raspberry Pi OS, el método tradicional de instalación del driver (para el dispositivo v1) ya no está disponible y puede provocar los siguientes problemas conocidos:
- El entorno de escritorio puede dañarse después de la instalación.
- El dispositivo ReSpeaker podría no ser detectado por
aplay
/arecord
.
Por ello, hemos publicado una nueva wiki sobre este tema.
Si estás utilizando una versión moderna de Raspberry Pi OS en lugar de versiones anteriores, sigue estos pasos para hacer que tu ReSpeaker funcione correctamente.
Instalación y configuración del driver
1. Conectar el ReSpeaker 2-Mics Pi HAT a la Raspberry Pi
Monta el ReSpeaker 2-Mics Pi HAT sobre tu Raspberry Pi, asegurándote de que los pines estén correctamente alineados al apilar el módulo.
Conexión en Raspberry Pi
Conexión en Raspberry Pi Zero
2. Configurar el driver en la Raspberry Pi
Asegúrate de estar utilizando la versión más reciente de Raspberry Pi OS en tu dispositivo.
(actualizado el 19 de noviembre de 2024)
Prepara 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: Obtén el archivo Device Tree Source (DTS) para el ReSpeaker 2-Mics Pi HAT (V2.0), compílalo e instala el overlay del device tree.
curl https://raw.githubusercontent.com/Seeed-Studio/seeed-linux-dtoverlays/refs/heads/master/overlays/rpi/respeaker-2mic-v2_0-overlay.dts -o respeaker-2mic-v2_0-overlay.dts
dtc -I dts respeaker-2mic-v2_0-overlay.dts -o respeaker-2mic-v2_0-overlay.dtbo
sudo dtoverlay respeaker-2mic-v2_0-overlay.dtbo
sudo cp respeaker-2mic-v2_0-overlay.dtbo /boot/firmware/overlays
- Paso 2: Edita el archivo
/boot/firmware/config.txt
y agrega las siguientes líneas:
dtoverlay=respeaker-2mic-v2_0-overlay
dtoverlay=i2s-mmap
Nota: Si tu versión del kernel es superior a la 4.0, no necesitas agregar
dtoverlay=i2s-mmap
.
- Paso 3: Reinicia tu Raspberry Pi.
sudo reboot
- Paso 4: Verifica si el dispositivo es detectado mediante
aplay
oarecord
.
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 sálida 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 card 2
es el índice del ReSpeaker 2-Mics Pi HAT. Dependiendo de tu sistema, este número puede variar. Para acceder al ReSpeaker en este ejemplo, puedes usar arecord -D plughw:2,0
o aplay -D plughw:2,0
.
3. Configurar el audio y ajustar el volumen con alsamixer
alsamixer
es una interfaz de mezcla en terminal para ALSA (Advanced Linux Sound Architecture), usada para configurar el audio y ajustar el volumen.
alsamixer
Usa las teclas de flecha izquierda/derecha para seleccionar el canal o dispositivo, y flecha arriba/abajo para ajustar el volumen del dispositivo seleccionado. Para salir del programa presiona ALT+Q o la tecla Esc. Más información
Por favor, presiona F6 para seleccionar primero el dispositivo seeed-2mic-voicecard
.
Resumen de uso
Para comenzar, clona el repositorio en tu Raspberry Pi:
git clone https://github.com/respeaker/mic_hat.git
cd mic_hat
Todos los scripts en Python mencionados en los ejemplos se encuentran dentro de este repositorio. Para instalar las dependencias necesarias desde la carpeta del repositorio, ejecuta:
sudo apt-get install portaudio19-dev libatlas-base-dev
pip3 install -r requirements.txt
LEDs APA102
Para usar los LEDs, primero necesitas habilitar la interfaz SPI.
Para ello, abre la herramienta de configuración de Raspberry Pi:
sudo raspi-config
Selecciona la opción: "3 Interface Options" -> "I4 SPI" para habilitar SPI. Luego, reinicia tu Raspberry Pi:
sudo reboot
Cada LED APA102 incorporado tiene un chip controlador adicional. Este chip se encarga de recibir el color deseado a través de sus líneas de entrada y mantener ese color hasta recibir un nuevo comando.
cd mic_hat
python3 interfaces/pixels.py
Botón de Usuario
El módulo incluye un botón de usuario integrado, conectado al pin GPIO_17.
El código de demostración del repositorio no es compatible con Raspberry Pi 5 debido a la incompatibilidad con RPI.GPIO
. Sin embargo, hemos proporcionado un código alternativo de demostración para Raspberry Pi 5 usando la biblioteca gpiozero
.
Dispositivos que no son Raspberry Pi 5
Ejecuta el script de ejemplo desde el repositorio que clonaste en el Paso 4. Deberías ver el mensaje "on"
cuando presiones el botón.
$ python3 button.py
off
off
on
on
off
Dispositivos Raspberry Pi 5
Copia el siguiente código y guárdalo como ~/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()
Debería mostrar "on" cuando presiones el botón:
$ python3 ~/button.py
off
on
on
off
on
off
No funcionará dentro de un entorno virtual, deberás salir primero:
deactivate
python3 ~/button.py
Grabar sonido con Python
Usamos la biblioteca PyAudio para Python para grabar sonido con Python.
Primero, ejecuta el siguiente script para obtener el número de índice del dispositivo ReSpeaker:
cd mic_hit
python3 recording_examples/get_device_index.py
Verás una salida como la siguiente:
Input Device id 1 - seeed2micvoicec: 1f000a4000.i2s-tlv320aic3x-hifi tlv320aic3x-hifi-0 (hw:2,0)
Para grabar sonido, abre el archivo recording_examples/record.py
con nano
, vim
u otro editor de texto, y cambia la línea: RESPEAKER_INDEX = 2 al número de índice correspondiente a tu dispositivo ReSpeaker. Luego ejecuta el script de grabación:
python3 recording_examples/record.py
Si deseas extraer datos del canal 0 desde una grabación estéreo de 2 canales, revisa el contenido del archivo record_one_channel.py
.
Para otros canales (canal X), cambia [0::2]
por [X::2]
.
python3 recording_examples/record_one_channel.py
Para reproducir los archivos grabados puedes 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
También puedes usar el script recording_examples/play.py para reproducir archivos .wav usando PyAudio:
python3 recording_examples/play.py path-to-wav-file
Asegúrate de especificar correctamente el índice del dispositivo de salida en play.py, ¡de lo contrario PyAudio podría quedarse congelado!
Soporte técnico y discusión del producto
¡Gracias por elegir nuestros productos!
Estamos aquí para brindarte distintos tipos de soporte y asegurar que tu experiencia sea lo más fluida posible.
Ofrecemos varios canales de comunicación para adaptarnos a tus necesidades y preferencias.