Интернет радиоприемник из raspberry pi. FM радиовещательная станция на Raspberry Pi. Шаг #5: Как работает программа PiFM

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

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

Неудивительно, что сейчас многие пользователи предпочитают слушать радиостанции, вещающие во Всемирной сети. В настоящее время количество интернет-радиостанций уже превысило 10 тысяч. Через Интернет можно слушать программы станций, расположенных практически в любой стране мира и вещающих на самых разных языках. Но включать компьютер для того, чтобы слушать радио, мягко говоря, неудобно. Как-то привычнее и удобнее – покрутил ручку – настроился на станцию...

И так, буду делать интернет-радиоприемник. Такая мысль пришла мне в голову, когда я решал, для какого-бы проекта использовать микрокомпьютер Raspberry Pi model B, который остался не у дел после приобретения гораздо более мощного Raspberry Pi 2.

Существует много проектов интернет радио на Raspberry Pi. Лучшее, что мне удалось найти – это Pi Radio . Автор – Bob Rathbone - работает над этим проектом на протяжении более 2 лет. Особо следует отметить открытость и доступность всей информации, а также очень подробное описание аппаратной части и методики настройки программного обеспечения.

Именно эту разработку я и решил повторить. Разумеется, я не просто слепо скопировал конструкцию, а подошел к процессу творчески, добавил кое-что свое.

И так, что же собой представляет Pi Radio. Это интернет-приемник, который позволяет слушать on-line радиостанции, кроме того, он может проигрывать музыкальные файлы с флэшки или сетевого диска в домашней сети. В программу заложено много всевозможных сервисных функций – таймер, будильник, RSS новости, подкасты...

Подключение к сети Интернет может быть как проводным, так и по WiFi. Основа приемника – популярный микрокомпьютер Raspberry Pi, причем можно использовать любую модель: B, B+, 2 или Zero.

Bob Rathbone разработал несколько вариантов схемы и программного обеспечения. Управление возможно как с помощью энкодера, так и кнопок, отображение информации на 2-х или 4-х строчном символьном LCD дисплее. Управлять приемником можно с пульта ДУ.

Дисплей можно подключить как непосредственно к портам ввода-вывода Raspberry Pi, так и с использованием платы на основе PCF8574 по шине I2C. Автор предусмотрел возможность использования еще двух типов дисплеев – AdaFruit LCD с интерфейсом I2C и PiFace CAD с интерфейсом SPI.

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

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

Программа постоянно зависала, особенно при посылке команды с пульта ДУ. В чем тут дело разобраться сложно. А вот варианты с непосредственным подключением дисплея к Raspberry Pi работают устойчиво. Поэтому, я не рекомендую использовать шину I2C или SPI в этом приемнике.

На мой взгляд, автор уделил слишком много внимания всевозможным вспомогательным функциям в ущерб основным. Ведь возможности LCD индикатора очень ограничены и читать на нем, например, новости не очень комфортно. Использовать приемник в качестве будильника весьма рискованно, если по какой-то причине не будет интернета – не будет и радио. Да и электричество могут ночью отключить...

Однако, в общем и целом все получилось, приемником можно пользоваться.

По сути, радиоприемник представляет собой плату Raspberry Pi, к портам ввода-вывода которой подключен дисплей и 2 энкодера. С помощью одного из них осуществляется выбор станции, с помощью второго регулируется громкость. Дисплей использован самый распространенный, на основе контроллера HD44780 на 2 строки по 16 символов. Вместо энкодеров можно использовать для навигации 5 кнопок.

Для любителей качественного звука предусмотрена возможность использования вместо AUDIO выхода Raspberry Pi внешней USB звуковой карты.

Разумеется, для приемника нужен блок питания. Тут много вариантов выбора – подойдет любой стабилизированный блок питания на 5 вольт с током не менее 1,5 А. Имейте в виду, что зарядник от телефона не подойдет, нужен именно стабилизированный блок питания, напряжение под нагрузкой не должно падать ниже 4,8 В, а без нагрузки подниматься выше 5,2 В.

Ну и музыку надо как-то слушать, т.е. необходим стерео усилитель или активные колонки. Тут тоже масса вариантов на любой вкус (слух) и кошелек.

Я решил для этого проекта использовать по максимуму свой радиолюбительский «ящик с хламом». В нем нашелся прекрасный сетевой трансформатор на нужный ток и напряжение, микросхема импульсного стабилизатора LM2576-ADJ и микросхема неплохого и довольно мощного стерео усилителя НЧ LM1876.

Автор предлагает включать и выключать приемник просто сетевым выключателем. Хотя это и не причинит вреда Raspberry Pi, но при неудачном стечении обстоятельств может повредить файловую систему на SD карточке. Поэтому я решил дополнить устройство схемой корректного закрытия системы и выключения питания. Тем более, что такой режим автор предусмотрел – нужно нажать и удерживать кнопку «Меню» в течение 3 сек, после чего подождать еще примерно 30 сек и выключить питание. Согласитесь – это весьма неудобно.

В результате получилась вот такая схема. Это мой первый вариант с управлением энкодерами. Голубым цветом выделены мои дополнения.

Управление настройкой и громкостью осуществляется с помощью энкодеров с кнопками SA1, SB1 и SA2, SB2 соответственно. Кнопка SB1 – вход в «Меню», SB2 – режим «Mute». Энкодеры должны выдавать последовательность сдвинутых на 90 градусов импульсов. Я использовал тип ES110501S-HA2 5 pin. Под такой маркировкой они значились в прайс-листе магазина.

Транзисторы VT3...VT7 и резисторы R11...R23 – это преобразователи логических уровней 3,3 – 5 В для индикатора. Эти элементы устанавливать необязательно. Как показала практика, 5-и вольтовый индикатор нормально работает с логическими уровнями 3,3 В. Однако, если возникнут проблемы, преобразователь уровней можно смонтировать на небольшой плате непосредственно на индикаторе. Еще лучше использовать индикатор с питанием от 3,3 В, но такие индикаторы довольно дефицитны и стОят существенно дороже.

DA1 – приемник от ДУ для телевизоров, на выходе в нем стоит транзистор по схеме с общим эмиттером и нагрузочным резистором около 30 КОм в цепи коллектора, так что проблемы согласования уровней нет. HL2 – индикатор активности ДУ.

Вот собственно и весь приемник, а выделенная слева голубым цветом часть схемы – это цепи питания. Я использовал обычный трансформаторный блок питания. В выключенном состоянии все цепи обесточены, никаких дежурных режимов. При нажатии на кнопку SB4 на трансформатор подается питание. Обращаю внимание – кнопка без фиксации и она должна быть рассчитана на коммутацию 220 В. C4, C5, L1, L2 – сетевой фильтр помех, номиналы L1, L2 некритичны.

С выхода стабилизатора напряжение 5 В подается на разъем microUSB Raspberry Pi и на PIC контроллер DD1. На выводе 7 (GP0) контроллера устанавливается высокий логический уровень, транзистор VT1 открывается, срабатывает реле K1 и своими контактами блокирует кнопку включения питания.

На выводе 3 (GP4) контроллера устанавливается нулевой уровень, он используется для закорачивания входа УНЧ в процессе загрузки и закрытия системы. Дело в том, что процесс активации USB звуковой карты сопровождается неприятными, довольно громкими звуками. Если предполагается использовать встроенный AUDIO выход Raspberry Pi, реле K2 можно не устанавливать, вывод GP4 контроллера в этом случае никуда не подключается.

После подачи питания светодиод HL1 мигает в течение примерно 50 сек, сигнализируя, что система загружается. По истечении этого времени приемник готов к работе, на выводе 3 (GP4) устанавливается высокий логический уровень, вход УНЧ разблокируется, HL1 светится постоянно. В качестве HL1 и HL2 я использовал один двухцветный светодиод с общим катодом.

Для того, чтобы выключить приемник, нужно кратковременно нажать кнопку SB3. При этом на выводе контроллера 5 (GP2) устанавливается низкий логический уровень, имитирующий нажатие кнопки SB1 «Меню». Через 3 сек начинается закрытие системы, вход УНЧ блокируется, HL1 опять мигает, сигнализируя о закрытии. Примерно через 40 сек система закрыта, на выводе 7 (GP0) устанавливается нулевой уровень, реле K1 отключается и система обесточивается.

Контроллер можно использовать типа PIC12F629 или PIC12F675, а с незначительной доработкой программы – любой PIC.

Напряжения на вторичных обмотках трансформатора несколько великоваты, но я исходил из наличия. Пришлось использовать импульсный стабилизатор напряжения на 5 В. Он собран на LM2576-ADJ, включенной по типовой схеме. Номинал резистора R1 рассчитывается по закону Ома исходя из номинального тока и напряжения срабатывания реле. L2, C3 – дополнительный фильтр импульсных помех. Номинал L1 выбирается исходя из входного напряжения и рабочего тока согласно рекомендациям, приведенным в datasheet на LM2576. Номинал L2 некритичен.

Единственное ноу-хау схемы – стабилитрон VD3 типа Д815Б с напряжением стабилизации 6,8 В. В работе стабилизатора он не участвует, установлен для защиты нагрузки от повышенного напряжения в случае неисправности стабилизатора. Согласитесь – если вместо 5 В подать на схему 24 В, последствия будут весьма печальны.

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

Ну а если вместо предохранителя установлен гвоздь, стабилитрон перегреется, кристалл в нем расплавится и замкнет выход накоротко. Raspberry Pi будет спасена. Если использовать слаботочный стабилитрон в стеклянном корпусе, при перегрузке он просто взорвется и не защитит нагрузку.

Усилитель низкой частоты особенностей не имеет, он собран по типовой схеме на LM1876. Элементы C9...C12 и R12...R17 – регулятор тембра на 2 фиксированных положения Classic и Rock. В первом случае частотная характеристика линейна, во втором – осуществляется подъем нижних и верхних частот. Если использовать тумблер SA1 на три положения, то в среднем положении, когда все контакты разомкнуты, будет подъем только нижних частот. Регулятор тембра смонтирован навесным монтажом на выводах SA1.

Нормально замкнутые контакты реле K2 закорачивают вход усилителя на время загрузки и закрытия системы. На схеме показано подключение реле с обмоткой на 24 В, но можно использовать и на 12 или 5 В, в зависимости от используемого блока питания. Как я уже писал, это реле нужно только для USB звуковой карты и качественной акустики.

С помощью подстроечного резистора R4 выравнивается усиление по каналам (стерео баланс). Выводить этот резистор для оперативной регулировки нет необходимости. Коэффициент усиления УНЧ определяется соотношением номиналов резисторов R8/(R3+R4) и R9/R7.

Усилитель питается от отдельной обмотки трансформатора. Если использовать общий источник питания для аналоговой и цифровой частей приемника, будет сложнее избавиться от помех, создаваемых Raspberry Pi – всевозможных «журчалок» и «скрипелок». Аналоговая и цифровая «земля» должны соединяться только в одной точке – на входном разъеме УНЧ. Еще лучше использовать отдельный внешний усилитель НЧ или активные колонки.

Схема второго варианта приемника с управлением кнопками такая.

Режим «Mute» включается при одновременном нажатии кнопок «Volume Up» и «Volume Down». Резисторы R27-R31 нужны только для самых старых моделей Raspberry Pi model B rev.1. Для rev. 2, а также моделей B+, 2 и Zero их устанавливать не нужно.

Блок питания импульсный 5 В, 2 А. Резисторы R26, R27 ограничивают бросок тока при включении сети, а также выполняют роль предохранителей. Диоды VD2 - VD4 служат для согласования уровней 5-3,3 В. Реле K1 с обмоткой на 5 В. Если не удастся приобрести такое реле с двумя парами контактов, можно включить параллельно два реле с одной парой в каждом. Возможно, в этом случае потребуется использовать более мощный транзистор VT1. Вместо УНЧ я использовал активные колонки с питанием от 5 В (USB). Они подключаются к AUDIO выходу Raspberry Pi. Остальные элементы схемы аналогичны варианту с энкодерами.

Чертежи всех плат в Sprint Layout я выкладываю только для того, чтобы их можно было "взять за основу". Ссылка в конце старнички. Повторять 1:1 не рекомендую, размеры и конфигурация плат определяются, в первую очередь, корпусом.

Прошивка PIC для двух вариантов приемника разная, для варианта с энкодерами это файл piсrdo_enc.hex , для варианта с кнопками - piсrdo_but.hex . Прошивки подойдут как для PIC12F629, так и для PIC12F675. В архиве с прошивками есть и файл исходного текста программы. При необходимости в нем можно легко изменить длительность задержки на включение и выключение приемника.

Где приобрести комплектующие? Raspberry Pi пока еще (конец 2015г.) дешевле заказать в Китае, на Aliexpress ее стоимость в зависимости от модели находится в пределах 30...40 USD. Там же при необходимости можно подобрать блок питания и USB звуковую карту по вполне разумной цене.

Использовакть USB звуковую карту имеет смысл только при достаточно хорошей акустике. Если ваши колонки стОят менее 50 USD, вполне можно обойтись встроенным в Raspberry Pi AUDIO выходом. Выбор колонок достаточно большой в любом российском магазине, торгующем электроникой. Разумеется, Hi End звук от интернет радио не ждите, но и "пищалки" размером с теннисный шарик - не лучший выбор.

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

Если ваш индикатор вместо русских букв показывает иероглифы, ничего страшного, его можно использовать в этом приемнике. Только русский текст будет отображаться латиницей. Энкодеры тоже лучше приобрести в розничном магазине, по крайней мере, будет известна марка, значит можно уточнить параметры по datasheet.

Если появились вопросы, перед тем, как их задавать внимательно прочитайте все части описания, а также ознакомьтесь с документацией от автора Pi Radio

Как известно, нет предела совершенству. Даже для самодельной портативной акустики, чья аудитория пользователей включает только одного человека. Весьма требовательного и местами маниакально упорного человека. После выхода первого поста про Pi-Sonos прошло почти 5 месяцев. За это время софт внутри этой акустики успел дважды кардинально поменяться. Поводом для изменений послужили как полезные советы хабравчан, так и собственный UX.

Pi-Sonos – это самодельная компактная акустика, на создание которой меня вдохновила Sonos Play 1. Задача этой акустики, прежде всего, была в том, чтобы воспроизводить музыку из интернет-радиостанций. При ее создании я поставил во главу угла минимализм и удобство: воткнул в розетку, а дальше в любом месте дома управляй музыкой со смартфона/компа/планшета.


О чем эта статья

Прежде всего, об упорстве и любознательности на пути к идеалу. Под катом, username , не будет ни решения какой-то глобальной проблемы, ни описания новой уникальной технологии. В статье, всего лишь, излагается сравнение популярных медиа-центров для Raspberry Pi, раскрываются их достоинства и недостатки, а также мое персональное видение оптимального фреймворка для интернет-радиоприемника. По сути, прорабатывая собственный софт для колонки, я всего лишь частично повторил путь создателей Volumio, просто реализовав с нуля всего одну из его функций (читай: “изобрел очередной велосипед”).
Несмотря на то, что статья затрагивает тему разработки ПО, кода в ней нет, потому что цель статьи описать идею и функционал, а не процесс его реализации. Если тема кода будет интересна хабравчанам, я постараюсь осилить отдельную статью с описанием процесса разработки.


Изначально софтовой начинкой акустики был OSMC , но мудрые люди в комментариях обратили внимание на то, что Kodi (aka OSMC) – слишком жирно в качестве «мозгов» для интернет-радио станции. Слишком он умный и большой, только для аудио-проектов лучше подойдет Volumio . Собственно, все так и оказалось. Volumio легче, заточен под веб-интерфейс и имеет более продвинутый и удобный в разработке API. Также отпала необходимость в торчащем сзади кабеле HDMI, поскольку Volumio полностью настраивается в любом браузере.

Однако, и у Volumio обнаружилась пара важных недостатков, подвигнувших меня на дальнейшее исследование. Это, во-первых, время загрузки, и во-вторых, отсутствие автовоспроизведения. После изучения официальной документации (из которой можно понять, что Volumio - это надстройка над mpd (Music Player Daemon)), я решил, что пришло время написать на js собственную обертку под названием RPi-Radio, которая решала бы эти проблемы. Серверная ее часть работает на Node.js, а клиентская часть (GUI), использующая React.js, была готова еще со времен использования OSMC, ее нужно было только немного подправить. Так это выглядит на экране смартфона в настоящее время:


Ниже приведена табличка, наглядно показывающая недостатки и преимущества каждого из фреймворков.
Критерий OSMC Volumio RPi-Radio
Время загрузки 35 сек 45 сек 20 сек
Автовоспроизведение при запуске нет* нет* да
Кол-во тапов из главного экрана «родного» GUI на смартфоне для выбора радиостанции из списка Favorite** 5+1 скролл 4 1
Необходимость в мониторе, клавиатуре и мыши*** да нет нет
Веб-управление частичное полное частичное
Редактирование списка станций так себе норм так себе
Удобство первоначальной настройки так себе отлично средненько
Интеграция с моим GUI для управления со смартфона с костылями с костылями из коробки
Удобство ежедневного использования ☆☆ ☆☆☆
* на самом деле да, но надо делать костыль и подсовывать его автозагрузку Raspbian; в случае с OSMC костыль пишется на python, а в случае с Volumio - на js или bash. Но в обоих случаях оно все равно работает не так, как бы хотелось.
** для OSMC и Volumio это очень важные параметры, ведь все эти тапы-скроллы необходимо делать каждый раз при включении колонки. Для RPi-Radio этот параметр хоть и минимален, но все равно не так важен, поскольку колонка начинает играть сама при включении.
*** имеется ввиду физическое подключение монитора, клавиатуры и мыши к самой Raspberry Pi, т.е. те случаи, когда нет возможности обойтись встроенным веб-интерфейсом или подключением по ssh.

Под этим спойлером спрятано подробное пояснение каждого из пунктов сравнения.

Время загрузки 20 секунд – это, по моему мнению, минимум, который можно достичь, не погружаясь в дебри оптимизации Raspbian под этот проект. Именно столько времени требуется «малинке», чтобы загрузить ОС и запустить сервис mpd. Вероятно, этот результат может быть улучшен, если заменить microSDHC на microSDXC с большей скоростью чтения/записи (проверю при возможности). Удивительно, но Volumio, притворяющийся легким и шустрым, грузится дольше монстра-комбайна OSMC. 45 секунд ожидания находятся за порогом комфортной эксплуатации, и это было основной причиной ухода от Volumio.

Автовоспроизведение присутствует в mpd из коробки, мне не пришлось ничего делать для его активации – удобно! В Volumio, хотя он и является оберткой mpd, эту функцию придушили ради красивого звука приветствия. Как я уже писал, можно сделать скрипт и положить его в автозагрузку. Аналогичная ситуация и у OSMC.

У OSMC большая часть взаимодействия с пользователем происходит через монитор: есть красивый интерфейс, возможность смотреть видео, картинки, читать новости и смотреть погоду – много всего, чего моя колонка никогда в жизни делать не будет.

А вот веб-управление у OSMC очень ограниченно, и удаленно даже нельзя настроить список любимых станций в плагине Radio – только через монитор. У Volumio – наоборот, все только через веб-интерфейс. Редактировать список станций удобнее всего в браузере на десктопе/лэптопе, но можно и на смартфоне при желании. У RPi-Radio через веб-интерфейс можно только выбирать станцию и регулировать звук. Список станций, да и вообще все остальное надо делать через консоль по ssh. Со списком станций сложнее всего: если у OSMC и Volumio есть свои обширные библиотеки интернет-радиостанций, то в RPi-Radio мне пришлось забивать адреса своих любимых станций вручную в формате JSON. Неудобно, но всего один (или несколько) раз в жизни.

С первоначальной настройкой хуже всего у OSMC. Сначала надо подключить к «малине» монитор и настроить плагин Radio, потом надо еще через консоль или по ssh настроить вывод звука на внешний ЦАП IQAudio (тот, что у платы Suptronics X400). У RPi-Radio настройка ЦАП такая же, но хотя бы все остальное делается тоже по ssh. Лидер в этой номинации, безусловно, Volumio – для вывода звука через внешний ЦАП надо просто в меню настроек выбрать соответствующий пункт из выпадающего списка. Сравнение есть даже на официальном сайте Suptronics (http://www.suptronics.com/xseries/x400.html)

GUI в RPi-Radio представляет собой простенькую веб-страничку, реализованную на React.js. Серверная часть, отвечающая за взаимодействие между клиентским GUI и mpd, работает на Node.js и представляет собой простенький HTTP- и WebSocket- сервер на базе связки Socket.io + http + express . Она запускается на Raspbian в качестве сервиса при включении системы сразу после старта сервиса mpd и для управления mpd использует модуль mpc-js . Клиентский GUI доступен любому браузеру в моей домашней сети просто по ip или hostname «малинки». Идеально.


Исходники RPi-Radio опубликованы на


Это интернет-радио и MP3-плеер использует сенсорный экран 3.5 HDMI LCD для работы. Оригинальный проект был опубликован компанией Adafruit в проекте используются MPC, MPD и Pygame.

Компоненты интернет радио и mp3 плеер на raspberry pi 3

Установка интернет радио и mp3 плеер на raspberry pi 3

  • Скачать raspbian, записать образ на microSD 8Гб или больше. Также необходимо знать как подключаться по SSH к raspberry pi. Подключить клавиатуру и мышь
  • Прикрепите ЖК-экран к raspberry pi.
  • Открыть окно терминала и введите

sudo raspi-config

  • произвести первоначальные настройки времени и языка ввода
  • Перейдите в Дополнительные параметры и включите VNC, SSH и установите разрешение 640×480
  • Перезагрузить raspberry pi
  • В образе присутствуют ненужные для проекта программы, которые занимают место, которые нужно для хранения музыки, поэтому мы удаляем Wolfram и Libreoffice, с помощью мыши на Pi и выберите добавить / удалить или по SSH

sudo apt-get purge wolfram-engine libreoffice* -y

sudo apt-get clean

sudo apt-get autoremove

sudo apt-get update

sudo apt-get upgrade

  • После обновления готовы к установке необходимого. Теперь устанавливаем драйверы LCD.

git clone https://github.com/goodtft/LCD-show.git

chmod -R 755 LCD-show

sudo ./MPI3508_600_400-show

  • Разрешение используемое с Pi-радио 640×480, поэтому вам нужно изменить config.txt

sudo nano /boot/config.txt

  • и измените разрешение в нижней части файла на 640×480. Сохранить, выйти и перезагрузиться (reboot).
  • В этот момент Pi должен загрузиться на рабочий стол и сенсорный экран. Теперь установите файлы Pi-radio.

sudo apt-get install mpc mpd

git clone https://github.com/granpino/Pi-Radio-mp3-.git

chmod -R 755 Pi-Radio-mp3-

cd Pi-Radio-mp3-

sudo ./install.sh

  • Установочный файл создаст необходимые плейлисты для mp3 и интернет-радио. На рабочем столе raspberry должен быть значок. Чтобы открыть Pi-radio, дважды нажмите на ярлык радио. Для изменения рабочего стола в один клик перейти в файловый менеджер, нажмите на редактировать и в самом низу выберите свойства. Выберите «открыть файлы одним щелчком мыши».
  • Решил запустить приложение с рабочего стола, потому что я хочу запускать другие приложения на том же Pi, которые используют ЖК-экран. Я включил некоторые образцы mp3-файлов и радиостанций для вашего тестирования. Чтобы добавить другие радиостанции в плейлист идти http://www.radiosure.com/stations/ и скопируйте в M3U ссылки.

mpc save playlist

  • или редактируем файл

sudo nano ~/var/lib/mpd/playlists/playlist

  • добавить mp3 файлы, переместить их в папку с музыкой

sudo ls -1 /home/pi/Music/*.mp3 > /var/lib/mpd/playlists/mp3.m3u

Многофункциональность мини-ПК не знает границ, о чём уже неоднократно говорилось. Для создания уникальных проектов достаточно иметь базовые знания в сфере программирования и свободный денёк. Но лишнее время есть не у всех, а сделать что-нибудь своими руками хочется. Поэтому мы подготовили небольшую статью о том, как на Raspberry прослушивать радио при помощи Интернета или подключаемых модулей.

Интернет-радио на Raspberry Pi

Для создания радиостанции таким методом нам понадобиться модель гаджета, оснащённая соответствующим модулем. Для большего удобства можно использовать старшие модификации с встроенным Wi-Fi-модулем, который позволит отказаться от множества лишних проводов. Затем начинаем делать с Raspberry Pi интернет-радиоприемник, следуя инструкции ниже:

  1. Подключаем к плате аудиоустройство, с которого будет проигрываться музыка. По желанию можно подобрать для гаджета корпус и небольшой экран.
  2. Прописываем команду "sudo_apt-get_install_mplayer", которая установит на мини-ПК проигрыватель, способный воспроизводить наиболее распространённые форматы аудио-файлов, в том числе и трансляцию радио.
  3. Устанавливаем на смартфон или планшет с операционкой Android приложение, способное выполнять команды на Raspberry без подключения клавиатуры. В нашем случае это Raspi SSH . Кроме того, вы можете припаять к гаджету отдельные кнопки и прописать соответствующие команды для включения и остановки проигрывания радиостанций.
  4. Прописываем команду для включения радио "mplayer_-playlist_http://прямая ссылка на радиостанцию". При этом стоит обратить внимание, что проигрываться будет только прописанная радиостанция. Для переключения на другую придётся заново вводить команду. Официальные ссылки можно найти на соответствующих сайтах и сохранить в удобном месте для быстрой навигации.
  5. Для выключения радио после прослушивания вводим команду "killall_mplayer", которая завершит работу приложения с минимальным риском повреждения гаджета, а затем отсоединяем мини-ПК от источника питания.

Кроме того, для прослушивания интернет-радио на Raspberry можно установить «операционку» с поддержкой соответствующих приложений или использовать прошивки с готовыми утилитами (можно найти на Github). Теперь давайте разберём особенности использования Raspberry с RTL-SDR приёмником.

Для отвязки мини-ПК от постоянного подключения к Интернету можно приобрести небольшой SDR-приемник для Raspberry Pi и дисплей (PiTFT) с диагональю 2,8 или более дюймов в любом доступном интернет-магазине. После этого следуем по инструкции:

  • Подключаем и настраиваем дисплей. Для этого скачиваем образ со всем необходимым софтом (прямая ссылка adafruit-download.s3.amazonaws.com/2015-02-16-raspbian-pitft28r_150312.zip) и прошиваем им карту памяти гаджета. Если же на Raspberry уже установлена ОС, и вы не желаете потерять важные данные - можете выполнить настройки вручную (только для опытных пользователей).
  • Скачиваем на Raspberry Pi RTL-SDR библиотеки (можно найти готовый архив со всем необходимым на Github или вручную прописывать каждую библиотеку, что крайне не рекомендуется).
  • Устанавливаем обёртку модуля для Python. Для этого прописываем команду "sudo_pip_install_pyrtlsdr" и ожидаем завершение установки на карту памяти.
  • Инсталлируем приложение FreqShow, которое обеспечит наблюдение за приёмом сигнала и возможность прослушивания радио в дальнейшем. Для этого прописываем команду "cd_~ Абзац git_clone_https://github.com/adafruit/FreqShow.git Абзац cd_FreqShow".
  • Запускаем приложение командой "sudo_python_freqshow.py" и ожидаем завершение загрузки всех функций.
  • Используем программу rtl_fm для воспроизведения радиосигнала при помощи команды "rtl_fm_-f_104.7М (может быть любая частота) -M_wbfm_-s 200000_-r_48000_-_|_aplay_-r_48k_-f_S16_LE". Данный способ позволяет слушать не только частоты официальных радиостанций, но и ловить любые сигналы, проходящие через зону захвата радиомодуля.

Кроме того, можно использовать на Raspberry Gqrx SDR-модули, обеспечивающие лучшее звучание. Однако при функционировании данных модулей гораздо сложнее поймать нужный сигнал и настроить стабильную работу на мини-ПК, так как они являются менее распространёнными в сообществе пользователей Raspberry.

На этом вся полезная информация об использовании Интернета и SDR на Raspberry для прослушивания радио заканчивается. Наслаждайтесь чистым звучанием любимых радиостанций в компактном виде и удивляйте друзей возможностями маленького гаджета.

  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то