Главная » Хабрахабр » Pi-Sonos: хобби, вышедшее из-под контроля

Pi-Sonos: хобби, вышедшее из-под контроля

Со временем, она впитала в себя накопленный пользовательский опыт и учла допущенные ранее недочеты. Идея дизайна нового корпуса интернет-радиостанции Pi-Sonos родилась еще до завершения работы над предыдущей его версией. На этот раз все «по-взрослому».

Прошу любить и жаловать

Давайте попрощаемся с названием "Pi-Sonos", и сегодня и впредь будем называть колонку "RadioBox". И хотя в этот раз Sonos Play 1 оказал наибольшее влияние на развитие проекта, новое название, во-первых, звучит лучше, а во-вторых, отражает его специфику и самостоятельность.

Мотивация

Вроде бы корпус №2 был более удобным для пользователя по сравнению с первым, но и он тоже был не лишен недостатков.

Основными и принципиальными были два из них:

  1. Кнопка «play/pause» на переднем торце
    Кнопка не самая жесткая, но тем не менее, при нажатии на нее колонка очень часто сдвигалась с места.
  2. Аналоговый регулятор громкости («крутилка»)

    Первый способ — цифровой, второй — аналоговый. Громкость можно регулировать не только со смартфона, но и на самой колонке. Особенно расстраивали случаи, когда кто-нибудь выкручивал аналоговую громкость на 0, и потом сколько ни тыкай в смартфон — громче не сделаешь, приходилось все равно вставать и идти крутить ручку.
    Соответственно, периодически между ними возникал рассинхрон.

Следовательно, надо было как минимум заменить аналоговую крутилку на две цифровые кнопки громкости, и перенести все три кнопки на верхний торец. Кстати, в Sonos Play 1 сделано именно так.

Первая — это плавное мигание светодиода в режиме паузы. Сюда же добавились еще две «хотелки». Вторая — другой цвет светодиода во время загрузки колонки, чтобы было без смартфона понятно, когда колонка готова к использованию после включения.

Хотелось повторить эстетику и лаконичность Sonos. Ну и последнее, но не по важности — хотелось красивый корпус с минимальным количеством швов, плавными линиями и стильным дизайном.

Процесс

Корпус

Там не прорисованы фазоинверторы, но объем корпуса уже рассчитан под имеющиеся динамики и выделены места для динамиков и электронной начинки. Скетч в начале статьи — реальный набросок будущего корпуса. Как ни крути, а склеить такое из отдельных стенок нереально из 8мм МДФ (я не рассматриваю другие материалы по двум причинам: 1) удобство обработки этого МДФ; 2) отсутствия других нормальных материалов в магазинах в моем районе). Сглаженные углы стали для меня настоящим вызовом. Пришлось полностью менять подход к изготовлению корпуса.

Она проста до неприличия: рассекаем весь корпус горизонтальными плоскостями с интервалом 8мм и вырезаем из МДФ получившиеся проекции. На этот раз пришлось применять технологию склейки слоев. Главный плюс такого подхода — можно сразу сделать много камер почти любой формы (например, очень удобно делать фазонверторы). Идейный вдохновитель технологии, как всегда, канал SoundBlab. Но, как известно, дьявол кроется в деталях.

надо сделать 21 слой. Высота корпуса со всеми «крышками» — 168мм, МДФ толщиной 8мм, т.е. Надо: Нет, не так.

  • распилить панели МДФ на 21 заготовку;
  • затем сделать 21 деталь определенного размера (т.е. отфрезеровать 63 грани, по 3 грани на каждой детали, одна грань изначально была ровной, следовательно, отправной);
  • потом срезать фрезером 84 угла по шаблону;
  • далее — выпилить около 50 отверстий разной величины и формы;
  • после этого склеить все детали в единый корпус;
  • а еще высверлить и зафрезеровать отверстия под динамики и порты Raspberry Pi;
  • наконец, зашпаклевать, зашкурить и покрасить корпус и крышки;
  • и только тогда можно преспокойно приступать к сборке компонентов внутри корпуса и «финишной» отделке колонки.

Если с распилом не было проблем (на торцовочной пиле п.1. занял минут 10), то дальше начинались некоторые сложности. Для тех, кто не сталкивается с деревообработкой, поясню: сделать больше 2х строго прямоугольных деталей строго одинакового размера и формы с помощью только фрезера и линейки — очень сложно.

Можно было сделать одну деталь, а потом использовать ее как шаблон (примерно вот так), но тогда (как видно на примере) за раз можно обработать всего 2 грани из 3х, а затем надо поворачивать заготовку, что все равно грозило «сбить прицел» и сделать что-нибудь криво.

На практике оказалось проще и лучше собрать свой собственный небольшой фрезерный стол и фрезеровать детали уже на нем.

Немного про стол для тех, кому любопытно

В сборке фрезерного стола нет ничего сложного. Материалом столешницы послужили остатки ламината — он достаточно жесткий и дает идеально ровно гладкую поверхность. Для рамы использован строганный брусок 30х30мм. 2 рамы, 4 с небольшим ребра жесткости — et… voilà:

В самом простом случае, его можно было просто крепить к столешнице струбцинами с двух сторон, но это не comme il faut. В качестве направляющей для фрезеровки идеально подходит квадратный алюминиевый профиль 20мм. Для этого ламелях параллельно длинной грани на небольшом расстоянии от края фрезеруются пазы. Гораздо лучше сделать его перемещаемым по столу по специальным направляющим и фиксируемым винтами с барашками на концах. Для усиления зажима можно использовать гровер-шайбу под шляпкой винта (снизу).
Поскольку все ламели ровные, пазы получаются абсолютно параллельными, алюминиевый профиль свободно перемещается по ним.

А вот подъехали фоточки процесса

Распил заготовок:

Фрезерный стол в действии: фрезеровка углов по шаблону:

Будущие крышки лежат отдельно. Все детали после фрезеровки.

Тут должно быть фото выпила отверстий в слоях, но Джонни уже сделал монтаж.

Корпус колонки перед шлифовкой:

В конце корпус был покрашен в черный цвет, чтобы черные динамики не выделялись на нем темными пятнами после покрытия декоративным материалом.

И, собственно, вот так все выглядит в собранном состоянии:

И сзади:

Крышки сверху и снизу покрашены белой эмалью из баллончика в 5 слоев (сильно жалею, что не выбрал акриловую краску — эмаль сильно воняла, долго сохла, а сейчас активно собирает пыль и отпечатки). Снаружи наклеена акустическая ткань, а белые заглушки, закрывающие ее стык и отсек для электроники — обрезки кабель-канала 40х25.

Начинка

К ним нет нареканий. Динамики переехали в новый корпус из старого. Это все те же пара мидбасов и пара твитеров, подключенных к усилку через кроссоверы.

Раз уж отказываемся пользоваться аналоговой «крутилкой» платы Suptronics X400, то можно, как вариант, просто спрятать ее в недрах корпуса. Теперь по усилку. Но плата большая, и из-за её размеров появились пара проблем, вынудивших меня поискать ей замену.

Когда-то давно я считал, что их AMP+ — это только аудиоусилитель, который надо вешать над их же ЦАП-ом DAC+. Спасибо IgorKKK, что заставил разобраться в продукции Hifiberry. А вот у её потомка — AMP2 — с характеристиками все ОК. Но AMP+ — это плата «все-в-одном», и она вполне могла бы заменить X400, только вот характеристики у нее хуже. Она компактнее, чем X400, и зажимы у нее выведены в более удобную для монтажа сторону.

Для сравнения размеры X400 и AMP2 в сборе с Raspberry Pi 3

Suptronics X400:

Hifiberry AMP2:

Кстати, AMP2 на Алиэкспрессе не продается, её я заказывал напрямую у производителя (очень рекомендую — заказ из Швейцарии дошел до меня всего за 6 дней). А вот AMP+ вполне себе можно купить и на АЭ.

Расположение компонентов внутри корпуса

Сверху — «малинка», усилок и платы управления:

Снизу — динамики и кроссоверы:

Элементы управления

Теперь платы пришлось разделить. В прошлой версии за управление воспроизведением управляла одна маленькая плата с кнопкой и светодиодом. Первая плата — с кнопками «play/pause», «volume -» и «volume +» — разместилась под верхней крышкой, вторая — управляющая миганием светодиодов — в отсеке с «малинкой».

Схема плат для особенно пытливых умов

Физические платы разделены на схеме серой линией.

Немного комментариев по схеме.

Справа все тривиально — три кнопки с тремя парами защитных резисторов, защищающих входные пины от выгорания.

Сразу бросается в глаза схема включения синего светодиода LED2. Слева интереснее. Здесь используется тот факт, что все GPIO-пины общего пользования по умолчанию работают как входные (input). Принцип её работы прост, но неочевиден. 3V подается напряжение, которое гонит ток через ограничительный резистор R1, синий светодиод LED2 и пин OUT1 (который пока еще не OUT, а IN, поэтому-то через него можно пропускать ток на вход). При включении питания с пина +3. 3V (HIGH). Когда Raspbian загружен полностью, запускается мой демон, который переводит пин OUT1 в режим output и подает на него напряжение +3. Т.о. Разность потенциалов, падающая на участке «R1-LED2» становится равной 0V, и светодиод гаснет. колонка сигнализирует о полной готовности к работе.

Белый светодиод работает в трех режимах:

горит постоянно — колонка воспроизводит музыку;
мигает редко и плавно — колонка в режиме паузы;
мигает часто и резко — нажата какая-либо кнопка.

Когда нужна плавность мигания, через пин OUT3 на затвор MOSFET-а Q1 подается логическая 1 (HIGH, +3,3V), транзистор открывает участок цепи «R12-C1-Q1». Включением и отключением белого диода управляет пин OUT2, а плавностью мигания — пин OUT3. 3V), ток начинает заряжать конденсатор C1 и по мере его заряда зажигает светодиод LED1. И тогда при установке пина OUT2 в уровень HIGH (+3. Несложно посчитать, что время полного заряда/разряда конденсатора составляет примерно 3 секунды, оптимальный, на мой взгляд, период мигания.
А при установке пина OUT2 в уровень LOW (0V), конденсатор постепенно разряжается через светодиод, плавно уменьшая уровень его яркости до 0.

Наконец, софт и UX

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

Сравнение с версией 2.0

Было

Стало

В логику работы физических кнопок добавилась обработка долгого нажатия:

play/pause: короткое нажатие — запуск/остановка воспроизведения; длинное нажатие — переключение станции на следующую по списку;

volume: короткое нажатие — однократное изменение громкости; длинное нажатие — непрерывное изменение громкости.

Хорошо, а что дальше?

На фото видно, что корпус собирался летом, и у него было достаточно времени на обкатку и доработку. На текущий момент и внешний вид, и качество звука, и юзабилити устраивают как моих домашних, так и (что главное) меня. И хотя пока я не вижу причин для переделки этого корпуса и/или замены его частей, останавливаться на достигнутом я не намерен. В планах — превращение этой колонки в голосового помощника, а также изготовление мини-колонки для детской на основе Raspberry Pi Zero в корпусе, напечатанном на 3D-принтере. Так что ждите новых статей в недалеком будущем!


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Huawei и Nutanix объявили о партнёрстве в сфере HCI

В конце прошлой недели появилась отличная новость: два наших партнера (Huawei иNutanix) объявили в партнерстве в области HCI. Серверное оборудование Huawei теперь добавлено в список совместимости Nutanix (Nutanix hardware compatibility list). Huawei-Nutanix HCI построено на базе FusionServer 2288H V5 (это ...

По следам калькуляторов: SpeedCrunch

Исследование кода калькуляторов продолжается! В этом обзоре будет рассмотрен проект SpeedCrunch — второй по популярности среди бесплатных калькуляторов. Введение SpeedCrunch — это высокоточный научный калькулятор с быстрым пользовательским интерфейсом, управляемым с клавиатуры. Это бесплатное программное обеспечение с открытым исходным кодом, ...