18 marzo 2013

Un po' di codice e il Raspberry PI diventa un trasmettitore FM

L'Imperial College Robotics Society ha pubblicato un fantastico hack in cui si spiega, con tanto di codice alla mano, come trasformare un nanocomputer Raspeberry PI in un potente (e del tutto illegale) trasmettitore in FM fino a 250 MHz. Senza alcun hardware aggiuntivo.  Il trucco coinvolge la non facile programmazione dei pin GPIO, o general purpose I/O, pensati per generare segnali di clock. Un pezzo di filo attaccato al GPIO PIN 4 e il codice per la modulazione affidata a un divisore che determina la variazione della frequenza in funzione dell'audio (sembra che il "Raspi" limiti il suo audio digitale a 6 bit ma la sua velocità consenta un oversampling fino a 9,5 bit di risoluzione), completa una ricetta che sembra abbastanza semplice. La qualità dell'audio trasmesso non è granché, ma sembra che la copertura ottenuta dal segnale sia piuttosto estesa. Comunque la descrizione dell'hack la trovate a questo indirizzo, mentre qui su Hackday  trovate un how to sull'uso corretto dei famosi pin GPIO, con tutte le cautele del caso dovute alla necessità di evitare rischiosi cortocircuiti sui connettori da saldare alla schedina del Raspberry. Per completezza, qui c'è il link ai commenti alla notizia pubblicata nel dicembre scorso, originariamente su Reddit.
Ah: ricordate che usare un trasmettitore FM nelle frequenze commerciali e amatoriali senza le necessarie autorizzazioni e licenze è decisamente illegale.

3 commenti:

mozart487 ha detto...

Che splendido trucco! Non mi sono portato dietro i due Raspi altrimenti lo proverei subito :-P, appena torno a Milano però lo metto in pratica subito e poi ti dico come si comporta. Si riuscirà al 90% a farli comunicare anche insieme via radio, chissà con che portata...

Comunque, non è tremendo lavorare con i GPIO. Basta installarsi wiringPi e la cosa si semplifica parecchio. L'autore si è impegnato per mantenere la stessa interfaccia di programmazione degli Arduino (DigitalWrite, Delay ...) a costo di dover fare veramente un lavoraccio per fornire una DelayNanosecond precisa fino a circa 5 nanosecondi. E' il prezzo che si paga a non avere un sistema operativo real-time ... a 0.1 MHz di frequenza di lavoro sui GPIO si cominciano a vedere i task switching

Provare per credere:

https://projects.drogon.net/raspberry-pi/wiringpi/

Andrea Lawendel ha detto...

Mille grazie per queste ulteriori dritte. Ovviamente mi riferivo soprattutto agli aspetti meccanici della cosa, e mi sono espresso frettolosamente quando ho parlato di saldare direttamente sui pin della scheda Raspberry. Si possono usare kit di espansione e connettori a nastro che rendono la sperimentazione con la "porta", diciamo così, GPIO molto più agevole dal punto di vista dei collegamenti fisici. Su Adafruit si trovano dei tutorial interessanti:

http://learn.adafruit.com/adafruits-raspberry-pi-lesson-4-gpio-setup/overview

http://learn.adafruit.com/adafruit-pi-cobbler-kit/overview

Anonimo ha detto...

Ho trovato per caso il link al software che trasforma il raspberry in trasmettitore FM. Ho collegato una scheda audio USB creative per l'ingresso e devo dire che il risultato è ottimo. Inoltre il codice originale del software è stato modificato per usare il canale DMA e c'è un hack che genera pure il testo RDS. Se si usa la scheda audio Wolfsong l'audio migliora notevolmente. L'ingresso audio può essere preso con ffmpeg o con arecord, anche se arecord poi è andato in crash dopo qualche ora di sperimentazione (c'è anche da dire però che il mio raspberry è overcloccato)