Рубрики
Проекты на Raspberry Pi

FM радиопередатчик на Raspberry Pi

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

Разумеется, подобные FM радиопередатчики уже достаточно давно выпускаются в промышленных масштабах и стоят сравнительно недорого. Но для многих радиолюбителей, несомненно, вызывает интерес конструирование подобного передатчика собственными руками. В большинстве случае подобные передатчики изготавливаются с помощью обычных дискретных элементов, но корректная настройка передатчика в этом случае может стать достаточно утомительной задачей. Поэтому в данной статье мы рассмотрим создание простого FM радио передатчика на основе платы Raspberry Pi, который можно сконструировать всего за полчаса, а его настройка не вызовет никаких трудностей. Дальность действия данного передатчика может составлять до 50 метров.

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

Необходимые компоненты

  1. Плата Raspberry Pi (купить на AliExpress).
  2. Соединение с сетью интернет.
  3. Микрофон.

Общие принципы работы проекта

Наверняка при прочтении названия этой статьи у вас возник резонный вопрос по поводу того, каким образом плата Raspberry Pi, являющаяся по своей сути микропроцессорной платой (микрокомпьютером), без использования дополнительного аппаратного обеспечения может работать в качестве FM радиопередатчика?

Дело в том, что каждый современный микропроцессор имеет в своем составе синхронную цифровую систему, предназначенную для уменьшения уровня электромагнитных помех. Это подавление помех осуществляется с помощью сигнала синхронизации с расширением спектра (Spread-spectrum clock signal, SSCS). Частота этого сигнала может изменяться от 1 до 250 МГц, что как раз подходит для необходимого нам FM диапазона. То есть, используя код, который будет осуществлять модуляцию этого широкополосного сигнала, мы сможем превратить плату Raspberry Pi в FM радиопередатчик. Модулированный таким образом сигнал мы будем передавать с помощью контакта GPIO 4 платы. Мы можем подключить к данному контакту провод длиной до 20 см чтобы он работал как антенна.

Настройка платы Raspberry Pi

Для работы данного проекта необходимо чтобы на вашу плату Raspberry Pi была установлена операционная система и она была полностью готова к работе. Работать с платой можно либо подключив монитор к ее разъему HDMI, либо удаленно с помощью программы Putty по протоколу SSH. Но какой бы из этих способов вы не выбрали, после запуска терминала вы должны увидеть примерно следующую картину:

Превращение платы Raspberry Pi в FM радиопередатчик

Программа, которая позволяет превратить плату Raspberry Pi в FM радиопередатчик, уже написана пользователем с ником Markondej и доступна на его странице на GitHub. При желании вы можете клонировать эту программу на свою плату Raspberry Pi, скомпилировать и запустить ее на выполнение. Но мы применим немного другой способ. Выполните следующую последовательность шагов.

Шаг 1. Создайте новый каталог, в который мы затем поместим все необходимые файлы для нашего проекта. Мы назвали этот каталог PI_FM. Мы создали этот каталог из окна терминала с помощью команды mkdir PI_FM и затем вошли в него с помощью команды cd PI_FM.

Шаг 2. Клонируйте (скачайте) указанную программу с GitHub в каталог, который мы только что создали. Поскольку мы уже находимся в созданном нами каталоге, то для клонирования указанной программы выполните следующую команду:

Шаг 3. Программа, которую мы скачали, написана на языке C, поэтому нам необходим соответствующий компилятор чтобы скомпилировать и запустить ее на выполнение. Для этого нам будут необходимы компиляторы gcc и g++ и программа под названием make. Установите все эти компоненты с помощью следующей команды:

После этого на экране вы должны увидеть примерно следующую картину:

Шаг 4. Теперь у нас все готово для компиляции программы. Для этого нам необходимо перейти в каталог с данной программой с помощью команды cd fm_transmitter и затем запустить компиляцию программы с помощью следующих команд:

После этого программа должна скомпилироваться и вы на экране должны увидеть примерно следующую картину:

Шаг 5. Остался финальный шаг – запустить программу на выполнение. При запуске программы необходимо указать частоту, на которой мы будем вести нашу радиопередачу и имя аудиофайла, который мы будем проигрывать. По умолчанию это будет аудиофайл, который скачался вместе с программой радиопередатчика, под названием star_wars.wav. Для тестирования работы проекта мы будем проигрывать музыку из данного файла на частоте 100 МГц. Синтаксис этой команды выглядит следующим образом:

Поскольку нам нужна частота 100 МГц и файл star_wars.wav, то в нашем случае эта команда будет выглядеть следующим образом:

Тестирование работы проекта

После того как вы запустите программу на выполнение и увидите экран, показанный на рисунке выше, вы можете подключать антенну (кусок провода) к контакту GPIO 4 платы Raspberry Pi.

Теперь нам осталось только настроить какой-нибудь радиоприемник (например, встроенный в смартфон) на частоту 100 МГц и наслаждаться музыкой из Звездных войн. После этого вы можете заменить файл star_wars.wav на тот, который вам необходим, но при этом необходимо будет внести изменения и в выше приведенную команду запуска программы.

Проигрывание музыки с мобильного телефона

Разумеется, проигрывание одного единственного файла не выглядит привлекательным в долгой поездке, гораздо интереснее, к примеру, проигрывать список музыкальных файлов с какого-нибудь устройства и транслировать это в радиоэфир. Для этой цели также можно использовать программу от Markondej, рассмотренную в данной статье. В этом случае вы должны запустить воспроизведение музыки на каком-либо устройстве, например, мобильном телефоне, а к USB порту платы Raspberry Pi подключить микрофон. Для этого также необходимо будет изменить строку запуска программы – как это сделать описано на странице программы от Markondej на github.

Видео, демонстрирующее работу проекта

13 ответов к “FM радиопередатчик на Raspberry Pi”

Здравствуйте а что маленький микрофон что не понятно где его найти и как сделать есть аналоги для подключения

Добрый вечер. Конденсаторный микрофон можно попробовать

Можно подробно что нужно желательно ссылкой на алиекспресс какой микрофон не могу найти его

Я не понял ваш первый вопрос, к плате подключен не микрофон, а просто кусок провода, выполняющий роль антенны. А в качестве микрофона используется микрофон, встроенный в смартфон.

Все хорошо но сигнал пропадает как сделать чтобы был устойчивый сигнал?

Скорее всего либо контакт где то барахлит, либо питание нестабильное

нашла решение в конвертации мп3 в wav командой sudo sox
появилась вторая проблема — замедленный звук в радиоприемнике. решение найдено дописыванием -ppm 1000000
в конце строки запуска программы в терминале.

Ну вот видите, пока я до сайта добрался, вы уже и сами во всем разобрались. Я рад что у вас получилось

жаль не получается свои файлы передавать. сколько не пробовала, все как на гитхабе написано — не воспроизводит. только гитару что клонируется с программой.
если можете расскажите как мне (формат wav 16ише 2050 mono) заставить это транслировать мою музыку?

Проверено, отлично работает метров на 100. Единственно, не все в порядке с параметром программы bandwidth (шаг перестойки), опция -b. При заданом по умолчанию 200, на самом деле выходит около 50, из за чего звук преедается с шумами, а тихие звуки вообще не передаются. Сделайте -b 500 и тогда реально будет 200. Я думаю, это баг в программе, который исправляется описанным способом.

Я рад что у вас получилось. Я думал, что мои статьи про Raspberry Pi никто не читает, думал зря трудился. И спасибо за такой подробный комментарий

Добрый вечер, первоисточник статьи находится здесь — circuitdigest.com/microcontroller-projects/raspberry-pi-fm-transmitter. Если будете смотреть представленное в статье видео на youtube, то там под ним как раз находится ссылка на первоисточник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *