Play Audio on Raspberry Pi OS Lite with Zero 2 W

Eseguire un file audio su Rasberry Pi Lite Os

La domanda è: "Come riprodurre un file audio su un Raspberry Pi Zero2W e C#?"

La risposta è "Installa Raspberry Pi Os Lite, poi NET8 e infine esegui aplay o cvlc".

Gli step necessari sono i seguenti:

1) Apri Raspberry Pi Imager e seleziona:

 - Device: No filtering

- Operating System: "Raspberry Pi OS Lite (64 bit)

2) Premi CTRL+MAIUSC+X per accedere alla configurazione iniziale di Raspebbry Imager e quindi settare l'hostname ("pizero2" nel mio caso), username e password per accedere tramite SSH e le credenziali per accedere alla rete.

3) Premi "Next" e attendi la fine della scrittura dell' SD card.

Inserisci l'sd card nel Rasberry Pi Zero 2W e attendi qualche minuto (il led verde dovrebbe rimanere acceso e non lampeggiare).

Da Power Shell lancia i seguenti comandi:

ssh pi@pizero2.local
<Immetti la password che hai scelto durante la configurazione>

sudo apt update
sudo apt full-upgrade 
sudo reboot

Adesso installa NET8:

wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh
chmod +x ./dotnet-install.sh
./dotnet-install.sh --version latest

echo 'export DOTNET_ROOT=$HOME/.dotnet' >> ~/.bashrc
echo 'export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools' >> ~/.bashrc
sudo reboot

Attendi il riavvio e lancia dotnet --version per controllare la corretta installazione di NET8.

Adesso non resta che installare vlc tramite il comando:

sudo apt install -y vlc

Io ho collegato un jack femmina ai piedini 13 e 18 in modo da avere l'uscita per un altoparlante e non dover utilizzare un cavo o adattatore hdmi.

Per fare in modo che l'audio sia riprodotto tramite la porta GPIO è necessario modificare il file /boot/firmware/config.txt e aggiungere la seguente riga:

dtoverlay=audremap,pins_12_13 # for pins 12 and 13

Riavvia il Raspberry con il solito sudo reboot.

Nota: puoi utilizzare il comand raspi-gpio get per verificare la corretta configurazione.

Puoi eseguire un test con il comando:

aplay audio.wav

oppure

nvlc audio.mp3 -Idummy -f --play-and-exit 

Io ho creato un'app Blazor che gira sul Raspberry. Ho utilizzato CliWrap per gestire gli argomenti da passare a nvlc:

Ecco un esempio di utilizzo:

var arguments = new List<string> {
    "-Idummy",
    "-f",
    "--play-and-exit"
    filename
};

 var sb = new StringBuilder();
 var command =
     await Cli
         .Wrap("nvlc")
         .WithArguments(string.Join(" ", arguments))
         .WithStandardOutputPipe(PipeTarget.ToStringBuilder(sb))
         .ExecuteAsync(token);

 var output = sb.ToString();