Как сделать декодер своими руками
Подборка mp3 модулей для модернизации музыкальных центров и создания бумбоксов
У многих есть музыкальные центры от именитых производителей выпущенные много лет назад. Работают они еще хорошо, но USB и TF портов, а так же блютуз у них нет. Однако из ситуации можно выкрутиться и дооснастить их недостающими современными возможностями. Полезна информация будет и тем, кто сам, своими руками мастерит и хочет сделать бумбокс. Модули небольшие, а разнообразие конструкций даст возможность выбрать нужный, подходящий под конкретные условия.
1. Модуль, определяющийся по блютуз, как BT-SPEAKER, имеет небольшой дисплей для индикации режимов работы, некое подобие спектроанализатора, читает флешки и карты памяти объемом до 32 ГГб. Оснащен Aux входом и FM радио. Питание от 5 до 12 Вольт. В комплекте имеется пульт ИК пульт ДУ. Кнопками на лицевой панели можно переключать треки и менять громкость. Габаритные размеры позволяют вмонтировать в магнитолы формата 1DIN. Можно найти этот же модуль, но с усилителями 2*3 Ватт.
2. Следующий модуль так же оснащен блютуз, Aux входом, FM радио, читает флешки и карты памяти, но уже формата SD (или microSD через переходник). Питание 5-12 Вольт, из форматов понимает MP3, WMA, WAV. Габаритные размеры 107x25x38 мм, установочные 83x20x38 мм. Есть эквалайзер и переход по папкам. Пульт ДУ в комплекте. Важный элемент функционала — есть физический выключатель питания, т.е. хорошо подойдет для бумбоксов.
3. Модуль похожий на предыдущий, но понимающий больше популярных форматов. Этот уже умеет воспроизводить MP3, WMA, WAV, FLAC и APE. Питание 12 Вольт. Набор интерефейсов стандартный — блютуз 5.0, USB, SD card, FM радио и Aux. Последнего нет на лицевой панели, подключается на плате и там же можно подключить микрофон, что даст возможность организовать громкую связь.
4. Следующая версия mp3 модуля кроме блютуз 5.0, FM радио и USB для чтения флешек имеет слот для microSD карт памяти и выведенные на переднюю панель вход Aux и микрофон. Можно не только разговаривать по телефону, но и записывать звук на карту. Из форматов — MP3, WMA, WAV, FLAC, APE. Пульт, питание 12 Вольт.
5. МР3 модуль со стандартным набором интерфейсов, но без микрофона (да, и не всем он нужен). Читать умеет мр3 и wav. Питание 5-12 Вольт. Отличительная особенность — плоская конструкция. Габаритные размеры 90*41 мм. Глубину конструкции можно оценить визуально в районе 20 мм, т.е. хорошо может вписаться на крышку подкассетника старой деки.
6. Еще один модуль в относительно плоском исполнении. Вполне возможно, что так же получится удачно инсталировать в подкассетник деки. Заявленные форматы — MP3, WMA, WAV, FLAC, APE. Габаритные размеры 75*50*31 мм. Можно заказать стального и черного цвета. Питание 5 или 12 Вольт. Есть микрофон и возможность выбора папки. Имеется предустановленный эквалайзер и FM радио. Пульт в комплекте.
7. Модуль глубиной всего 23 мм и хорошим набором читаемых форматов — MP3, WMA, WAV, FLAC, APE. Ссылка здесь. Есть радио, понимает карты памяти и флешки объемом до 32 ГГб. Есть предустановленный эквалайзер, повтор треков и спектроанализатор на экране бОльших размеров по сравнению с предыдущими образцами. Версия блютуз 5.0. Немного удивляет выбор цвета пластика панели, но модуль интересный и в самоделках может занять свое место.
8. Модуль с двумя линейными входами — один на передней панели, второй на плате. Кроме того блютуз, USB, SD карта и радио. Понимает WAV, MP3, WMA. Поддерживает китайские и английские тэги, можно переключать папки, записывает звук, подключается внешний микрофон. Есть эквалайзер, не сбрасывает настройки после отключения питания (12 Вольт). Габариты 135*63. Монтажная глубина 20 мм, с панелью и кнопками 28,5 мм.
9. Недавно появившийся модуль отличается хорошим внешним видом и человеческим пультом управления. Читает APE, FLAC, WMA, WAV, MP3, ААС и отображает теги на китайском и английском языках на экране размером 52*31 мм. Общие габариты модуля 106*66 мм, посадочные 86*50. Имеет прорезиненные кнопки, одна из которых отключает микрофон. Микрофон внешний и подключается сзади на плате. Кроме того можно подключить два линейных входа и энкодер для регулировки громкости. На экране имеется символ уровня заряда аккумулятора автомобиля. Можно делать запись с микрофона, радио или линейного входа. Есть эквалайзер, переходы по папкам, воспроизведение треков подряд, повтор одного или случайный выбор.
10. Самый интересный на мой взгляд и по отзывам знающих людей модуль, который может читать массу форматов, имеет спектроанализатор уже вполне «взрослого» вида, вход для внешнего микрофона для разговоров по телефону и записи звука. Есть эквалайзер, переход по папкам, выбор режимов воспроизведения. Питание 7-12 Вольт. Общие габариты 120*63, монтажные 101*53*20мм. Есть небольшая ошибка в оформлении — вместо CARD на передней панели написали CADR)), но это с лихвой перекрывается главным преимуществом данного модуля — им можно управлять с помощью приложения BTMate из PlayMarket.
У данной версии модуля (старшая модель) плата желто-оранжевого цвета с надписью AVN1715. Есть младшая версия с платой красного цвета. Экран там меньше, а приложение BluetoothBox. Однако новая версия модуля более продвинутая.
Пишем декодер для sigrok
Если работаешь с цифровой техникой, то рано или поздно появляется необходимость в логическом анализаторе. Одним из доступных радиолюбителям, является логический анализатор DSLogic от DreamSourceLab. Он не раз упоминался на сайте, как минимум: раз, два и три.
Его особенностью является открытый исходный код, а также, то что за декодирование сигналов отвечает open-source библиотека sigrok. Вместе с внушительным списком уже существующих декодеров сигнала эта библиотека предоставляет API для написание собственных. Этим мы и займемся.
Демо-стенд
Перед тем как начать писать декодер, нужно получить декодируемый сигнал. Источником сигнала будет микросхема TTP229-BSF. Эта микросхема предназначена для работы с 8-ю или 16-ю сенсорными кнопками и передает данные о нажатиях по двух проводной линии. В качестве приемника выступает плата Arduino, а за сбор данных отвечает логический анализатор DSLogic.
Минимально необходимая реализация декодера
И, хотя официальная документация рекомендует начинать создание собственного декодера с копии уже существующего, который больше всего подходит к декодируемому сигналу. Я хочу начать с создания минимальной версии, которая может быть успешно загружена библиотекой. Это поможет понять, что необходимо реализовывать в декодере, а что опционально.
Каждый декодер в sigrok является отдельным пакетом, написанным на Python 3 и имеет собственную директорию в папке decoders. Как и любой пакет Python, декодер содержит __init__.py, а также по принятому в sigrok именованию, pd.py файл, содержащий непосредственно реализацию.
Код в __init__.py стандартен и включает в себя docstring описывающий протокол, и импорт декодера (d28dee9):
Файл pd.py содержит имплементацию декодера (d28dee9):
Это минимальная реализация, которая может быть загружена библиотекой, но ничего не декодирует. Давайте разберем обязательные свойства:
Полнофункциональный декодер
Для начала рассмотрим временну́ю диаграмму сигнала данных. TTP229-BSF имеет несколько режимов работы, и я привожу временную диаграмму только для того режима, который будет использоваться далее. Более подробную информацию о всех режимах работы микросхемы можно найти в документации к ней.
Первое и самое важное, необходимо описать набор обязательных линий, с которыми будет работать декодер. В данном случае их две, это линия тактирования (SCL) и линия данных (SDO).
Когда микросхема определяет нажатие кнопки, она выставляет на линии SDO сигнал Data Valid (DV) по которому приемник должен начать считывание данных. Давайте найдем и декодируем этот сигнал.
sigrok поддерживает несколько форматов для входных данных, но независимо от них плагины всегда оперируют семплами. Семпл содержит информацию о состоянии линий в каждый конкретный момент времени. Частота, с которой логический анализатор сохраняет семплы, называется частотой семплирования. В третьей версии Protocol decoder API был изменен подход к тому как плагины работают с семплами. Теперь нет необходимости писать цикл по всем собранным семплам вручную. Вместо этого была добавлена функция wait(). Она принимает список условий для поиска нужного семпла. При выполнении любого из условий функция возвращает состояние сигналов для найденного семпла, а свойство self.samplenum содержит номер этого семпла.
Каждое условие поиска представляет собой словарь, где ключ является номером линии, а значение – одной из констант, описывающих состояние линии:
для нахождения окончания сигнала DV необходимо задать условие, когда линия SCL остается в высоком состоянии, а линия данных переходит в высокое состояние:
По завершению последнего вызова функции wait() будут известны номера семплов начала и конца сигнала DV. Самое время создать для него аннотацию. Для этого добавим в декодер описание аннотаций (annotations) и их объединение в группы (annotation_rows):
где 0, это индекс аннотации в self.annotations кортеже, входящей в эту группу. Также потребуется зарегистрировать вывод аннотаций:
Теперь все готово к тому, чтобы разместить аннотацию к сигналу DV. Делается это с помощью вызова функции put() (f613b83):
Параметры функции: номер семпла начала аннотации (self.dv_block_ss), номер семпла окончания аннотации (self.samplenum), идентификатор вывода аннотации (self.out_ann) и данные для аннотации. Данные представляются в виде списка из индекса аннотации (0) и вложенного списка строк, от самой длинной к самой короткой, для отображения в описании. Если указано больше одной строки интерфейс может самостоятельно выбрать отображаемую строку, например, в зависимости от используемого масштаба:
Аналогичным образом добавим аннотацию для задержки Tw между окончанием сигнала DV и началом чтения данных микроконтроллером. Далее можно приступать к декодированию данных о нажатии кнопок.
TTP229-BSF, в зависимости от выбранного режима, может работать с 8-ю или 16-ю сенсорными кнопками. При этом передаваемые данные не содержат информации о режиме работы микросхемы. Поэтому для декодера стоит добавить опцию, задающую режим, в котором работает микросхема.
Данная опция будет доступна для задания значения в пользовательском интерфейсе при выборе декодера.
Как видно из временной диаграммы, данные на линии SDO выставляются при переходе SCL в активный (низкий) уровень и сохраняются при возвращении сигнала в пассивный уровень. В этот момент и микроконтроллер, и декодер могут фиксировать выставленные на линии SDL данные. Переход SCL снова в активный уровень, можно рассматривать как начало следующей посылки данных. В этом случае функция декодирования будет иметь вид (ca9a370):
Но у такого подхода размещения аннотаций есть недостаток, аннотация для последнего бита будет продолжаться до следующего чтения микроконтроллером данных.
Это неудобно и может быть решено несколькими способами. Рассмотрим один из них. Согласно описанию для микросхемы и её временной диаграмме, при отсутствии на линии SCL сигнала в течении двух милисекунд микросхема переходит в начальное состояние. Таким образом, аннотация для каждой посылки данных должна завершаться по переходу SCL в активное состояние или же по истечению 2 мс., смотря что наступит раньше. Для пропуска семплов в условии необходимо использовать специальное ключевое значение ‘skip’, а число семплов, которые необходимо пропустить, указывается как его значение. Необходимое число семплов легко вычислить, если известна частота семплирования. Получить её можно реализовав функцию metadata(). Значение частоты семплирования передается в Hz.
Тогда условие в функции декодирования запишется с использованием skip в следующей форме, плюс дополнительная проверка, что в процессе чтения данных о нажатой кнопке микросхема не вернулась в начальное состояние (6a0422d).
Сейчас декодер может обрабатывать полную посылку данных. И будет удобно, если в дополнении к информации об отдельных битах добавится аннотация о том, какая же кнопка была нажата. Для этого добавим описание еще одной аннотации. Поскольку аннотация для нажатия кнопки относится ко всей посылке данных и пересекается с добавленными ранее аннотациями, то её следует поместить в отдельную группу. Создадим для неё новую группу аннотаций ‘Key message’. (91c64e6).
До этого момента весь код работал только с первой посылкой. Вы уже обратили внимание на 19% рядом с именем декодера? Это процент семплов, которые были обработаны до выхода из функции decode(). Для обработки всех семплов остается добавить бесконечный цикл вокруг кода по декодированию отдельной посылки данных (48f95fb).
Заключительным штрихом остается добавить возможность выбора уровня активного сигнала и полноценный декодер для TTP229-BSF будет готов. Исходный код финальной версии также доступен на GitHub.
Изготавливаем приставку цифрового ТВ своими руками
Не отказывайте себе в удовольствии скоротать время за просмотром цифрового ТВ даже в том случае, когда есть ДВМ-антенна, но цифровой сигнал нечем демодулировать. В этом поможет приставка цифрового ТВ своими руками, собрать которую можно самостоятельно.
Миниатюрная приставка с micro-USB OTG
Если вы радиолюбитель, то на радиорынке можно приобрести все наборные элементы для самодельного цифрового приемника. Такая самоделка может оказаться в разы дешевле ее сертифицированного аналога. Но над ней придется поработать.
Основные компоненты
В целом, если все выполнить правильно, приставка будет работать на мобильных гаджетах, TV и ПК. В качестве примера можно собрать приставку DVB-T2 по типу небольшого стика. Основные технические характеристики:
Можно создать точную копию «свистка» Geniatech PT360. Отличия будут видны только на корпусе. Так как там не будет указан изготовитель. Этот небольшой гаджет сможет работать со смартфоном, планшетом, TV-box с Андроид, и даже с ПК на базе Windows.
Важно понимать, что спайка всех элементов приставки требует определенных навыков, знаний и оснащения. Но можно поступить проще и на радиорынке или AliExpress приобрести китайскую копию оригинальной DVB-T2 приставки, доработать ее до адекватного уровня и использовать повсеместно.
Перенастройка
Чтобы создать копию Geniatech PT360 приставки для цифрового телевидения своими руками ее нужно раскрыть, чтобы доработать окончательно. Доработать рекомендуется свисток в том случае, если он сильно греется. Иначе, во внутренности к нему можно не лезть.
Для открытия аккуратно нужно снять одну половинку корпуса. Следует учитывать, что корпус скреплен достаточно плотно.
Внутри корпуса присутствует:
Даташиты подсказывают, что ресивер поддерживает эфирное цифровое DVB-T/T2, кабельное цифровое DVB-C/C2 и аналоговое. Что касается теплоотвода, то он построен следующим образом: «нагрев уходит с микросхемы через сквозной отвод тепла на плате (указан красной стрелкой) и по медной подложке в антенную оплетку». По факту, роль радиатора выполняет банальная медная оплетка. При таком подходе, через продолжительное время работы нагрев достигает того предела, что палец можно попросту обжечь, дотронувшись до антенного выхода.
Чтобы в летнее время в закрытом корпусе эта кроха не поплыла вместе с элементами микросхем, можно соорудить малый радиатор. Для его клепания подойдет любой алюминиевый лист 2,5 мм. Например, из профиля можно вырезать примитивный радиатор. Затем с помощью медной фольги и термоклея вывести слой фольги наружу. Таким способом выводится тепло на часть платы с противоположной стороны.
Приклеить такой радиатор на чип памяти можно с помощью суперклея и термопасты:
Делайте все максимально аккуратно, так как попытка одна и очистить капнутый не там клей будет нереально.
Для большей эффективности соедините клеем пластину и медную фольгу, и выведите ее наружу.
Сборка и проверка
После установки самодельной пластины теплоотвода закройте крышку корпуса и к антенному входу подключите антенну. Проверить работу можно и со штыревой антенной. А подопытным устройством будет смартфон с поддержкой OTG и версии Андроид не ниже 4.1. Такие же условия и для остальных гаджетов.
Поскольку питание будет получать подключенный ресивер от устройства, то энергозатраты будут равны 1000 мАч аккумулятора за 3-4 часа работы.
Работает гаджет с приложением PadTV HD, но может еще поработать с другими программами для просмотра телевизионного канала.
Если уровень сигнала качественный, то найденный канал останется в памяти.
Задействуя переходник microUSB – USB, TV тюнер отлично работает под Windows. Драйвера может ОС обнаружить самостоятельно.
Смотрите любимые фильмы и сериалы на любых устройствах благодаря More TV всего за 299 рублей в месяц. Не упустите 7 дней БЕСПЛАТНОЙ подписки!
Стандартная приставка
В привычном форм-факторе ТВ-тюнер можно встретить в большинстве случаев. Новые модели тоже продаются в таком формате. Плюс ресивера в таком фор-факторе – адекватное пассивное охлаждение и поддержка различных портов для подключения ТВ, в том числе и старых моделей.
Плюс корпуса в том, что в него можно вместить самодельный цифровой приемник. В большинстве случаем самоделками выступают платы после ремонта, пригодные к повторному использованию. Зачастую, такие платы можно тоже найти на радиорынке.
Схема подключения
Ресивер сопрягается с телевизором через тюльпаны со старым ТВ, через HDMI с новой моделью.
Устройство ТВ ресивера выглядит так.
По большому счету, схемы работы приставки похожи друг на друга. Вручную собирать такую плату нет смысла, поскольку трудозатраты и цена за составляющие выйдут дороже, чем новая приставка. Если же приставку нужно отремонтировать и для этих целей вам нужна схема ее работы – в 99% случаев ремонт выйдет дороже, чем купить новый ТВ-тюнер.
Схемы
Вот несколько примеров схем.
Схема блока питания (даташит) sw2604.
Схема TNY176DG.
Схема PN8106 с дополнительным питанием +12В (обычно, используют для SCART).
Типовые схемы включения различных тюнеров:
Схема индикатора на SM1668.
Распиновка демодулятора MStar MSB1230.
Преимущества и недостатки
Вот какие преимущества самодельной приставки:
Недостатки цифрового тюнера Т2 своими руками по схемам:
Если самостоятельно собрать тюнер не получается, читайте нашу статью — как выбрать приставку цифрового ТВ.
Заключение
На покупку адекватной DVB-T2 приставки в магазине можно потратить в среднем 1200 рублей. Она будет состоять из новой платы и размещенной на ней элементами, современной прошивкой, поддержкой всех современных стандартов и новыми портами. Приобретая ТВ-тюнер по частям, можно потратить те же 20 долларов, плюс собственное время и ресурсы на доработку самодельного ресивера. С точки зрения экономии такой вариант приобретения можно не рассматривать.