Come funziona l'hack del trasmettitore GPIO RF / FM?


8

Qualche tempo fa, alcuni ragazzi hanno capito che potevano trasmettere segnali FM usando le porte GPIO del Raspberry Pi, e un'altra persona ha capito che poteva usare il RasPi per controllare le sue apparecchiature di automazione domestica:

http://www.skagmo.com/page.php?p=projects/22_pihat

Questo è il file che controlla la radio per questo:

https://github.com/s7mx1/pihat/blob/master/radio.c

Ora, vorrei portarlo su un linguaggio che è più facile di C per me sperimentare, come Go o Python. Tuttavia, non sono molto chiaro su come ciò avvenga.

Skagmo utilizza le armoniche per generare una frequenza di 433 MHz. Supponiamo che tu voglia solo una frequenza di 100 MHz, per semplicità, come la generi? Da quello che ho capito, ha qualcosa a che fare con un orologio GPIO (o forse SPI? Non ne sono sicuro).

Da quello che posso vedere nel file, imposta tre bit su un registro di selezione delle funzioni GPIO, quindi inizializza l'orologio con una struttura e quindi imposta un bit ogni volta che vuole trasmettere alto o basso.

È questo nell'onda portante? Dove è l'onda portante?

Ho anche trovato questo script Python che afferma di fare la stessa cosa , ma non sono sicuro se utilizza il trasmettitore nativo o se la persona ha collegato uno esterno al RasPi.

Fondamentalmente, apprezzerei davvero una spiegazione o un breve riferimento su come funziona esattamente, e se Python / Go è abbastanza veloce da trasmettere segnali che possono imitare il telecomando della mia porta del garage (modulato ASK, a quanto pare), o se ho farlo in C.

Risposte:


2

riconoscendo questo come un trucco divertente e fantastico, sconsiglio di usarlo per qualsiasi cosa tranne la dimostrazione del concetto demo, perché la trasmissione su frequenze senza licenza potrebbe infrangere la legge e / o comportare problemi legali e / o pesanti sanzioni.

utilizzare esclusivamente apparecchiature autorizzate per trasmettere entro le gamme di frequenza consentite e i limiti di potenza in uscita. non saprai mai se c'è una persona dotata di pacemaker nel tuo quartiere.

Raspberry Pi ha generatori di clock, che possono emettere onda quadra sui pin GPIO. Se programmate il generatore di clock sulla frequenza desiderata otterrete il segnale e quando cambiate la frequenza, il segnale diventa una radio modulata in frequenza (FM). I punti negativi di questo approccio sono: 1) l'onda quadra è molto rumorosa - vengono trasmesse molte armoniche e altre frequenze, 2) RasPi può emettere molta potenza RF, bloccando alcune altre trasmissioni nell'ampio spettro di frequenze.


3

Potrebbero esserci bande di radiofrequenze nel tuo paese in cui potrebbero essere consentite emissioni radio senza licenza di potenza molto bassa (norme FCC Parte 15 negli Stati Uniti). Tuttavia, un'uscita GPIO non filtrata non verrà trasmessa in una sola banda RF.

Il trucco del trasmettitore GPIO utilizza un'uscita digitale periodica per produrre un segnale radio. Ciò è dovuto a uno dei teoremi di Fourier che dimostra che un segnale non sinusoidale ma periodico può essere scomposto in molti componenti sinusoidali (armoniche). Collegare un componente sinusoidale a un'antenna a mezza onda e emetterà energia RF. Ma, per tagliare l'energia in bande di frequenza diverse da quella prevista, è necessario utilizzare un filtro passa-basso o un filtro passa-banda tra il pin GPIO e l'antenna per rimuovere l'energia RF a tutte le frequenze indesiderate (tutte quelle altre frequenze incluse nella scomposizione di Fourier della forma d'onda di uscita digitale GPIO periodica del tuo Pi).

Non vuoi che il tuo Pi interferisca con bande radio di servizi di emergenza ad alta frequenza, che potrebbero causare problemi legali.

Aggiunto: FM significa modulazione di frequenza, ad es. Variazioni (modulazioni) nella frequenza del vettore RF rappresentano informazioni sull'ingresso modulante (ampiezza audio in un caso comune). Il Pi ha registri di controllo che possono cambiare la temporizzazione periodica del pin di uscita GPIO. I cambiamenti nei tempi periodici sono anche cambiamenti nella frequenza. Cambia questa frequenza digitale al momento giusto (quando il segnale audio cambia ampiezza, ecc.) E la trasformata di Fourier di questa forma d'onda digitale cambierà anche il suo spettro di frequenza (più alto o più basso, ad es. Essere modulato in frequenza o un segnale FM). Il DMA viene talvolta utilizzato per modificare i registri di temporizzazione del Pi, poiché il DMA può accadere abbastanza spesso da corrispondere ai cambiamenti nell'ampiezza di un file audio alla frequenza di campionamento audio o ad un suo multiplo.

Alcuni libri di testo sul design della radio conterranno molti più dettagli su come lo spettro deve cambiare per soddisfare vari standard di trasmissione (diversi capitoli più che adatti qui). Potrebbe anche essere necessaria la conoscenza del DSP audio e di come funzionano i registri di controllo e il DMA del Pi (di nuovo, alcuni capitoli in più rispetto a quelli qui disponibili).


2
Sebbene questa sia la risposta più corretta, la spiegazione della decomposizione di Fourier, non spiega come il segnale GPIO digitale viene convertito in FM, che la gente ritiene essere analogico. Sono sicuro che molte persone vorrebbero capire visivamente meglio come il segnale viene modulato in FM.
not2qubit
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.