Comment fonctionne le piratage de l'émetteur RF / FM GPIO?


8

Il y a quelque temps, quelques gars ont compris qu'ils pouvaient transmettre des signaux FM en utilisant les ports GPIO du Raspberry Pi, et une autre personne a réalisé qu'il pouvait utiliser le RasPi pour contrôler son équipement domotique:

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

Voici le fichier qui contrôle la radio pour cela:

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

Maintenant, je voudrais porter ceci vers un langage plus facile que C pour moi d'expérimenter, comme Go ou Python. Cependant, je ne sais pas vraiment comment cela se fait.

Skagmo utilise les harmoniques pour générer une fréquence de 433 MHz. Disons que vous ne voulez qu'une fréquence de 100 MHz, pour plus de simplicité, comment la générez-vous? D'après ce que je comprends, cela a quelque chose à voir avec une horloge GPIO (ou peut-être SPI? Je ne suis pas sûr).

D'après ce que je peux voir dans le fichier, il définit trois bits sur un registre de sélection de fonction GPIO, puis initialise l'horloge avec une structure, puis définit un bit chaque fois qu'il veut transmettre haut ou bas.

Est-ce dans la vague porteuse? Où est l'onde porteuse?

J'ai également trouvé ce script Python qui prétend faire la même chose , mais je ne sais pas s'il utilise l'émetteur natif ou si la personne en a connecté un externe au RasPi.

Fondamentalement, j'apprécierais vraiment une explication ou une brève référence sur la façon dont cela fonctionne, exactement, et si Python / Go sont assez rapides pour transmettre des signaux qui peuvent imiter ma télécommande de porte de garage (modulée par ASK, semble-t-il), ou si j'ai le faire en C.

Réponses:


2

tout en reconnaissant cela comme un hack drôle et génial, je déconseille de l'utiliser pour autre chose que la démonstration de concept, car la diffusion sur des fréquences non autorisées pourrait enfreindre la loi et / ou entraîner des problèmes juridiques et / ou de lourdes sanctions.

veuillez utiliser uniquement des équipements sous licence pour diffuser dans les plages de fréquences et les limites de puissance de sortie autorisées. vous ne saurez jamais s'il y a une personne équipée d'un stimulateur cardiaque dans votre quartier.

Le Raspberry Pi possède des générateurs d'horloge, qui peuvent produire des ondes carrées vers les broches GPIO. Si vous programmez le générateur d'horloge à la fréquence souhaitée, vous obtiendrez le signal, et lorsque vous changez la fréquence, le signal devient une radio à modulation de fréquence (FM). Les mauvais points de cette approche sont: 1) l'onde carrée est très bruyante - beaucoup d'harmoniques et d'autres fréquences sont transmises, 2) RasPi peut produire beaucoup de puissance RF, bloquant certaines autres transmissions dans le spectre de fréquences très large.


3

Il peut y avoir des bandes de fréquences radio dans votre pays où des émissions radio sans licence de très faible puissance peuvent être autorisées (règles FCC Part 15 aux États-Unis). Cependant, une sortie GPIO non filtrée ne sera pas diffusée dans une seule bande RF.

L'astuce de l'émetteur GPIO utilise une sortie numérique périodique pour produire un signal radio. Cela est dû à l'un des théorèmes de Fourier qui prouve qu'un signal non sinusoïdal mais périodique peut être décomposé en de nombreuses composantes sinusoïdales (harmoniques). Connectez un composant sinusoïdal à une antenne demi-onde et il émettra de l'énergie RF. Mais, pour couper l'énergie dans des bandes de fréquences autres que celle prévue, un filtre passe-bas ou un filtre passe-bande doit être utilisé entre la broche GPIO et l'antenne pour éliminer l'énergie RF à toutes les fréquences involontaires (toutes celles d'autres fréquences incluses dans la décomposition de Fourier de la forme d'onde de sortie numérique GPIO périodique de votre Pi).

Vous ne voulez pas que votre Pi interfère avec les bandes radio des services d'urgence à fréquence plus élevée, ce qui pourrait entraîner des problèmes juridiques.

Ajouté: FM signifie modulation de fréquence, par exemple les changements (modulations) de la fréquence de la porteuse RF représentent des informations sur l'entrée modulante (amplitude audio dans un cas commun). Le Pi possède des registres de contrôle qui peuvent modifier la synchronisation périodique de la broche de sortie GPIO. Les changements de synchronisation périodique sont également des changements de fréquence. Modifiez cette fréquence numérique au bon moment (lorsque le signal audio change d'amplitude, etc.) et la transformée de Fourier de cette forme d'onde numérique changera également son spectre de fréquences (supérieur ou inférieur, par exemple être modulé en fréquence ou un signal FM). Le DMA est parfois utilisé pour modifier les registres de synchronisation du Pi, car le DMA peut se produire assez souvent pour correspondre aux changements d'amplitude d'un fichier audio à la fréquence d'échantillonnage audio, ou à un multiple de celui-ci.

Certains manuels sur la conception de la radio contiendront beaucoup plus de détails sur la façon dont le spectre doit changer pour répondre aux différentes normes de diffusion (plusieurs chapitres plus que convenables ici). La connaissance du DSP audio et du fonctionnement des registres de contrôle du Pi et du DMA peut également être nécessaire (encore une fois, quelques chapitres de plus que ce qui convient ici).


2
Bien que ce soit la réponse la plus correcte, l'explication de la décomposition de Fourier n'explique pas comment le signal numérique GPIO est converti en FM, que les gens croient être analogique. Je suis sûr que beaucoup de gens aimeraient mieux comprendre visuellement comment le signal est modulé en FM.
not2qubit
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.