Как работает взлом передатчика RF / FM GPIO?

8

Некоторое время назад несколько парней выяснили, что они могут передавать FM-сигналы, используя порты GPIO Raspberry Pi, а другой человек понял, что он может использовать RasPi для управления своим оборудованием домашней автоматизации:

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

Это файл, который контролирует радио для этого:

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

Теперь я хотел бы перенести это на язык, с которым мне было бы легче экспериментировать, например на Go или Python. Однако мне не совсем понятно, как это делается.

Скагмо использует гармоники для генерации частоты 433 МГц. Скажем, вы хотите только частоту 100 МГц, для простоты, как вы это генерируете? Насколько я понимаю, это как-то связано с часами GPIO (или, может быть, SPI? Я не уверен).

Из того, что я вижу в файле, он устанавливает три бита в некотором регистре выбора функций GPIO, затем инициализирует часы структурой, а затем устанавливает бит всякий раз, когда он хочет передать высокий или низкий уровень.

Это в несущей волне? Где это волна - носитель?

Я также обнаружил этот скрипт на Python, который утверждает, что делает то же самое , но я не уверен, использует ли он собственный передатчик или же человек подключил внешний к RasPi.

По сути, я был бы очень признателен за объяснение или краткую справку о том, как именно это работает, и если Python / Go достаточно быстр для передачи сигналов, которые могут имитировать мой пульт в гараже (кажется, с ASK-модуляцией), или если у меня есть сделать это в C.

Ставрос Корокитакис
источник

Ответы:

2

Признавая это как забавный и отличный хак, я бы посоветовал не использовать его ни для чего, кроме как для демонстрации концепции, потому что вещание на нелицензированных частотах может нарушить закон и / или привести к юридическим проблемам и / или суровым штрафам.

пожалуйста, используйте только лицензированное оборудование для вещания в допустимых диапазонах частот и выходной мощности. Вы никогда не узнаете, есть ли в вашем районе человек с кардиостимулятором.

Raspberry Pi имеет тактовые генераторы, которые могут выводить прямоугольные сигналы на выводы GPIO. Если вы запрограммируете тактовый генератор на нужную частоту, вы получите сигнал, а когда вы измените частоту, сигнал станет радиомодулированным (FM) радио. Недостатки этого подхода: 1) прямоугольная волна очень шумная - передается большое количество гармоник и других частот, 2) RasPi может выводить много радиочастотной энергии, блокируя некоторые другие передачи в очень широком частотном спектре.

Lenik
источник
3

В вашей стране могут быть полосы радиочастот, где могут быть разрешены нелицензированные радиопередачи очень малой мощности (правила FCC, часть 15 в США). Однако нефильтрованный выход GPIO не будет транслироваться только в одной радиочастотной полосе.

Уловка передатчика GPIO использует периодический цифровой выход для получения радиосигнала. Это связано с одной из теорем Фурье, которая доказывает, что несинусоидальный, но периодический сигнал может быть разложен на множество синусоидальных компонентов (гармоник). Подключите синусоидальный компонент к антенне с половинной длиной волны, и он будет излучать некоторую радиочастотную энергию. Но, чтобы отключить энергию в частотных диапазонах, отличных от намеченных, необходимо использовать фильтр нижних частот или полосовой фильтр между выводом GPIO и антенной, чтобы удалять энергию РЧ на всех непреднамеренных частотах (все эти другие частоты, включенные в разложение Фурье периодической формы сигнала цифрового выхода GPIO вашего Pi).

Вы не хотите, чтобы ваш Pi вмешивался в какие-либо высокочастотные радиослужбы аварийных служб, что может привести к возникновению правовых проблем.

Добавлено: FM означает частотную модуляцию, например, изменения (модуляции) частоты несущей РЧ представляют информацию о модулирующем входе (амплитуда звука в одном общем случае). Pi имеет управляющие регистры, которые могут изменять периодическую синхронизацию выходного контакта GPIO. Изменения в периодической синхронизации также являются изменениями частоты. Измените эту цифровую частоту точно в нужное время (когда аудиосигнал изменит амплитуду и т. Д.), И преобразование Фурье этого цифрового сигнала также изменит его частотный спектр (выше или ниже, например, с частотной модуляцией или ЧМ-сигналом). DMA иногда используется для изменения регистров синхронизации Пи, поскольку DMA может происходить достаточно часто, чтобы соответствовать изменениям амплитуды аудиофайлов на частоте дискретизации звука или их кратным.

Некоторые учебники по радио-дизайну будут содержать гораздо больше подробностей о том, как должен изменяться спектр, чтобы соответствовать различным стандартам вещания (здесь несколько глав больше, чем уместно). Знание аудио DSP и того, как работают управляющие регистры Pi и DMA, также могут быть необходимы (опять же, несколько глав здесь более чем уместны).

hotpaw2
источник
2
Хотя это самый правильный ответ, объяснение о разложении Фурье не объясняет, как цифровой сигнал GPIO преобразуется в ЧМ, что люди считают аналоговым. Я уверен, что многие люди хотели бы визуально лучше понять, как сигнал модулируется в FM.
not2qubit