Como o hack do transmissor RF / FM GPIO funciona?

8

Há um tempo, alguns caras descobriram que podiam transmitir sinais de FM usando as portas GPIO do Raspberry Pi, e outra pessoa percebeu que ele poderia usar o RasPi para controlar seu equipamento de automação residencial:

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

Este é o arquivo que controla o rádio para isso:

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

Agora, eu gostaria de portar isso para uma linguagem mais fácil do que C para eu experimentar, como Go ou Python. No entanto, não estou muito claro sobre como isso é feito.

Skagmo usa os harmônicos para gerar uma frequência de 433 MHz. Digamos que você queira apenas uma frequência de 100 MHz, para simplificar, como você gera isso? Pelo que entendi, isso tem algo a ver com um relógio GPIO (ou talvez SPI? Não tenho certeza).

Pelo que posso ver no arquivo, ele define três bits em algum registro de seleção de função do GPIO e, em seguida, inicializa o relógio com uma estrutura e, em seguida, define um pouco sempre que ele deseja transmitir alto ou baixo.

Isso está na onda portadora? Onde está a onda portadora?

Também encontrei esse script Python que afirma fazer a mesma coisa , mas não tenho certeza se ele usa o transmissor nativo ou se a pessoa conectou um externo ao RasPi.

Basicamente, eu realmente aprecio uma explicação ou uma breve referência sobre como isso funciona exatamente, e se o Python / Go for rápido o suficiente para transmitir sinais que possam imitar o controle remoto da porta da minha garagem (modulado por ASK, ao que parece), ou se eu tiver fazê-lo em C.

Stavros Korokithakis
fonte

Respostas:

2

Embora reconheça isso como um truque engraçado e ótimo, eu desaconselharia usá-lo para qualquer coisa, exceto a demonstração de prova de conceito, porque a transmissão em frequências não licenciadas pode violar a lei e / ou resultar em problemas legais e / ou multas pesadas.

use somente equipamentos licenciados para transmitir dentro dos limites de frequência permitidos e limites de potência de saída. você nunca saberá se há uma pessoa equipada com marca-passo no seu bairro.

O Raspberry Pi possui geradores de clock, que podem gerar onda quadrada nos pinos do GPIO. Se você programar o gerador de clock para a frequência desejada, receberá o sinal e, quando alterar a frequência, o sinal se tornará um rádio modulado em frequência (FM). Os pontos negativos dessa abordagem são: 1) a onda quadrada é muito barulhenta - muitas harmônicas e outras frequências são transmitidas; 2) o RasPi pode emitir muita potência de RF, bloqueando algumas outras transmissões no amplo espectro de frequências.

lenik
fonte
3

Pode haver faixas de radiofrequência no seu país onde emissões de rádio não licenciadas com energia muito baixa podem ser permitidas (regras da Parte 15 da FCC nos EUA). No entanto, uma saída GPIO não filtrada não será transmitida em apenas uma banda de RF.

O truque do transmissor GPIO usa uma saída digital periódica para produzir um sinal de rádio. Isto é devido a um dos teoremas de Fourier, que prova que um sinal não sinusoidal, mas periódico, pode ser decomposto em muitos componentes sinusoidais (harmônicos). Conecte um componente senoidal a uma antena de meia onda e ela emitirá alguma energia de RF. Mas, para cortar energia em faixas de frequência diferentes da pretendida, um filtro passa-baixa ou um filtro passa-banda precisa ser usado entre o pino GPIO e a antena para remover a energia de RF em todas as frequências não desejadas (todas aquelas outras frequências incluídas na decomposição de Fourier da forma de onda de saída digital GPIO periódica do seu Pi).

Você não quer que o seu Pi interfira com as bandas de rádio dos serviços de emergência com maior frequência, o que pode causar problemas legais.

Adicionado: FM significa modulação de frequência, por exemplo, alterações (modulações) na frequência da portadora de RF representam informações sobre a entrada de modulação (amplitude de áudio em um caso comum). O Pi possui registros de controle que podem alterar o tempo periódico do pino de saída GPIO. Mudanças no tempo periódico também são mudanças na frequência. Altere essa frequência digital nos momentos certos (quando o sinal de áudio mudar de amplitude, etc.) e a transformada de Fourier dessa forma de onda digital também mudará seu espectro de frequência (maior ou menor, por exemplo, seja modulado em frequência ou sinal FM). Às vezes, o DMA é usado para alterar os registros de tempo do Pi, já que o DMA pode acontecer com frequência suficiente para corresponder às alterações na amplitude dos arquivos de áudio na taxa de amostragem de áudio ou em um múltiplo deles.

Alguns livros didáticos sobre design de rádio conterão muito mais detalhes sobre como o espectro precisa mudar para atender a vários padrões de transmissão (vários capítulos mais do que cabem aqui). Também é necessário o conhecimento do DSP de áudio e como o controle do Pi é registrado e o DMA (novamente, alguns capítulos mais do que cabem aqui).

hotpaw2
fonte
2
Embora essa seja a resposta mais correta, a explicação sobre a decomposição de Fourier não explica como o sinal GPIO digital é convertido em FM, que as pessoas acreditam ser analógico. Tenho certeza de que muitas pessoas gostariam de entender melhor visualmente como o sinal é modulado em FM.
not2qubit