¿Cómo funciona el pirateo del transmisor GPIO RF / FM?

8

Hace un tiempo, algunos chicos descubrieron que podían transmitir señales de FM usando los puertos GPIO de la Raspberry Pi, y otra persona se dio cuenta de que podía usar la RasPi para controlar su equipo de automatización del hogar:

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

Este es el archivo que controla la radio para esto:

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

Ahora, me gustaría portar esto a un lenguaje que sea más fácil de experimentar con C, como Go o Python. Sin embargo, no tengo muy claro cómo se hace esto.

Skagmo usa los armónicos para generar una frecuencia de 433 MHz. Digamos que solo desea una frecuencia de 100 MHz, por simplicidad, ¿cómo se genera eso? Por lo que entiendo, tiene algo que ver con un reloj GPIO (¿o quizás SPI? No estoy seguro)

Por lo que puedo ver en el archivo, establece tres bits en algún registro de selección de función GPIO, y luego inicializa el reloj con una estructura, y luego establece un bit cada vez que quiere transmitir alto o bajo.

¿Está esto en la onda portadora? ¿Dónde está la onda portadora?

También encontré este script de Python que dice hacer lo mismo , pero no estoy seguro de si usa el transmisor nativo o si la persona conectó uno externo al RasPi.

Básicamente, realmente agradecería una explicación o una breve referencia sobre cómo funciona esto, exactamente, y si Python / Go son lo suficientemente rápidos como para transmitir señales que puedan imitar el control remoto de mi puerta de garaje (aparentemente modulado por ASK), o si tengo hacerlo en C.

Stavros Korokithakis
fuente

Respuestas:

2

Si bien reconozco esto como un truco divertido y genial, aconsejaría no usarlo para otra cosa que no sea la demostración de demostración de concepto, porque la transmisión en frecuencias sin licencia puede infringir la ley y / o provocar problemas legales y / o sanciones graves.

por favor, use solo equipos con licencia para transmitir dentro de los rangos de frecuencia permitidos y los límites de potencia de salida. nunca sabrá si hay una persona equipada con marcapasos en su vecindario.

Raspberry Pi tiene generadores de reloj, que pueden emitir ondas cuadradas a los pines GPIO. Si programa el generador de reloj a la frecuencia deseada, obtendrá la señal, y cuando cambie la frecuencia, la señal se convertirá en una radio de frecuencia modulada (FM). Los puntos negativos de este enfoque son: 1) la onda cuadrada es muy ruidosa: se transmiten muchos armónicos y otras frecuencias, 2) RasPi puede emitir mucha potencia de RF, bloqueando algunas otras transmisiones en el espectro de frecuencia muy amplio.

lenik
fuente
3

Puede haber bandas de radiofrecuencia en su país donde se pueden permitir emisiones de radio sin licencia de muy baja potencia (normas de la FCC Parte 15 en los EE. UU.). Sin embargo, una salida GPIO sin filtrar no se transmitirá en una sola banda de RF.

El truco del transmisor GPIO utiliza una salida digital periódica para producir una señal de radio. Esto se debe a uno de los teoremas de Fourier que demuestra que una señal no sinusoidal pero periódica puede descomponerse en muchos componentes sinusoidales (armónicos). Conecte un componente sinusoidal a una antena de longitud de media onda y emitirá algo de energía de RF. Pero, para cortar la energía en bandas de frecuencia diferentes a la prevista, se debe usar un filtro de paso bajo o un filtro de paso de banda entre el pin GPIO y la antena para eliminar la energía de RF en todas las frecuencias no deseadas (todos esos otras frecuencias incluidas en la descomposición de Fourier de la forma de onda de salida digital GPIO periódica de su Pi).

No desea que su Pi interfiera con ninguna banda de radio de servicios de emergencia de mayor frecuencia, lo que podría causarle problemas legales.

Agregado: FM significa modulación de frecuencia, por ejemplo, los cambios (modulaciones) en la frecuencia de la portadora de RF representan información sobre la entrada de modulación (amplitud de audio en un caso común). El Pi tiene registros de control que pueden cambiar el tiempo periódico del pin de salida GPIO. Los cambios en el tiempo periódico también son cambios en la frecuencia. Cambie esta frecuencia digital en los momentos correctos (cuando la señal de audio cambia la amplitud, etc.) y la transformación de Fourier de esta forma de onda digital también cambiará su espectro de frecuencia (mayor o menor, por ejemplo, modulada en frecuencia o una señal de FM). El DMA a veces se usa para cambiar los registros de temporización del Pi, ya que el DMA puede suceder con la frecuencia suficiente para igualar los cambios en la amplitud de los archivos de audio a la frecuencia de muestreo de audio, o un múltiplo de los mismos.

Algunos libros de texto sobre diseño de radio contendrán muchos más detalles acerca de cómo debe cambiar el espectro para cumplir con varios estándares de transmisión (varios capítulos más de lo que cabe aquí). También puede ser necesario el conocimiento de DSP de audio y cómo funcionan los registros de control de Pi y DMA (de nuevo, algunos capítulos más que aquí).

hotpaw2
fuente
2
Aunque esta es la respuesta más correcta, la explicación sobre la descomposición de Fourier no explica cómo la señal digital GPIO se convierte a FM, que la gente cree que es analógica. Estoy seguro de que a muchas personas les gustaría comprender visualmente cómo se modula la señal en FM.
not2qubit