Сегодня никого не удивишь умными телевизорами с предустановленной операционной системой, браузером и магазином приложений.
Решения от разных производителей имеют свои преимущества, но все модели похожи на смартфоны 10-летней давности с растянутым на всю стену экраном.
Все это обеспечивает большую популярность сторонним приставкам, сориентироваться в многообразии которых довольно сложно.
Есть китайские ноунеймы, средний сегмент от Xiaomi дорогие решения от Apple.
Самым интересным решением будет самостоятельная сборка телевизионной приставки, которая по возможностям может обогнать большинство конкурентов, но при этом не ударит по кошельку владельца.
Кому пригодится такая TV-приставка
Во-первых, тем кто хочет превратить обычный телевизор в smart.
Во-вторых, подобное решение гораздо более универсальное и при смене телевизора в будущем оно гибко перестраивается или трансформируется в абсолютно другой модуль.
Гаджетоманы это оценят.
В-третьих, самодельная приставка обойдется дешевле готовых фирменных решений, но при этом она будет более гибкая в настройке.
Не выбрасывайте Старые тюнера куда их можно использовать. Сделаем Своими руками
Тем, кто хочет сэкономить на покупке гаджетов – в самый раз.
В-четвертых, параллельно с медиасервером на базе самодельной приставки можно запустить что-то еще, например, хаб для умного дома или ретро игровую консоль.
У самого дома есть отличный 40-дюймовый телевизор Sony Bravia, который приобретался около 7 лет назад и на данный момент меня полностью устраивает.
Одна из топовых моделей своего времени имеет все необходимые возможности, но не отягощена наличием smart-модуля.
Сейчас хочется добавить в телевизор возможность просмотра IPTV, YouTube и других сетевых сервисов, а так же получить сетевое хранилище для уже имеющегося контента.
С подобными задачами отлично справится наша самодельная приставка.
Что нужно для сборки приставки
Для начала нужно определиться с основой будущей сборки.
Не будем изобретать велосипед и выберем проверенную Raspberry Pi.
Сообщество владельцев такого одноплатника действительно огромное, на просторах сети можно найти ответы на любые вопросы касательно переделки “малинки” в любой гаджет, в том числе и в телевизионную приставку.
Среди большого многообразия моделей Raspberry для выполнения нашей задачи подходит всего две: 3B+ и 4B.
Только эти модификации оснащены интерфейсом Ethernet, Wi-Fi модулем с поддержкой стандарта 802.11ac, имеют достаточно мощный процессор и необходимое количество оперативной памяти.
Не стоит надеяться на более доступные версии Raspberry, они просто не потянут воспроизведение видео без тормозов.
Самая МОЩНАЯ Т2 антенна для телевизора своими руками!
При выборе между Raspberry Pi 3B+ и Raspberry Pi 4 следует ориентироваться на максимально необходимое разрешение воспроизводимого контента.
Модель 3B+ потянет Full HD разрешение, а новая “четверка” с двумя или четырьмя Гб оперативной памяти справится и с 4K разрешением.
▪️ Купить Raspberry Pi 3B+ – от 2609 руб.
▪️ Купить Raspberry Pi 4B – от 3617 руб.
▪️ Купить кабель HDMI – от 68 руб.
▪️ Купить карту памяти MicroSD – от 207 руб.
Выбирайте модель с корпусом и кулером охлаждения, а блок питания можно не докупать, подойдет практически любая зарядка от смартфона.
Как настроить приставку
Вслед за выбором железа переходим к выбору программного обеспечения.
Для наших задач подойдет KODI.
Это бесплатный кроссплатформенный медиаплеер с открытым исходным кодом.
Мощное сообщество пользователей давно обзавелось модулями и расширениями для KODI, которые решают всевозможные задачи.
Установить KODI можно на Windows, macOS, Linux, Android и даже Apple TV.
У владельцев “малинки” есть два способа запуска KODI.
Можно установить медиаплеер поверх существующей системы Raspbian, а можно воспользоваться имеющимися оптимизированными сборками.
Первый способ сложнее, ведь предполагает установку плеера, необходимых плагинов и дополнений по очереди через командную строку.
Однако, такое решение более универсальное и позволяет KODI ужиться в одной системе, например, с HomeBridge.
Второй способ более быстрый и легкий.
Специальная сборка максимально оптимизирована для работы плеера на Raspberry, уже имеет большинство необходимых расширений и плагинов, устанавливается методом загрузки образа на карту памяти, а дельнейшая настройка происходит через графический интерфейс.
Стоит отметить, что и в этом случае на урезанной версии операционной системы для “малинки” можно запустить дополнительные сервисы вроде HomeBridge, но работать они будут в так называемых контейнерах, не получая полный доступ к железу и имея ряд ограничений.
Сейчас мы остановимся на втором более простом способе установки.
Для этого нам понадобится образ системы для Raspberry Pi под названием LibreELEC.
1. С официального сайта сборки скачиваем специальную утилиту.
2. Запускаем утилиту, выбираем версию своей “малинки” и версию прошивки.
3. Скачиваем программное обеспечение и записываем на установленную карту памяти.
4. Когда запись будет завершена, извлекаем карту памяти и устанавливаем ее в Raspberry Pi.
5. Запускаем “малинку” и производим первоначальную настройку.
Для ввода параметров потребуется мышь и клавиатура, лучше всего использовать подходящий универсальный пульт ДУ, который распознается приставкой без дополнительных настроек.
Будет сразу же предложено подключиться к беспроводной домашней сети и установить пакет локализации.
Что делать дальше
В данный момент приставка умеет лишь воспроизводить видео с подключенных накопителей или из встроенной памяти.
Устройство достаточно “всеядное”, распознает большинство распространенных форматов без проблем.
Обладателям большой медиатеки понравится встроенная система идентификации файлов.
При помощи одного из сервисов (TMDb или TVDB) KODI автоматически подтянет из сети данные обо всех фильмах и сериалах на устройстве.
Для расширения возможностей потребуется установить соответствующие дополнения.
Поиск и установка плагинов происходит в меню Настройки – Дополнения – Поиск.
Рекомендую найти и установить такие плагины:
▪️ YouTube – для просмотра видео с самого популярного ресурса на приставке.
Можно искать ролики прямо на устройстве или авторизоваться в свое учётке и смотреть избранные или добавленные в отдельный плейлист видео.
▪️ PVR IPTV Simple Client – для просмотра IPTV.
Большинство сервисов поддерживают просмотр через плейлисты формата *.m3u, для этого подойдет как данный плагин, так и большинство аналогов.
▪️ Keymap Editor – для переназначения кнопок на подключенных пультах ДУ, мышках или геймпадах.
▪️ Estuary MOD – для удобной настройки стандартной темы оформления.
Долго перебирал сторонние скины, но в итоге вернулся назад к стандартному с использованием данного плагина.
Главное удобство для меня в возможности создать дублирующиеся пункты в главном меню.
Так за пару минут настраивается четыре галереи (по две с видео и с сериалами) для детского контента и для остального.
▪️ Aerial – крутая заставка для режима ожидания с роликами в 4K из Apple TV.
Не забываем настроить веб-интерфейс и удаленный доступ к данным на приставке.
Плагины и расширения для этого не нужны, все необходимое есть в настройках системы.
Веб-интерфейс для управления через браузер
По пути Настройки – Службы – Управление включаем веб-интерфейс и выбираем тему оформления.
Теперь прямо с компьютера или смартфона можно управлять воспроизведением на приставке.
Для доступа к данным пригодится поддержка протокола smb.
Включить можно по пути: Настройки – Службы – SMB-клиент.
Не забудьте отключить ограничение на минимальную и максимальную версию протокола.
Теперь в домашней сети появится новое устройство с полным доступом к его внутренней памяти и подключенным накопителям.
Так можно быстро сбросить видео или фото на приставку через Finder или проводник.
Удаленное подключение к плееру для передачи данных
Вишенкой на торте станет включение сервиса AirPlay для передачи музыки.
В меню Настройки – Службы – AirPlay активируем соответствующую опцию и на приставку можно стримить треки прямо с iPhone или iPad.
Пользователи стриминговых сервисов вроде Netflix, Megogo, Okko, IVI и прочих запросто найдут плагины для просмотра контента через KODI.
Вот такую мощную и функциональную приставку с быстрой настройкой и огромной базой плагинов расширения можно получить на базе нашей любимой Raspberry Pi.
iphones.ru
Источник: autobraga.ru
Строим цифровой DDC SDR приёмник своими руками (часть 1)
На стыке интересных мне областей программирования и радио зародился долгий, но интересный проект по созданию цифрового приёмника прямого преобразования, в котором аналоговых частей будет абсолютный минимум.
С каждой частью статьи я планирую дорабатывать приёмник, улучшать его характеристики, обвешивать его разными доработками, а в итоге возможно и получить полноценный трансивер.
Базовый комплект будет построен на китайской АЦП AD9226.
Цифровым сердцем приёмника будет являться FPGA матрица Altera EP4CE10.
Для того, чтобы не мучатся с наушниками добавлен простейший УНЧ с питанием в 5 вольт и динамик.
Итак, соединяем все воедино (точки подключения особой роли не играют, всё настраивается и назначается программно).
Идея приёмника заключается в смешивании оцифрованного с помощью АЦП радиосигнала с гетеродином, выдающим 2 сигнала со смещением в 90 градусов (синус и косинус).
Тем самым мы получаем комплексный сигнал (I и Q), с помощью которого достаточно легко добиться подавления зеркального канала и демодулировать полезный сигнал.
Устанавливаем среду разработки Quartus.
Начинаем с подключения АЦП (вход и тактовый сигнал). Т.к. внешнего кварцевого генератора нет, будем тактовать модуль силами самой FPGA (а это очень плохо в плане качества приёма, но для первой версии сгодится).
Добавляем вход кварцевого генератора планы FPGA (50 мегагерц).
Первым делом создаём гетеродин, настроенный на частоту приёма. Его задача состоит в переносе частот с диапазона радиоволн в звуковой.
Его параметры на скриншотах:
Для управления частотой гетеродина в него необходимо передать слово частоты, задающее смещение фазы, для этого подготовим отдельный модуль. Сейчас частота будет статична, но дальше планирую менять её энкодером.
Слово частоты это число, получаемое делением необходимой частоты в герцах на частоту кварцевого генератора и умноженную на двойку в степени, равной разрядности DDS-генератора (гетеродина).
Полученный сигнал подаём на 2 смесителя (умножителя), которые обеспечивают смешивание сигнала АЦП (вход А) с сигналом гетеродина (вход B).
Полученный сигнал смещён на частоту гетеродина, т.е. выбранная частота теперь размещается в нулевой. А слева (да, в отрицательной части) и справа от неё находятся весь необходимый нам спектр.
Чтобы дальше эффективно работать с сигналом, нам необходимо его децимировать (уменьшить частоту выборок), эту роль выполняет CIC фильтр.
После этого частота выборок сокращается с 50 миллионов раз в секунду до 100 000.
Далее нам необходимо сделать полосовой фильтр, т.к. будем принимать SSB сигнал, то фильтр полоса пропускания потребуется в районе 2700гц. Для этого воспользуемся фильтром конечных импульсных характеристик (FIR).
Для его расчёта удобно использовать следующие программы:
Iowa Hills FIR Filter Designer
WinFilter
Также, фильтр сократит число выборок с 100 000 до 50 000, что подходит для вывода на динамик.
Далее сокращаем разрядность (количество бит) в потоке для дальнейшей обработки.
Ещё, потребуется PLL модуль для тактования частоты 50кгц (равной частоте дискретизации потока на текущем этапе).
Полученные сигналы уже можно выводить на динамик, но мы не избавились от основной проблемы приёмников прямого преобразования — зеркального канала. Т.е. слушая передачи слева и справа от принимаемой частоты будем принимать их одинаково хорошо. Необходимо получить однополосный приём.
Для этого поток Q (смешанный с синусом) необходимо довернуть по фазе на 90 градусов, тем самым потоки I и Q будут относительно друг друга в 180 градусах. Их дальнейшее сложение или вычитание будет давать USB и LSB полосу приёма соответственно, подавляя всё лишнее.
Помочь нам в этом может преобразователь (фильтр) Гильберта, рассчитанный в программе MatLab.
Т.к. фильтр Гильберта вызывает задержку сигнала на ((количество ступеней фильтра-1)/2) то необходимо задержать сигнал I на столько же шагов.
Далее мы можем сложить (или вычесть) коплексные составляющие сигнала, получив необходимую полосу приёма.
Итоговый результат подадим на дельта-сигма модулятор, смысл работы которого заключается в восстановлении синусоидального сигнала из ШИМ с помощью RC-цепочки (резистор 3.3к, конденсатор 47нф).
Программный код готов, можно привязать выводы в прошивке к ножкам FPGA.
Готово, можно включить приёмник, подключить антенну ко входу АЦП и наслаждаться его работой.
Следующим шагом наверное буду делать УВЧ, управление частотой, дисплей.
При создании были использованы материалы следующих статей, без которых было бы не реально сделать хоть что-то, огромное спасибо авторам.
14 мыслей о “Строим цифровой DDC SDR приёмник своими руками (часть 1)”
Здравствуйте Дмитрий. Вопрос по коэффициентам FIR-фильтра. Я загружаю в визард коэффициенты одного фильтра но в разном формате: Fixedpoint и Float и получаются разные АЧХ. На форуме Марсохода: https://marsohod.org/forum/5-altera-quartus-ii/1256-voprosy-novichka?start=230#7728 , мне ответили что это масштаб другой. Посмотрите пожалуйста там прикреплены две картинки по таблице видно что данные одни.
Получается не важно, какие значения на оси Y, главное относительные величины пропускаемого диапазона частот и подавляемого? В этой статье тоже полезный сигнал «усиливается на сто db», чему верить?
ua3reo :
Принципиального различия в формате чисел я не увидел, одно время даже написал конвертер из float в integer https://ua3reo.ru/services/float_to_dec_coeff.php
Геогий :
Дмитрий,
Наконец то нашел автора, который доходчиво объясняет подход к программированию на ПЛИС. Если знаешь структуру ППП, то разобраться в графической среде программирования не сложно, особенно, когда мысли излагаются так доходчиво. Есть один вопрос, не совсем в тему- я хочу собрать приемник с полным управлением и демодуляциеё на компе,и потому мне блоки демодуляции не нужны-их можно организовать программно, например в HDSDR , но вот как организовать управление и передачу на комп I Q потоков например через LAN8720 Модуль. Если бы вы такой проект в блоге написали было бы великолепно, а если нет-то хотя бы носом ткните в подобный проект с графическим отображением такого СДР приемника. А то что-то я подвис…Заранее спасибо!
ua3reo :
Геогий :
Дмитрий,
Спасибо за ответ, но проект там без графических файлов, Даже в самой первой теме про приемник, структура ресивера не раскрыта, и не понятно как там все связано в этом кодрике…а для меня код в виде текстов — темный лес. Последний раз я занимался этим в институте 30 лет назад на бейсике )) , и пытаться заниматься этим на языке VHDL пока непосильная ноша. А просто прошить и пользоваться я не люблю. Может что другое посоветуете проект или популярно написанную статью?
73!
ua3reo :
Пока вроде не встречал такого… даже не знаю что посоветовать ещё
Георгий :
Хорошо. Спасибо. …
У вас много полезного про проектирование фильтров в квартусе узнал. Осталось прилепить блок ethernet. Будем копать дальше.
Георгий :
Дмитрий, простите, что беспокою. Вывод OTR от АЦП обязательно использовать в компьютерном варианте? Или это только для индикации уровня переполнения микросхемы?
ua3reo :
Добрый день!
Это только индикатор перегрузки по входу, использовать не обязательно, но с ним удобнее.
Георгий :
Dmitry :
ua3reo :
Дмитрий, конечно подойдёт, отличие только в корпусе FPGA, из изменений — только указать необходимые пины, которые удобно использовать на этой макетной плате, дальше должно всё заработать на отлично.
Dmitry :
Большое спасибо Дмитрий! Много собрал трансиверов за свою жизнь, но с этой техникой приходится почти все начинать сначала.
С большим интересом читаю Ваши статьи, букварь для меня.
Еще раз спасибо, что не смотря на загруженность с Волком, находите время ответить. Здоровья Вам и удачи!
Andrew Androsow :
Интересная статья! Пробовал сделать преобразование Гильберта на STM32F303 — при частоте сэмплирования хватало производительности на 8кГц сэмплирования.. да еще звук был с кучей артефактов (как будто заворачивание спектра) не смотря на ФНЧ по входу а также предварительной фильтрации тестового сигнала с ПК — вообщем одно разочарование.
Насчет ПЛИС — не смог тянуть: ибо это хуже тяжелее ассемблера! .Лет 5 назад попробовал программировать Altera — были разные простые задачи типа сумматора на VERILOG и вывода на светодиоды.Потом в конце написал последовательный порт для подключения i2C АЦП и ЦАП а также ФНЧ… и целую ночь не мог заснуть от переутомления. После этого осознал что ассемблер это язык высокого уровня по сравнению с VERILOG и благополучно оставил это дело — плату продал через интернет.
Источник: ua3reo.ru