0,0
рейтинг
23 января 2013 в 20:11

Радиопередатчик из Raspberry Pi и куска провода

Теперь каждый может сделать из своего Raspberry Pi неплохой FM передатчик. Для этого не нужно каких-то особых умений или деталей, всё, что вам понадобится — кусок провода длиной примерно в 20см.



Код тоже невероятно прост:
sudo python
>>> import PiFm
>>> PiFm.play_sound("sound.wav")

Скачать модуль PiFm можно здесь и здесь.
Также есть реализация на С.

Вещание идёт на частоте 100MHz, которую можно изменить, для этого нужно изменить одну константу в коде. Все подробности есть на странице проекта. Авторы утверждают, что сигнал устойчив на удалении до 100 метров от R-Pi на открытом пространстве, а в квартире может спокойно пройти через несколько несущих стен.

Happy hacking!
Константин Богданов @thevar1able
карма
72,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (93)

  • +22
    Круто! Можно банить буйных соседей, слушающих через чур громко «Радио Шансон» :)
    • 0
      Да, да, вот они будут в восторге!
    • +17
      через что, простите?
      • +13
        Ну не через уши же его слушать, в самом деле! =)
    • 0
      киловатты вещательных радиостанций вы задавите только в том случае, если они очень уж далеко от вас.
      • +8
        Неа, глушиться всегда и везде. Пофиг, что там килловатты. Они убывают с квадратом расстояния, так что если вышка не во дворе, то радиостанция трансмиттером убивается махом.
        • +1
          все зависит от расположения, мощности, рельефа… вариантов миллион.
          скажу вам так, в нашем городе тяжело использовать китайские фм-трансмиттеры-mp3-плееры, поскольку частенько они не могут задавить какой-то там шансон :)
          • +2
            Может от плеера зависит. А у того еще часто зависит от громкости. Я вот своим плеером (тексет т800 вроде бы) радио шансон весьма эффективно подавлял, вкачивая туда какой нибудь гомосячий трешак с целью подтроллить водилу маршрутки. Главное в плеере громкость на максимум выкрутить, почему то у моего техета от громкости зависела моща трансмиттера.
        • +1
          Именно! Попала как-то в руки небольшая китайская коробочка для предотвращения мобильной связи при секретных встречах/переговорах. Что конкретно она делает, перевести с китайского так и не смогли. Испытания прошли на ура, коробочку утвердили и в решающий момент она была включена. При этом к общему удивлению вырубилась мобильная сеть всего района. Восстанавливали ее (не мы) почти сутки. Теперь вот думаем — совпадение или...?
          • 0
            Производитель случайно ошибся с мощностью.
          • 0
            Совпадение. Сотовую связь не так просто заглушить. У них большая спектральная плотность мощности, если интересно — могу расчёт привести небольшой.
    • +5
      Для этого есть классическое решение «на одной микросхеме».
      • 0
        Но через стенку оно уже не очень:)
        • 0
          Стенки разные, в моём доме было очень даже :)
      • 0
        Будьте добры, поподробнее.
        • 0
          Загуглите «глушилка 155ла3». Вместо ЛА3 подойдет практически любая ТТЛ из простой логики.
    • –7
      Чем вам не угодило именно Радио Шансон?
      • +6
        тем, что это не шансон
        • –3
          Ну там есть еще одна статья
        • +2
          Т.е. от радиостанции Серебряный дождь вы ожидаете воды с небес, насыщенной ионами серебра?
      • +1
        Репертуаром (с) К.О.
  • +4
    Радиопиратство выходит на новый уровень?
    • –8
      «Глушилка Навального»
      • +3
        Навльный уже давно проникся: navalny.livejournal.com/694240.html
        Правда в комментах ему быстро разъяснили, почему идея не взлетит.
        • +8
          Чегой то не взлетит. Будто у вас денди китайской никогда не было. Я когда в свою антеннки втыкал, то весь дом вместо Метар-ТВ смотрел как я в супер контру гоняю.
          • +1
            Один дом — не тот уровень. Ему же надо нести разумное-доброе-вечное в масштабах страны. Да и сейчас кругом цифровое ТВ, там подменить сигнал намного сложнее.
        • –3
          Больше похоже на экстремизм. Есть же Интернет. Количество Интернет пользователей в России самое больше в Европе, доноси правду — не хочу. А ему все неймется.
  • +2
    радейка в начале видео — Baofeng UV-5RE. Неплохой девайс на семидесятку и двойку
    • +2
      Семидесятку и двойку?
      • +8
        Диапазоны 2 метра (144 МГц) и 70 см (430 МГц).
    • 0
      Кусок китайского кала это а не девайс. Единственное его достоинство — цена. Сравните с нормальными станциями.
      • +1
        Да ладно вам, просто мониторить эфир (ради любопытства) — его вполне хватит.
    • 0
      Также продается сейчас под названием Kenwood TK-F8 Dual.
      Покупать ее не стал, по существу ничего не скажу.
  • +1
    Вот и появился переломный аргумент в пользу приобретения мной R-Pi :)
    • 0
      Тоже пошел заказывать :)
    • 0
      А где его купить можно?
      • +1
        Как это не парадоксально вроде можно тут www.raspberrypi.org. Гугл рулит! :)
        • 0
          Не заметил кнопку Buy a PI
  • 0
    Какая выходная мощность получается примерно не говорится?
    • 0
      Увы, нет. Только примерные радиусы действия.
      • +9
        Можно попробовать оценить. Радиус действия «в чистом поле» на бытовой приемник R=100 м.
        Согласно уравнению радиопередачи [1] отношение мощностей на входе приемника PR и на выходе передатчика PT равно
        PR/PT = GR GT (λ / 4πR)2
        где GR=GT=G — коэффициент усиления антенны. Для четвертьволнового штыря он равен 5,19dBi [2] или 3,3 по абсолютной величине.

        Обычный FM-приемник имеет чувствительность порядка 10 мкВ. На 75-омном входе это соответствует мощности 1,33*10-12 Вт. Пусть даже сигнал будет не на пределе чувствительности, а децибелл на 40 выше (1,33*10-8 Вт). Длина волны 3 м. Подставляем:
        PT = PR (4πR / Gλ)2 = 1,33*10-8 (4*3,14*100/(3,3*3))2 = 2,1*10-4 Вт = 0,21 мВт.

        Это мощность только основной гармоники, еще примерно столько же приходится на все остальные гармоники в сумме.
        • 0
          Класс (про выкладки). А это сопостовимо с мощностью сигнала, который например приходит издалека (среднестатистической FM-станции)?
          • +1
            Можете сами посчитать. Мощность, например, останкинских FM-передатчиков от 2,5 до 10 кВт. Какие там антенны, не знаю, но вряд ли коэффициент усиления выше 10 dBi (G=10).
          • 0
            Нет, обычно от них намного больше на приёмник приходит. Чувствительность среднего вещательного приёмника тоже далеко не 10 мкВ (за исключением автомобильных). Чтобы на 100 м было нормально слышно — нужны десятки мВт и нормальная антенна, не кусок провода 20 см.
            • 0
              Кусок провода должен быть около метра, но не 20 см.
  • +1
    Да работает-то оно как? Откуда они берут несущую частоту? Как модулируют?
    • 0
      на странице той описано, по линку :) через GPIO
    • +1
      Используется встроенный генератор частоты на 500MHz. Частота делится на ту самую константу (при дефолтных значениях получаем 100MHz). Сигнал модулируется в диапазоне между 100.025Mhz и 99.975Mhz, используется дробный делитель для создания 6bit audio, и выводится на GPIO4 (авторы уверяют, что ни с каким другим GPIO такое невозможно).
      Не уверен, что правильно перевёл про модуляцию.
    • +1
      Берет тактовую частоту 500МГц, делит на 5 и загоняет в GPIO. Частотная модуляция получается путем изменения коэффициента деления. Из-за дискретности шага частоты качество звука получается низкое (~6 бит). Проц грузит почти на 100%, при переключении на другие задачи — заикается и щелкает. Сейчас автор думает сделать ядерный модуль, чтобы нормально работать через DMA и не грузить проц.
    • +1
      Господа, спасибо за перевод :) К сожалению, для меня он ответа не дает :(
      Дело в том, что я не до конца понимаю, откуда они берут гармонический сигнал. Если я не ошибаюсь, этот самый GPIO является цифровым. Тогда как там производится нормальный «синус»? Ведь спектр последовательности прямоугольный импульсов — набор гармоник, амплитуды которых укладываются на sinc(). Также я не знаю, какой спектр у того генератора на 500Мгц — опять же, это прямоугольные импульсы или более-менее гармонический сигнал? Каким образом производится деление это частоты на вполне себе вещественный коэффициент — на каком блоке?
      • +2
        Никакого синуса там нет. Выход действительно цифровой, сигнал на нем — прямоугольный. В эфир излучается не только 100МГц, но и куча гармоник, правда приемник их все равно не слышит.

        Деление частоты на целый коэффициент выполняют с помощью счетчиков. На дробный — чуть сложнее. Делим частоту на (N+1) каждый M-ый период, а в течение остальных (M-1) периодов делим на N. Получается усредненный коэффициент деления (N+1)/M (и джиттер бесплатно).
        • +2
          Ну конечно же, сам приемник фильтрует: спектр-то получается из весьма удаленных друг от друга пиков… Спасибо! :)
  • 0
    А кто что может сказать о правовом аспекте использования этого «хака»? Если я такой штукой буду пользоваться в поле, до домов будет больше 100м меня за мягкое место не возьмут?
    • +1
      Максимальная разрешённая мощность 10 мВт, всё что свыше — или в свободный диапазон или лицензия.
      • 0
        О! Спасибо за ответ. А то гуглю интернеты уже пару часов и не могу сформулировать правильный запрос. Теперь отправная точка есть. Спасибо еще раз.
        Но, я правильно понимаю, что даже на 10мВт устройство должен быть сертификат о том, что оно действительно 10мВт? Тогда Малинка, увы, не подойдет, а жаль.
        • +1
          Не, просто если вы кому-то будете мешать большей мощностью, вас запеленгуют, приедут и оштрафуют. Уточнения приветствуются.
          • +1
            Это надо очень сильно помешать.
            • 0
              imho главное — не как мешать, а кому мешать.
          • 0
            Знали мы когда-то таких «пеленгаторов» — они два месяца разводили грязь на сухом с выездами по пеленгации сигнала. А, как сами мне признались, эту антенну они еще в первый день с балкона увидели, просто для начальства надо была видимость напряженной работы, а не показатели…
    • 0
      если будете пользоваться каналами в пределах радиолюбительских диапазонов (в основном, 144/430 мгц, дуйте в них хоть киловатт, никому вы не обломились и эти диапазоны не мониторятся частотнадзором.
      максимум, что могут с вами сделать — изъять технику.
      • 0
        Интересна именно передача на частотах, которые могут ловить обычные радиоприемники. Нет, не пиратское радио:)
        • +3
          Здесь все сложнее, диапазон коммерческий. Если живете вы не в глубинке, то, скорее всего, все частоты вещательных радиостанций уже распроданы. Скорее всего, на них уже кто-то вещает. И вот тут два варианта. Первый — вы встанете на уже используемую частоту, и вас задавят мощностью, толку ноль. Второй — вы встанете на свободную. Мощности изначально мало, потому уже на небольшом (сравнительно с радиостанциями) расстоянии уровень вашего сигнала будет сравним с уровнем шума. Пользуйтесь, сколько влезет.
          Но вот если вы внезапно решите купить б/у fm-трансмиттер (а это копейки, прямо скажем) и сделать деревенскую радиостанцию — будьте аккуратны. Если не дотянутся сканеры РЧН, рано или поздно о вас узнают через ОБС. Затем все зависит от удачи. Могут не заинтересоваться вообще. Могут сделать предупреждение. Могут изъять оборудование. Могут выписать небольшой штрафчик.
          • 0
            На запрос в Яндексе сканер РЧН линк на ваш комментарий под №2.
            Что это за сканер?
            • 0
              я образно описал оборудование в машинках частотнадзора.
              какое именно используется в вашем городе — не знаю, какое в нашем — не могу сказать ;)
              но железки очень жирные, перекрывают диапазон от нуля и до Х гигагерц.
        • 0
          Как раз на 144/430 вас быстрее радиолюбители засекут, чем на так называемых FM-диапазонах
          • +6
            Да-да, и не просто засекут, а ещё приедут и высекут. Прецеденты были, кстати.

            RA1ACK.
          • 0
            да-да, приедут и отругают :-D
            UU9DPK
            • 0
              Кстати, на Хабре нет совершенно статей ликбеза по радиосвязи и того, что с этим связано. Могли бы написать, например как получить позывной наблюдателя?
              Думаю, многим было бы интересно.
              • 0
                у нас с вами страна проживания немножко разная ;)
                кроме того, писать особо не о чем. надо найти местную лигу радиолюбителей, и задать вопрос о том, как получить категорию. вам расскажут, что надо сдать экзамен на знание радиодела и радиосвязи, какие нужны документы и пр. скорее всего, экзамен можно сдать прямо в лиге, там же сдать и документы. понадобится также оплатить взнос. если есть радиостанция — написать заявку о регистрации трансивера, тоже заплатить пошлину. пошлины копеечные, в общем то.
                есть и частные случаи, когда лиги нет — можно обратиться напрямую в РЧН. а могут и в лиге вам без экзаменов выдать категорию за три бутылки спиртного :)
                • +1
                  Кстати, на 4-ю (УКВ) категорию сдавать экзамен не надо.
                  • 0
                    возможно, говорю же, страна разная.
                    в Украине четвертая категория отменена вообще, минимальная — третья.
              • 0
                кстати, насчет статей вы неправы, достаточно воспользоваться поиском, — статьи интересные есть.
              • 0
                В России экзамен можно сдать, в частности, в радиочастотном центре своего округа.
                То есть, если вы проживаете в Москве или области, позвоните в РЧЦ ЦФО, по телефону объяснят, какое заявление нужно оформить, какую квитанцию оплатить и запишут на экзамен.
                Это не единственный способ сдать экзамен, получить категорию и позывной.
      • +1
        >никому вы не обломились

        Радиолюбители настучат, если будете им мешать не слышать голоса разума. По заявке замониторят и запеленгуют.

        >максимум, что могут с вами сделать — изъять технику

        Угу. Причём всю какую найдут. Иногда вплоть до холодильника.

        2 tema_sun
        Вам тут откровенный бред пишут. До 10mW можно только нв вполне определённых диапазонах. Которые не ловятся обычными радиоприёмниками… Всё остальное просто так незаконно. Возьмут вас за тёплое место или нет — вопрос сложный. Зависит от того кому и насколько вы будете мешать, вашего месторасположения и просто везения.
        • 0
          кому радиолюбители настучат? большая часть из них тоже превышает мощность, разрешенную категорией.
          никто никому мешать не собирается. а даже если так и будет, РЧН будет игнорить заявки на любительский диапазон, бабла там не срубить, а все остальное им не интересно.
          сказать вам, сколько дуют КВшники в антенны?
          а те, кто через отраженку с луны работают?
          • 0
            А если мешать не любителям, а кому другому (военным, там, авиации), там для РЧН бабло откуда?
            • 0
              авиация находится вне возможностей 90% китайских трансиверов, коими пользуется подавляющее большинство любителей. имеющим более серьезные агрегаты эта область хулиганства вряд ли интересна.
              а военные сами кого хочешь задавят… впрочем, они тоже сидят, обычно, на ~800 мгц и чихать на всех хотели с колокольни.
              не знаю, как в других городах, а у нас довольно вяло отрабатываются даже заявки от МЧС и МВС, поскольку хулиганят обычно непродолжительное время, а триангуляцию пост-фактум не сделаешь.
    • 0
      Никому это не нужно, хоть на ватт вещай. Вот если антенну повыше поставить и с десятков ватт начать круглосуточное вещание — тогда может быть заинтересуются.
  • –4
    SDR на Python'е? Ай да волшебники!
  • +5
    Ну это старый трюк, чего все так всполошились-то?)
    Еще 555м таймером так делали и мелкой-мелкой АВРкой.
    Да-да, я знаю что в статьях АМ, но я их нашел навскидку, ЧМ тоже есть, принцип тот же.
    Если купить четверной инвертор из серии HC — это одна мелкая логическая микруха, которая такие частоты может потянуть, запараллелить его каналы и подать на вход выход с этого ГПИО, то он выступит в роли неплохого усилителя, подняв выходную мощность.
    И — да — т.к. тут не синус, эта штука сильно гадит в эфир гармониками, что не есть хорошо. Куда более разумно купить мелкий трансивер и подключить его к Pi по SPI, благо их навалом копеечных.
    • 0
      если выходной мощности там понт, то о мощности гармоник можно вообще не вспоминать.
      от витой пары и то больше будет излучения :)
      • +3
        Как минимум вы свою мощность размазываете по спектру, значит теряете те крохи, что у вас есть. Это само по себе уже нехорошо.
    • +1
      Есть и FM-передатчик на AVR. Вот где магия-то! Разогнали Tiny45 до 24 МГц, при помощи PLL умножили частоту еще на 4 (до 96 МГц), а модуляцию выполняют через регистр калибровки RC-генератора.
      • 0
        Да-да, видел его, но что-то сходу не нашел линк, кинул какие под рукой были.
      • +3
        Как же изголяются программисты чтобы не брать в руки паяльник и не делать нормальный передатчик!
  • +1
    Кто-нибудь может построчно прокомментировать что конкретно происходит на этом участке кода:

            float fmconstant = samplerate * 50.0e-6;  // for pre-emphisis filter.  50us time constant
            int clocksPerSample = 22500.0/samplerate*1400.0;  // for timing
     
            datanew = (float)(data)/32767;
     
            float sample = datanew + (dataold-datanew) / (1-fmconstant);  // fir of 1 + s tau
            float dval = sample*15.0;  // actual transmitted sample.  15 is bandwidth (about 75 kHz)
     
            int intval = (int)(round(dval));  // integer component
            float frac = (dval - (float)intval)/2 + 0.5;
            unsigned int fracval = frac*clocksPerSample;
     
    
    • +1
      Ну судя по комментам и коду — фильтруют КИХ-фильтром. Странно, а с виду это БИХ, по-моему, ведь юзает же прошлое значение…
      Потом приводят к диапазон 0-15, потом вычисляют делитель таймера.
      • +1
        Фильтруют для уменьшения шума в ВЧ области, подробнее здесь:
        http://en.wikipedia.org/wiki/FM_broadcasting#Pre-emphasis_and_de-emphasis

        Random noise has a triangular spectral distribution in an FM system, with the effect that noise occurs predominantly at the highest frequencies within the baseband. This can be offset, to a limited extent, by boosting the high frequencies before transmission and reducing them by a corresponding amount in the receiver. Reducing the high frequencies in the receiver also reduces the high-frequency noise. These processes of boosting and then reducing certain frequencies are known as pre-emphasis and de-emphasis, respectively.
        • 0
          Нет, это все-таки КИХ) Не используется старое выходное значение… Только как-то он странно записан, вот нормальная запись этого фильтра:
          y[n]=x[n](1-f)+x[n-1]*f
          Здесь y[n] — выходной семпл, x[n] — входной, x[n-1] — прошлый входной, f — коэффициент, 1/(1-fmconstant).
  • 0
    Tip:
    ffmpeg -i 1.mp3 -f wav -acodec pcm_s16le -ar 22050 -ac 1 — | sudo ./pifm — 200.0
  • +1
    Или через mplayer (хотя наверное логичнее было бы использовать mencoder с похожими опциями):
    mplayer -quiet -vo null -vc dummy -af resample=22500,pan=1:0.5:0.5,format=s16ne -channels 1 -ao pcm:waveheader:file=«rawaudio.wav» 1.mp3

    Автор, если ты меня слышишь, будет круто добавить это в текст поста, я вот коменты не дочитал и долго искал, как сделать подходящий файл

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.