Проживая в крупном городе и имея даже простенький радиоприемник, можно слушать
несколько десятков радиостанций в УКВ диапазоне с весьма неплохим качеством.
Казалось бы, этого вполне достаточно...
Однако у эфирных радиостанций есть несколько недостатков. Во-первых, это
неуверенный прием сигнала в некоторых районах, во-вторых, при кажущемся
разнообразии найти радиостанцию, которая в полной мере соответствовала бы
музыкальным вкусам, оказывается не всегда просто. Кроме того - назойливая реклама
и довольно ограниченный репертуар большинства станций.
Неудивительно, что сейчас многие пользователи предпочитают слушать радиостанции,
вещающие во Всемирной сети. В настоящее время количество интернет-радиостанций уже
превысило 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.
SD карточку лучше приобрести в розничном магазине своего города. Почему, я расскажу
во второй части статьи,
посвященной установке программного обеспечения. А о том, как все это настроить читайте
в третьей и
четвертой частях.
Если появились вопросы, перед тем, как их задавать внимательно прочитайте
все части описания, а также ознакомьтесь с документацией от автора Pi Radio
2016г.
|