Raspberry Pi è una board ARM che permette di realizzare una moltitudine di progetti davvero interessanti. Nelle guide precedenti abbiamo parlato ad esempio di come realizzare una piccola stazione meteo, un Android TV box o ancora un sistema NAS. Nel tutorial che vi presentiamo quest'oggi desideriamo concentrarci invece sulla costruzione di un piccolo trasmettitore FM. Una volta terminato avremo la possibilità di sfruttare Raspberry Pi per delle trasmissioni vocali, sfruttando appunto le frequenze radio FM. Ovviamente il tutto è limitato dalla potenza dell'antenna che andremo a sfruttare, che consente una trasmissione di pochi metri, ma si tratta comunque di un'interessante esperimento didattico.
Tutto l'hardware necessario
Per realizzare il nostro progetto è necessario dotarsi di un Raspberry Pi 4, tuttavia per i nostri scopi va benissimo anche il più vecchio Raspberry Pi 3. Inoltre bisogna reperire un microfono, che serve appunto per catturare la nostra voce, oltre ad una scheda microSD da almeno 64GB per installare il sistema operativo del device. Per il primo setting del Raspberry Pi sono poi necessari mouse, tastiera, monitor ed un cavo ethernet.
Installazione e configurazione di Raspberry Pi OS
La prima parte di questa guida riguarda l'installazione e la configurazione iniziale di Raspberry Pi OS, la distribuzione Linux sviluppata dai coder della Raspberry Pi Foundation che anima la piccola board ARM.
Inseriamo la microSD nel nostro computer e procediamo con il download del file ISO di Raspberry Pi OS e di un imaging tool a scelta, il programma che esegue l'installazione del sistema operativo sulla microSD. In Rete ne esistono a decine di gratuiti e molto validi. Noi vi consigliamo di sfruttare Raspberry Pi Imager. Si tratta di un software Open Source molto facile da utilizzare anche per gli utenti che non hanno mai effettuato questo genere di operazioni.
Avviamo Raspberry Pi Imager e andiamo a scegliere manualmente il media d'installazione della distribuzione tramite il pulsante "Choose OS". Fatto ciò, con il tasto "Choose Storage" andiamo ad impostare la microSD da sfruttare nel processo ed infine clicchiamo su "Write" per avviare la procedura di flash di Raspberry Pi OS.
Il flashing dovrebbe richiedere qualche minuto. Quindi mettetevi comodi e attendete il termine dell'operazione. Nel frattempo, se lo desiderate, potete iniziare a preparare mouse, tastiera e monitor cosi da essere pronti per il primo avvio del device.
Una volta che Raspberry Pi Imager ha ultimato la procedura possiamo estrarre la microSD dal computer ed inserirla nel Raspberry Pi. A questo punto connettiamo il dispositivo alla corrente e al router tramite il cavo ethernet. Dopo il boot partirà in automatico la configurazione guidata di Raspberry Pi OS che è davvero molto semplice, quindi non ci addentreremo suoi dettagli.
Connessione SSH al Raspberry Pi
Al termine del setup di Raspberry Pi OS dovremo accertarci che il demone SSH sia in esecuzione. Per esserne sicuri possiamo immettere i seguenti comandi in bash:
sudo systemctl enable ssh
sudo systemctl start ssh
Con il primo abbiamo indicato al sistema di abilitare l'avvio automatico ad ogni boot di SSH. Il secondo invece avvia il demone.
Ora siamo pronti a connetterci da remoto al Raspberry Pi tramite un client SSH come quello reperibile su WSL o nella shell di MacOS.
Tale impostazione risulta essere decisamente più comoda e consente di posizionare il Raspberry Pi accanto al router senza doverlo tenere per tutto il tempo attaccato a mouse, tastiera e monitor. Dunque dal nostro computer principale apriamo bash e digitiamo:
ssh pi@ipdelRaspberry
pi
è il nome di default dell'utente di Raspberry Pi OS, dovrete quindi modificarlo se avete impostato un nuovo username. Se non conoscete l'indirizzo IP locale del Raspberry Pi potete recuperarlo tramite la Web interface del router o accendendo al dispositivo e digitando nel terminale il comando:
hostname -I
Installazione di fm_transmitter
Per convertire il Raspberry Pi in un trasmettitore FM sfrutteremo un pratico programma Open Source chiamato fm_transmitter ed un normale cavo d'antenna con i contatti spellati ed attorcigliati al PIN GPIO numero quattro del device.
Non serviranno altri add-on hardware, questo perché di base ogni microprocessore ha la capacità di generare un segnale FM sfruttando un apposito applicativo che eseguire la modulazione di frequenza. Tale segnale viene quindi diffuso tramite il cavo d'antenna connesso al PIN GPIO numero quattro.
Ora eseguiamo il download del codice sorgente di fm_transmitter dal repository GitHub:
mkdir PIFM
cd PIFM
sudo git clone https://github.com/markondej/fm_transmitter
Ora, sfruttando il package manager APT installiamo alcune librerie e i tool per eseguire la compilazione del codice sorgente appena scaricato:
sudo apt-get install gcc g++ make
Quindi spostiamoci nella directory contenente i sorgenti:
cd fm_transmitter
ed avviamo la compilazione:
sudo make
Il processo dovrebbe durare qualche minuto. Una volte terminato saremo pronti ad utilizzare il programma per eseguire la trasmissione FM di un file audio che deve essere collocato nella medesima directory del programma appena compilato. Ecco un comando di prova:
sudo ./fm_transmitter -f frequenzaFM -r nomedelfiledariprodurre
Per fare un esempio più concreto poniamo il caso di voler trasmettere sulla frequenza dei 100Mhz il file audio CiaoMondo.wav
:
sudo ./fm_transmitter -f 100 -r CiaoMondo.wav
Per capire se tutto è andato a buon fine possiamo prendere una normale radio FM e posizionarla sui 100Mhz cosi da poter ascoltare quanto riprodotto dal Raspberry Pi.
Per sfruttare un microfono connesso al device con cui riprodurre direttamente la voce tramite FM è possibile affidarsi ad un piccolo tool open source da shell chiamato arecord, che può essere agilmente concatenato con fm_transmitter cosi:
sudo arecord -D hw:1,0 -c 1 -d 0 -r 22050 -f S16_LE | sudo ./fm_transmitter -f 100 -
Se invece di utilizzare file non compressi .wav
preferite affidarvi al formato MP3 dovrete installare necessariamente una libreria specifica assieme al tool di mixing audio chiamato sox:
sudo apt install sox libsox-fmt-mp3
sox CiaoMondo.mp3 -r 22050 -c 1 -b 16 -t wav - | sudo ./fm_transmitter -f 100. -