Поскольку “кузовная” часть работ, в рамках этого проекта, еще в стадии доводки и подгонки, имеет смысл рассказать про “электрическую” часть. В отличие от “кузова”, она уже вся готова, устаканена и усилием воли запрещена к дальнейшему “совершенствованию”. Установленный Великий Запрет можно нарушить только в случае очень, очень, ОЧЕНЬ веской на то причины, буде таковая возникнет.


Ранее анонсировалось, что в части индикации у проигрывателя будет кольцо из адресных светодиодов для развлекухи и 4 самостоятельных светодиодов для дела.

Трудно сказать, как это произошло, но теперь количество этих светодиодов, которые “для дела”, стало 7 штук.

Я, конечно, люблю огонечки, но надо было остановиться… А то, не ровен час, придет в голову и экран снова впердолить. Экранчики я тоже люблю… Они – почти, как огонечки, только еще и с буковками!

Тогда и родился Великий Запрет.


Итак… Начать следует, видимо, с вопросов питания. В третьей версии проигрывателя я сделал ошибку, начав ее проработку со всяких кнопок, экранов, светодиодов и программной части. Как результат, питалась все это, откуда придется, без четкой организации, цепочками от одного к другому, по месту, соплями, какими-то левыми штекерами и т.п.

Сейчас, когда пускал ту версию проигрывателя на органы – аж волосы шевелились. Вообще не понимаю, как оно могло работать… Разве, что совсем уж откровенных замыканий нигде не было. А так – жуть жуткая!

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

По сформированному Плану выходило, что блок питания раздает свои вольты по четырем основным направлениям: на ардуину, на малину, на накопители и на иллюминацию.

Обновленная схема подключений, с учетом разросшегося парка светодиодов и изменений в подключении IR-приемника, предложенных в комментах к предыдущей части повествования:


Питание ардуины

С одной стороны я не хочу, чтобы БП и все, что с ним связано, было бы включено постоянно. Из соображений экономии электроэнергии и безопасности. Мы же не круглосуточно смотрим кино. Вечером на пару часов засядем и ОК. Незачем крутить диски, вентиляторы, жечь светодиоды и гонять малину все остальные 22 часа в сутки.

С другой стороны, я хотел таки реализовать ту идею из комментов к прошлой версии, в части полного дистанционного управления центром, включая его запуск. А это подразумевает, что в той или иной степени устройство должно быть таки включено всегда.

Откуда брать питание при выключенном блоке питания? Из самого же блока питания – это очевидно. Можно использовать для этой цели “компьютерный” блок питания формата ATX:

Дело в том, что такие блоки питания имеют в своем хвосте один проводок, который всегда находится под напряжением 5 вольт, если блок питания воткнут в розетку. Не имеет значения включен ли он сам или нет. На этом проводе всегда есть 5 вольт палюбасу.

На схемах с распиновкой разъема стандартного блока питания ATX, этот проводок обычно отмечается, как STBV или VSB. Сокращения от Standby и Voltage. Почти всегда он единственный в косичке имеет сиреневый цвет (если производитель блока питания придерживается хоть каких-то стандартов производства). Располагается на 9м контакте разъема.

Еще в косичке блока питания есть зеленый проводок. Он тоже всегда один. На схемах обозначен, как PS-ON или, иногда, ACT. Живет он на 16м контакте разъема. Пока он “висит в воздухе”, на всех остальных проводах блока, сколько бы их ни было, всегда будет 0 вольт. Ибо при этом, блок питания считается выключенным.

Чтобы включить блок питания и подать напряжение на все его провода, нужно вот этот зелененький провод замкнуть на “минус” (любой из черных проводов). Пока он замкнут на минус – блок питания будет включен. Разорви это соединение – и блок питания выключается.

Можете сами вручную включать и выключать такой блок питания. Да хоть бы и простой металлической канцелярской скрепкой.

В составе почти любой стандартной компьютерной материнской платы есть небольшой электронный контур, который всегда жив, даже если вся остальная материнская плата обесточена. Потому, что он питается с того сиреневого проводка из блока питания, который всегда под напряжением. Все, что делает этот контур: по какому-то внешнему событию (обычно, кнопка) размыкает или замыкает контакт между зеленым проводом и минусом. Т.о. управляя включением/выключением блока питания.

Ардуина, в составе данной моей версии проигрывателя выполняет функции канцелярской скрепки. Среди прочего…

Но есть проблема.

Да, 5 вольт для поддержания жизни ардуины у нас есть. Но следует учитывать, что ампер на этом сиреневом проводке, довольно часто – ежик чихнул. Исследования личных загашников показали, что все имеющиеся в них ATX блоки питания – древние, как помет динозавров (что и не удивительно, впрочем). Пробежка по спецификациям показала, что у самого зверского из них, на STB проводе не более 0.8 ампера. У остальных – еще меньше. От 0.35, до 0.5.

На таком питании, даже ардуина может в лучшем случае лишь выживать сама. Добавь пару светодиодов и она заглохнет… Да, я проверил…

Был еще блок питания в третьей версии шарманки.

Пускай, как и прочие выходцы из моих загашников, он был далеко уже не молод на момент установки. Но все же – лучшее и самое сильное, что на тот момент в загашниках нашлось… Вот тогда третья версия шарманки и пошла на органы. Решил перенести ейный блок питания в новую версию проигрывателя. Обычное дело в моих проектах: “Используй то, что под рукой“(с)…

Для этого блока питания спецификация говорила 1.2 ампера на STB-проводе. Вроде бы и норм уже. В мире ардуин, это нормальное полноценное питание для каких-то простых функций с простой нетребовательной электроникой на борту. Скажем, там, парочка светодиодов, реле какое мелкое, маленький сервопривод и все такое.

Но есть проблема!

Замеченная парочка вздувшихся от долгих лет эксплуатации конденсаторов на плате блока питания, вынудили меня и этого динозавра отправить в ящик на запчасти к остальным его собратьям. Увы… Походу, мои, казавшиеся бездонными, загашники, наконец, начинают иссякать. В части ассортимента блоков питания, во всяком случае…

Короче, купил я новый блок питания, достаточный по мощности для моих целей и ажно с двумя амперами на STB-проводе. Казалось бы, вот она, алилуйя!

Но есть проблема!

Ардуина прекрасно себя чувствует на пяти вольтах от STB при двух амперах. Просто отлично! Но следует учитывать, что при входящих на нее саму 5 вольтах, на всех ее выходах напряжение будет меньше. 4.2-4.6 вольта. А ардуине этим всем еще надо дохрена народа кормить.

Помните про новогоднюю елку в начале поста? Оно, может и ничего… Я вполне уверен, что даже с учетом просадки по вольтам на выходе их все равно хватило бы. Тем более, что часть этой люстры питается не через ардуину, а напрямую из блока питания. Но оставшейся части хватит, чтобы вернуть проблему с амперами. Те два, что есть на STB, при просадке по вольтам, начнут выжираться – только в путь. А эта ветка в блоке питания вовсе не рассчитана на широкомасштабную кормежку всех и вся на максимуме своих возможностей.

В качестве решения… ОК, пускай в режиме ожидания ардуина кормится с STB-провода. Этого точно хватит ей самой, IR-приемнику, который ждет сигналов с телевизионной дисташки и мосфету, который замыкает зеленый провод и включает блок питания.

Когда включится блок питания, на ардуину, можно подать уже нормальное питание c его веток.

Но есть проблема!

“Нормальное” питание для ардуины вовсе не 5 вольт. Это ее минимальное питание. Рекомендуемое же: 7.4 вольта. Тогда на выходе со всех шпилек ардуины мы будем иметь честные 5 вольт и кормить ими все, что захотим.

Проблему можно решить, используя не выходящие из блока питания 5 вольт, а выходящие из него 12 вольт. Но напрямую их в ардуину пихать тоже не рекомендуется. Потому, что 12 вольт – предельные для нее.

ОК. Возьмем 12 вольт и пропустим их через преобразователь на базе MP1584EN. Типа такого:

Настроим так, чтобы на выходе было 7.4 вольта. ОК.

Но есть проблема!

Как только врубится блок питания и на ардуину через преобразователь попрут 7.4 вольта, они же самые попрут и на STB-провод обратно в блок питания. От этого может поплохеть самому блоку питания.

Мало того. Зарулив в одну точку на ардуине STB-провод и преобразователь, то, даже, в выключенном состоянии блока питания, на преобразователь попрут 5 вольт из STB. Причем в “обратном” направлении “против шерсти”. На что, обычно, такие преобразователи не рассчитаны. И преобразователю с этого может поплохеть.

Так в системе появляются диоды. Известно, что они пропускают ток только в одном направлении. Соответственно, комбинация из двух диодов, каждый на своей ветке, будет пропускать ток от каждого из источников к ардуине. Но не будут пущать его ни к одному из источников обратно. Чего и требуется.

На схеме выше, эта пара диодов изображена в виде двух физических полупроводников. Но на самом деле, ситуация довольно типична и на такой случай есть деталь, где уже все “в одном флаконе”.

Например, диод шоттки, типа мощного MBR3045PT (или аналогичный) можно легко добыть из любого старого блока питания. И, как раз, только что, один из них я отправил в ящик на запчасти. Надо же, какое удачное совпадение! Угу…

Но есть проблема!

Диоды, какие бы шоттке они ни были – тоже просаживают вольты.

Поэтому крутим регулировку преобразователя питания до тех пор, пока не получим 7.4 вольта ПОСЛЕ диодов, а не перед ними.

Сколько там будет после преобразователя перед диодами – уже не важно. Всяко не больше исходных 12… Используемый в данном случае MBR3045PT от этого даже чуть теплым не станет…

Решена последняя проблема… Алилуйя!

Для всех этих диодов и преобразователя вовсе не нужно городить никаких плат. Это очень компактные детали, к которым идет то всего пара-тройка проводов. Вполне уместно применение навесного монтажа с последующей укаткой в термоусадку:

Допускаю, что все вышеизложенное – результат паранойи и оверинженерига. Вполне может быть, что никаких этих преобразователей и диодов можно было не городить, а тупо питать ардуину с STB-провода и не париться… Как часто бывает, я запросто мог из пальца высосать кучу несуществующих проблем и доблестно их решить… Не знаю…

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


Питание малины

Малина кормится напрямую от блока питания с одного из его 5-вольтовых проводов. Оживает вместе с ним. И вырубается вместе с ним же.

Сама они никого через себя не кормит (кроме трех сугубо личных светодиодов). Она – главная. На самом верху той пищевой цепочки, которая складывается в кузове проигрывателя. Ее задача: показывать кино людям и раздавать приказы всем этим жалким ничтожествам, которые по i2c-шине стоят ниже ее в иерархии.

Это и все, что можно рассказать о питании малины… Фух! Это была самая трудная часть повествования.


Питание накопителей

HDD- и CD/DVD-приводы. Их питание ничем не отличается от питания малины. Оно у них свое, тоже напрямую из блока питания. По идущим из него родным хвостам с штекерами для подключения к sATA устройствам.

Проблема была тут только одна… Тоже, вероятно, высосанная из пальца…

Обычно, на одной косичке из блока питания, размещается два-три-четыре штекера для sATA устройств.

Предполагается, что у вас этих устройств, типа, много и они расположены рядом. Тогда длины проводов между штекерами хватает протянуть их от одного к другому.

В моем случае все оказалось чуточку печальнее. На каждой косичке была комбинация только из двух sATA-штекеров + один обычный четырехштырьковый PATA… И отрезков проводов между теми двумя sATA-штекерами, что были на одной косичке, мне не хватало дотянуться от HDD до CD/DVD привода.

Оно бы и хрен с ним. Именно на такой случай из блока питания идет несколько независимых друг от друга косичек с гирляндой разъемов на каждой.

К сожалению, для меня, тянуть по индивидуальной косичке к каждому из накопителей, означало удвоение количества вермишели в кузове. Да еще и грозди штекеров, которые не используются…

Проблема была решена очень просто. Одна из косичек была обрезана до PATA-штекера (он на ней шел первым), а в него пошла вот такая “вилка”, которых у меня в загашниках откуда-то взялось в неимоверном количестве (откуда я их надергал – загадка есмь):

У “вилки” разнос между штекерами больше, чем у косички и мне этого как раз хватило. Т.о. и вермишели не увеличилось, и провода нигде не в натяг, и штекеров лишних по кузову не шкандыбается.


Питание илюминации

Тут с питанием все многообразно. Какие-то светодиоды питаются с ардуины, какие-то с малины, какие-то – напрямую из блока питания.

Например, кольцо адресных светодиодов. Оно управляется одним-единственным сигнальным проводом. Вот он идет на ардуину. А общее питание кольца (5 вольт) – напрямую из блока питания.

Или, вот, скажем… Пока еще неизвестно, будет ли у меня, модный нынче, адаптивный Bias Lighting (aka Ambilight) позади экрана.

Помимо того, что вступил в силу запрет на внесение изменений в схему, я еще не особо то и уверен, что оно мне надо. Так… Поиграться было бы интересно, но не более того… Пока…

Если подумать, в целом, для реализации этого безобразия у меня все и так уже есть в системе. Обычно это все и делают в связке: малина (или телевизор) + ардуина + светодиодные ленты. Для самого KODI, например, даже плагин есть уже готовый… Но…

В общем, если оно будет когда сделано, то питаться оно тоже будет напрямую из БП, а к ардуине пойдет только один сигнальный провод для управления.


Назначение илюминации

Что все эти огоньки значат (согласно схеме выше)…

Addressable LED ring
Развлекательная часть индикации.

В программу ардуины заложены различные сценарии анимаций этого кольца. Типа “бегущие огоньки”, “таймер”, “заполнение”, “вертушка” и т.п. Каждый сценарий имеет кучу параметров, типа “цвет”, “скорость”, “количество огоньков”, “одноразовый/циклический”, “направление” и т.п. В сумме, это достаточно разнообразный и не скучный для глаза набор в духе “все, что вам надо для эпилептического припадка”.

Упомянутые сценарии, их комбинации и варианты, могут проигрываться ардуиной в соответствии с обстоятельствами. Например, при включении, когда ардуина уже запустила блок питания, но малина еще не загрузилась, проигрывается сценарий “ожидание” – по кругу бегает цепочка зеленых огоньков. То же самое и при выключении, только огоньки красные. При перезагрузке – желтые. При событии “нажата кнопка ВОСПРОИЗВЕСТИ”, проигрывается одноразовый сценарий с пробегающей вертикально по кольцу “полоской” слева направо…

Ну и все в таком духе. В следующих частях повествования покажу видео процесса. В рамках “электронной” части это сейчас не важно – чисто софтовая заморочка.

И все это исключительно для “радовать глаз”. Никакой особой смысловой нагрузки оно в себе не несет. Как уже говорил – я люблю огонечки!

Data IR
Индикация приема сигнала с дисташки.

Телевизионной, от ресивера, проектора – любой дисташки, коды которой вбиты в программу ардуины. Сейчас, для теста я использую урезанный комплект с одной дисташки от ресивера (челлендж: угадай производителя дисташки по десятичному коду – получи нихрена в подарок бесплатно!):

#define IR_FALSE 4294967295     // false signal
#define IR_PWR1 4260243992      // ON/OFF button 1
#define IR_PWR2 691015          // ON/OFF button 2
#define IR_RBOOT 691099         // REBOOT button
#define IR_ESC 797511           // ESC/RETURN
#define IR_PLAY 363335          // PLAY
#define IR_STOP 101191          // STOP
#define IR_PAUSE 625479         // PAUSE
#define IR_FRW 232263           // FORWARD
#define IR_BCK 887623           // BACKWARD
#define IR_NEXT 437063          // NEXT
#define IR_PREV 961351          // PREVIOUS
#define IR_VLU 9228             // VOLUME Up
#define IR_VLD 25612            // VOLUME Down

В программе, простой switch (…) { case … : } сравнивает полученный сигнал с этим списком. Если сигнал опознан и подтвержден – светодиод моргнет. Ясен пень, список может быть расширен насколько угодно команд. До тех пор, во всяком случае, пока у ардуины хватает сил и памяти чекать лист. Но вряд ли у меня в доме найдется СТОЛЬКО разных дисташек.

До кучи… Ресивер же включается всегда вместе с проигрывателем… Он делает звук. Без него в кино звука не будет… Ну и, ясен пень, в случае этой дисташки, нажатие кнопки ВКЛ включит сразу оба устройства одновременно. Ведь оба они поймают и распознают один и тот же код из нее. Жаль, у включения проектора другая дисташка со своим кодом. А то бы – сразу три за одно нажатие было.

Вообще, есть у проекторов такая фишка – включаться автоматически, если на видеовходе появляется хоть какой-нибудь сигнал. Тогда, если стартует ресивер и плеер, проектор включается сам. Есть такая фишка. Но не у моего текущего проектора, к сожалению… Он слишком стар для этих трюков…

Есть и другой выход – добавить на ардуину IR-передатчик… Так, стоп… Помнить о запрете. Помнить о запрете. Помнить о запрете. Никаких изменений и новых хреней в конструкции…

На физическом уровне, вся описанная выше новогодняя елка уложена вот в такой диск вокруг единственной кнопки:

При такой компоновке, там у него посадочных гнезд для “самостоятельных” светодиодов – восемь штук. У меня их всего семь, при том, что один из этих семи – в самой кнопке. Так, что два гнезда еще остается “на вырост”.

Просто дизайн этого диска был сделан еще до введения Великого Запрета и сам он был напечатан тоже до него. Так, что пока пустые гнезда заткнуты заглушками, чтобы не отсвечивать…

Подробнее будет, когда дойдет дело до рассказов о кузове. Хотя и так все очевидно, думаю.

Data ARD to RPi
Индикация передачи команды из ардуины в малину.

На самом деле, поскольку малина является Хозяином, то ардуина ничего не может ей передать по собственной инициативе. Так, что, формально, срабатывание этого сигнала означает, что малина _запросила_ данные с ардуины, а та их передала. Если передача прошла успешно – светодиод моргнет.

Data RPi to ARD
Индикация передачи команды из малины в ардуину.

Вот тут – без всяких условностей. Если малина-хозяин отдала приказ ардуине, та его приняла и поняла – светодиод моргнет.

RPi alarm
Что-то у малины пошло не так.

Любой форс-мажор. Как то: перегрев проца, перегрев видюхи, перегрузка проца, нехватка памяти, нехватка напряжения – светодиод загорится. Он не конкретизирует проблему. События все эти крайне редки, поэтому – норм. Просто, если загорелся, то нужно лезть в консоль и смотреть, что там стряслось, смотреть логи…

RPi ACT/POWER
Индикация работы самой малины.

Типа моргающей лампочки жесткого диска. Когда происходит какая-то активность в малине – светодиод моргает. У нее, вообще, такой светодиод есть прямо на борту по умолчанию. Мелкий, такой, противный SMD, наглухо впаянный в плату. Так, что мой светодиод, просто его “выносная” и более приятная глазу версия для передней панели проигрывателя.

RPi net
Связь с внешним миром.

То, что wifi-модуль на малине включен или эзернет в розетку воткнут, не всегда означает, что у устройства есть реальная связь с внешним миром. В лучшем случае – это может косвенно говорить о связи внутри локальной сети. Да и то…

Поэтому, малина с некоей периодичностью пингует гугловый 8.8.8.8 во внешней сети. Если пинг есть – светодиод горит. Если пинга нет, то – не горит.

Power CTRL
Индикация включения.

Это тот самый светодиод, который встроен в кнопку. Он единственный, кто живет с ардуиной на “диетическом” питании, когда система выключена. В этом режиме он оооочччччееееенннньььь плааааавнооооо (управление через PWM-сигнал) разгорается и так же затухает каждые десять секунд. Типа, система спит. При включении, когда стартанул блок питания – горит постоянно. Если он не горит и не тлеет чахло в спящем режиме – значит тока в системе нет совсем = блок питания сдох. Или не воткнут в розетку.


Общение компонентов

Общение между малиной и ардуиной происходит по шине i2c. Малина – Хозяин (Master), ардуина – Раб (Slave)… Мнэ… Ах, да… Чувства. Всегда забываю про чьи-нибудь чувства… Впрочем… Да и ладно…

Сама малина нихрена не делает в плане управления иллюминацией, контроля кнопки, слежения за IR-приемником и т.п. Всем этим занимается ардуина.

Малина крутит кино – это ее основная задача и объект приложения всех процессорных усилий. Фоном она лишь обмениваться с ардуиной коротенькими командами: “включи этот светодиод”, “проиграй вот последовательность №4 на светодиодном кольце”, “скажи, там с дисташки мне ничего не передавали?” и т.п.

Это все просто, понятно и относится больше к области программного кода нежели к электронике, как таковой.

Но есть проблема!

На уровне электроники она и есть. Дело в том, что все сигнальные цепи у малины – 3.3 вольта. А у ардуины – 5 вольт. Причем, когда малина говорит что-то ардуине – все норм. Ардуина вполне может расслышать, что там малина своими 3.3 шепчет. Но в обратную сторону… Малинка может и приуныть, когда ей ардуина проорет что-нибудь во все свои 5 вольт… А может и не приуныть… Видел кучу проектов, где народ этой вольтовой несостыковочкой не заморачивается и травит сигналы напрямую. Вроде бы даже все работает.

Но нет смысла рисковать, когда проблема решается проще легкого. Достаточно между ардуиной и малиной поставить примитивный logic converter (“преобразователь логики” если по-русски?). Это вот такая крошечная платка:

С одной стороны ей подаются 5 вольт. С другой стороны – 3.3 вольта. Минус – общий. На остальные контакты, с одной стороны подаются низковольтные сигналы, с другой – высоковольтные. Т.о. кто бы кому чего не послал, каждый, из ведущих диалог, на своей стороне получит сигнал с теми вольтами, которые предпочитает.

Сам преобразователь идеально вписывается на мою плату-конструктор. Прямо напрямую в те дырки, которые шина i2c с ардуины выведена. С учетом того еще, что туда же и ардуиновые 5 вольт с минусом поданы:

Но есть проблема!

Да, это я молодец, что последовательность контактов на плате-конструкторе совпадает с последовательностью на преобразователе, включая 5 вольт и минус (случайно повезло – и не думал даже про такое, когда плату разводил). Но подача туда же 3.3 вольт, платой-конструктором не предусматривалось в принципе ни в каком виде.

У меня эти 3.3 вольта есть в двух местах. Разводка платы-конструктора не предусматривает их подачу к преобразователю – да. Но на самой плате-конструкторе они есть. Они нужны для питания wifi-модуля, который на нее ставится, когда она изображает из себя контроллер “умного дома”.

До кучи, эти 3.3 вольта есть и в блоке питания. Они там всегда есть. Обычно, это оранжевые провода, идущие к контактам 1, 2, 12 и 13 на ATX-разъеме.

Собственно, проблема сводится к выбору – откуда брать? В итоге, решил брать со своей платы-конструктора. Раз уж все равно провод тянуть, то пускай это будет коротенький патчик на плате, нежели очередная вермишель через весь кузов от блока питания.

Вот этот желтенький проводок по плате – оно и есть:

Таким образом, налажен надежный и устраивающий всех диалог между малиной и ардуиной.

Присутствует, даже, некоторая избыточность. Для общения малины и ардуины надо всего два канала. А платка преобразователя у меня была только четырехканальная. Так, что две пары шпилек остались незадействованными… Ну, не было у меня двухканального преобразователя. Покупать/ждать доставку… Того не стоит, в данном конкретном случае…


В части ключевых моментов электроники, вроде, все…

Продолжение читайте в следующих частях повествования…