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