Introdução ao Nvidia Jetson
Este wiki foi escrito para ReSpeaker 2-Mics Pi HAT v1. Para diferenciar os dispositivos v1 e v2, consulte How to Distinguish ReSpeaker 2-Mics Pi HAT Hardware Revisions.
Instalação e configuração do driver
1. Conecte o ReSpeaker 2-Mics Pi HAT ao Jetson Nano
Monte o ReSpeaker 2-Mics Pi HAT no seu Jetson Nano, certificando-se de que os pinos estejam devidamente alinhados ao empilhar o ReSpeaker 2-Mics Pi HAT.
Conexão do Jetson Nano

2. Configure o driver no Jetson Nano
Certifique-se de que você está executando a imagem mais recente do sistema operacional do Jetson Nano no seu dispositivo. (atualizado em 2021.07.03)
Isto foi testado para JetPack 4.5.1. Para outras versões, você precisará verificar o número da versão dos cabeçalhos do kernel com ls /usr/src/linux-headers-*
ETAPA 1. Clone o repositório
cd ~
git clone https://github.com/Seeed-Studio/seeed-linux-dtoverlays
cd ~/seeed-linux-dtoverlays
ETAPA 2. Compile dtbo e o driver
export CUSTOM_MOD_FILTER_OUT="lis3lv02d mcp25xxfd gt9xx seeed-voicecard"
KBUILD=/usr/src/linux-headers-4.9.201-tegra-ubuntu18.04_aarch64/kernel-4.9 make all_jetsonnano
ETAPA 3. Instale o driver
sudo -E KBUILD=/usr/src/linux-headers-4.9.201-tegra-ubuntu18.04_aarch64/kernel-4.9 make install_jetsonnano
ETAPA 4. Instale o dtbo
sudo /opt/nvidia/jetson-io/config-by-hardware.py -n "Seeed Voice Card 2MIC"
ETAPA 5. Reinicie
sudo reboot
ETAPA 6. Restaure as configurações dos widgets Alsa
Aguarde um momento, pois o cartão de som estará ocupado após o login.
cd ~/seeed-linux-dtoverlays
alsactl -f extras/wm8960_asound.state-jetson-nano restore 1
ETAPA 7. Verifique se o nome da placa de som corresponde ao código-fonte seeed-voicecard com o comando aplay -l e arecord -l.
jetson@jetson:~$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: tegrahda [tegra-hda], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 0: ADMAIF1 CIF ADMAIF1-0 []
Subdevices: 0/1
Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 1: ADMAIF2 CIF ADMAIF2-1 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 2: ADMAIF3 CIF ADMAIF3-2 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 3: ADMAIF4 CIF ADMAIF4-3 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 4: ADMAIF5 CIF ADMAIF5-4 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 5: ADMAIF6 CIF ADMAIF6-5 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 6: ADMAIF7 CIF ADMAIF7-6 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 7: ADMAIF8 CIF ADMAIF8-7 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 8: ADMAIF9 CIF ADMAIF9-8 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 9: ADMAIF10 CIF ADMAIF10-9 []
Subdevices: 1/1
Subdevice #0: subdevice #0
jetson@jetson:~$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 0: ADMAIF1 CIF ADMAIF1-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 1: ADMAIF2 CIF ADMAIF2-1 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 2: ADMAIF3 CIF ADMAIF3-2 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 3: ADMAIF4 CIF ADMAIF4-3 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 4: ADMAIF5 CIF ADMAIF5-4 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 5: ADMAIF6 CIF ADMAIF6-5 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 6: ADMAIF7 CIF ADMAIF7-6 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 7: ADMAIF8 CIF ADMAIF8-7 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 8: ADMAIF9 CIF ADMAIF9-8 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: tegrasndt210ref [tegra-snd-t210ref-mobile-rt565x], device 9: ADMAIF10 CIF ADMAIF10-9 []
Subdevices: 1/1
Subdevice #0: subdevice #0
- Etapa 3. Teste, você ouvirá o que disser aos microfones (não se esqueça de conectar um fone de ouvido ou um alto-falante):
arecord -f cd -Dhw:1 test.wav
aplay -Dhw:1 test.wav
ou (para reproduzir o som do microfone imediatamente nos alto-falantes/fones de ouvido):
arecord -D hw:1,0 -f S32_LE -r 48000 -c 2 | aplay -D hw:1,0 -f S32_LE -r 48000 -c 2
Nota: -Dhw:1 é o número do dispositivo de gravação (ou reprodução); dependendo do seu sistema, esse número pode ser diferente.
Visão geral de uso
Para executar os exemplos a seguir, clone o repositório https://github.com/respeaker/mic_hat.git no seu Jetson Nano
git clone https://github.com/respeaker/mic_hat.git
Todos os scripts Python mencionados nos exemplos abaixo podem ser encontrados dentro deste repositório. Para instalar as dependências necessárias, a partir da pasta do repositório mic_hat, execute
sudo apt-get install portaudio19-dev libatlas-base-dev
pip3 install Jetson.GPIO spidev pyaudio
LEDs APA102
Cada LED APA102 on-board possui um chip driver adicional. O chip driver se encarrega de receber a cor desejada por meio de suas linhas de entrada e então manter essa cor até que um novo comando seja recebido.
python3 interfaces/pixels.py

Gravar som com Python
Usamos a biblioteca Python PyAudio para gravar som com Python.
Primeiro, execute o script a seguir para obter o número de índice de dispositivo do 2 Mic Pi HAT:
python3 recording_examples/get_device_index.py
Você verá o ID do dispositivo como abaixo.
Input Device id 1 - tegra-snd-t210ref-mobile-rt565x: - (hw:1,1)
Para gravar o som, abra o arquivo recording_examples/record.py com nano ou outro editor de texto e altere RESPEAKER_INDEX = 1 para o número de índice do ReSpeaker no seu sistema. Em seguida, execute o script Python record.py para fazer uma gravação:
python3 recording_examples/record.py
Se você quiser extrair os dados do canal 0 de 2 canais, dê uma olhada no conteúdo de record_one_channel.py. Para o outro canal X, altere [0::2] para [X::2].
python3 recording_examples/record_one_channel.py
Para reproduzir as amostras gravadas você pode usar o utilitário de sistema aplay, por exemplo
aplay -f cd -Dhw:1 output.wav #for Stereo sound