Итак, проект реализации управления источником штатными средствами полностью реализован, код отлажен, работа безупречная!
Подробный отчет:

Начнем с линии питания.
Адаптер (теперь можно называть его так) имеет две параллельные линии питания с двумя реле.
1) первая линия стандартная, реле управляется ремотом с ГУ
2) вторая линия с реле, которое управляется самой ардуино
Нажмите на изображение для увеличения
Название: 43cc899s-960.jpg
Просмотров: 0
Размер:	150.6 Кб
ID:	1157214

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


Теперь о том, как это создавалось. Исходные данные: ардуино нано, DC-DC понижайка и рассыпуха резюков со всякой мелочью:
Нажмите на изображение для увеличения
Название: ef4c899s-960.jpg
Просмотров: 0
Размер:	190.9 Кб
ID:	1157216

Понижайкой выставляем напряжение на входе в ардуино 9В (говорят так лучше)
Нажмите на изображение для увеличения
Название: 4cc899s-960.jpg
Просмотров: 0
Размер:	212.4 Кб
ID:	1157218

Дальше полная схема такова:
Нажмите на изображение для увеличения
Название: e2cc899s-960.jpg
Просмотров: 0
Размер:	163.1 Кб
ID:	1157220

Сначала собираем схему приемника (в левом верхнем углу), чтобы считать команды с пульта:
Нажмите на изображение для увеличения
Название: 4acc899s-960.jpg
Просмотров: 0
Размер:	180.9 Кб
ID:	1157222
В конечной сборке приемник не нужен.

Красивый корпус позаимствовал от акустики Airtone BSA-17CS:
Нажмите на изображение для увеличения
Название: 2acc899s-960.jpg
Просмотров: 167
Размер:	39.6 Кб
ID:	1157224

Его дербаним, удаляем штатную клеммную колодку и ставим маленькую, причем с другой стороны:
Нажмите на изображение для увеличения
Название: 6acc899s-960.jpg
Просмотров: 0
Размер:	223.0 Кб
ID:	1157226

Туда же впихyем невпихyемое (всё остальное по схеме)
Нажмите на изображение для увеличения
Название: 16cc899s-960.jpg
Просмотров: 0
Размер:	263.4 Кб
ID:	1157228

Конечный вид макаранного монстра с крышкой и без:
Нажмите на изображение для увеличения
Название: 56cc899s-960.jpg
Просмотров: 0
Размер:	154.2 Кб
ID:	1157230Нажмите на изображение для увеличения
Название: 59cc899s-960.jpg
Просмотров: 0
Размер:	195.1 Кб
ID:	1157232

По факту имеем следующее изделие с практически заводским видом: клеммная колодка закрыта крышкой - хрен замкнешь, по бокам выведен вход для лепестка, ик-светодио и жгут к рулевому адаптеру. Все жгуты в ленте TESA - очень классная!
Нажмите на изображение для увеличения
Название: 35cc899s-960.jpg
Просмотров: 0
Размер:	184.7 Кб
ID:	1157234Нажмите на изображение для увеличения
Название: cdcc899s-960.jpg
Просмотров: 0
Размер:	133.5 Кб
ID:	1157236

Идем в машину, меняем лепесток:
Нажмите на изображение для увеличения
Название: 7cc899s-960.jpg
Просмотров: 0
Размер:	220.2 Кб
ID:	1157238

На силовой кронштейн за бардачком могучими хомутами лепим адаптер:
Нажмите на изображение для увеличения
Название: b7cc899s-960.jpg
Просмотров: 0
Размер:	242.5 Кб
ID:	1157240Нажмите на изображение для увеличения
Название: c2c899s-960.jpg
Просмотров: 0
Размер:	172.5 Кб
ID:	1157242

Подключаем к нему питания, ремот с ГУ и выход питания плеером. Вся надёжно - вилочки-фигилочки
Нажмите на изображение для увеличения
Название: e02c899s-960.jpg
Просмотров: 0
Размер:	277.3 Кб
ID:	1157244Нажмите на изображение для увеличения
Название: d42c899s-960.jpg
Просмотров: 0
Размер:	279.3 Кб
ID:	1157246

ИК-приемник плеера клеим на бардачок сзажи, напротив адаптера:
Нажмите на изображение для увеличения
Название: 22c899s-960.jpg
Просмотров: 0
Размер:	219.1 Кб
ID:	1157248

Т.е. вся коммутация по сути стационарная, бардачок просто ставится назад, а сообщается с адаптером по воздуху, никаких проводов:
Нажмите на изображение для увеличения
Название: b22c899s-960.jpg
Просмотров: 0
Размер:	93.3 Кб
ID:	1157250

Ну и очень советую глянуть видео, как это всё работает. А работает безупречно:


Ну и тем, кто понимает, либо кому может однажды понадобится, под спойлером полный код программы:

Осторожно, C++

#include <IRremote.h> // подключаем ИК-библиотеку
IRsend irsend; // по умолчанию 3й выход для ИК-диода

int remin; // объявляем ремотИн
int remout = 5; // объявляем ремотАут и назначаем ему порт 5
bool rem_state=false; // статус ремоут
unsigned long rem_Time; // время ремоута

int button1; // кнопка лепестка
int button1_state = 0; // статус кнопки лепестка
unsigned long button1_Time; //время нажатия кнопки на лепестке

int wheel; // кнопки руля
int wheel_state = 0; // статус кнопки руля
int wheel2_state = 0; // статус кнопки 2 руля
int wheel3_state = 0; // статус кнопки громкости вверх
int wheel4_state = 0; //статус кнопки громкости вниз
int wheel5_state = 0; // статус кнопки меню
unsigned long wheel_Time; //время нажатия кнопки руля
unsigned long wheel2_Time; //время нажатия кнопки 2 руля
unsigned long wheel3_Time; //время кнопки громкости вверх
unsigned long wheel4_Time; //время кнопки громкости вниз
unsigned long wheel5_Time; //время кнопки меню

void setup() {
// Serial.begin (9600);
pinMode(button1,INPUT); // лепесток = вход
pinMode(remout, OUTPUT); // ремАут - выход
pinMode(remin,INPUT); // ремИн - вход
digitalWrite(remout, LOW); // задаем начальное состояние реле "выключено"
pinMode(wheel,INPUT); // рулевой адаптер - вход

}

void loop() {


remin=analogRead(A2); // считываем показания на входе ремоута
button1=analogRead(A0); // считываю напряжение на входе с лепестка
wheel=analogRead(A4); // показания с адаптера руля

//------------------------------скетч выполнения программы REMOTE и команды play/pause--------------------

if(remin > 100) // если ремоут приходит - замыкаем реле
{
digitalWrite(remout, HIGH);

rem_Time = millis();

if (!rem_state) // если ремоут приходит - посылаем команду play
{
irsend.sendNEC(0x20202FD, 32);
rem_state=true;
}
}

if(remin < 100) // если ремоут пропадает, отключаем реле через 1 час
{

if(millis() - rem_Time > 3600000)
{
digitalWrite(remout, LOW);
}

if (rem_state) // если ремоут пропадает, посылаем команду PAUSE
{
irsend.sendNEC(0x20202FD, 32);
rem_state=false;
}
}

//----------------------------скетч передачи команд с лепестка-------------------------------


if (button1 < 840 && button1 > 820 && button1_state==0) // фиксируем время, когда последний раз кнопка была отпущена
{
button1_Time = millis();
}

if (millis()-button1_Time > 10 && millis()-button1_Time < 500 && button1 < 1015 && button1 > 1000) // если было короткое нажатие кнопки
{
button1_state=1; // статус кнопки: "было короткое нажатие"
}

if (button1 < 840 && button1 > 820 && button1_state==1 && wheel < 330 && wheel > 320) // если кнопка отпущена, но короткое нажатие было, посылаем сигнал
{
irsend.sendNEC(0x202B04F, 32);
button1_state=0; //обнуляем статус кнопки
}

if ( millis()- button1_Time > 300 && button1 < 1015 && button1 > 1000 && button1_state==1) // если зафиксировано долгое нажатие, посылаем сигнал пульта

{
irsend.sendNEC(0x20242BD, 32);
button1_state=2; // статус кнопки: зажата
}

if (button1 < 840 && button1 > 820 && button1_state==2) // если кнопка была зажата, но уже отпущена - обнуляем статус кнопки
{
button1_state=0;

}

if (button1 < 1000 && button1 > 980) // если лепесток повернут вперед, посылаем команду вверх
{irsend.sendNEC(0x202D02F, 32);
delay (100);
}

if(button1 < 970 && button1 > 945) // если лепесток повернут назад, посылаем команду вниз
{irsend.sendNEC(0x202708F, 32);
delay (100);
}
//----------------------------скетч передачи команд с руля---------------------------------

//volume up----------------------------------

if (wheel < 330 && wheel > 320 && wheel3_state==0)
{
wheel3_Time = millis();
}

if (millis()-wheel3_Time > 10 && millis()-wheel3_Time < 600 && wheel < 275 && wheel > 265)
{
wheel3_state=1;
}

if (wheel < 330 && wheel > 320 && wheel3_state==1)
{
irsend.sendNEC(0x202A857, 32); //громкость вверх 1 раз
wheel3_state=0;
}

if ( millis()- wheel3_Time > 600 && wheel < 275 && wheel > 265 && wheel3_state==1)

{
irsend.sendNEC(0x202A857, 32); //громкость вверх, если кнопка зажата
wheel3_state=2;
}

if (wheel < 275 && wheel > 265 && wheel3_state==2)

{
irsend.sendNEC(0x202A857, 32); //громкость вверх, если кнопка все еще зажата
}
if (wheel < 330 && wheel > 320 && wheel3_state==2)
{
wheel3_state=0;
}

//volume down----------------------------------------------

if (wheel < 330 && wheel > 320 && wheel4_state==0)
{
wheel4_Time = millis();
}

if (millis()-wheel4_Time > 20 && millis()-wheel4_Time <= 600 && wheel < 290 && wheel > 280)
{
wheel4_state=1;
}

if (wheel < 330 && wheel > 320 && wheel4_state==1)
{
irsend.sendNEC(0x20238C7, 32);
wheel4_state=0;
}

if ( millis()- wheel4_Time > 600 && wheel < 290 && wheel > 280 && wheel4_state==1)

{
irsend.sendNEC(0x20238C7, 32);
wheel4_state=2;
}

if (wheel < 290 && wheel > 280 && wheel4_state==2)

{
irsend.sendNEC(0x20238C7, 32);
}
if (wheel < 330 && wheel > 320 && wheel4_state==2)
{
wheel4_state=0;
}

//next track & right--------------------------------------------------

if (wheel < 330 && wheel > 320 && wheel_state==0)
{
wheel_Time = millis();
}

if (millis()-wheel_Time > 10 && millis()-wheel_Time < 600 && wheel < 231 && wheel > 225)
{
wheel_state=1;
}

if (wheel < 330 && wheel > 320 && wheel_state==1)
{
irsend.sendNEC(0x202F807, 32); // следующий трэк
delay (200);
wheel_state=0;
}

if ( millis()- wheel_Time > 600 && wheel < 231 && wheel > 225 && wheel_state==1) // если зафиксировано долгое нажатие, посылаем "RIGHT"

{
irsend.sendNEC(0x2028877, 32); //перемотка
wheel_state=2;
delay(500);
}

if (wheel < 231 && wheel > 225 && wheel_state==2)

{
irsend.sendNEC(0x2028877, 32); //перемотка
delay(500);
}
if (wheel < 330 && wheel > 325 && wheel_state==2)
{
wheel_state=0;
}

//prev track & left----------------------------------------------

if (wheel < 330 && wheel > 320 && wheel2_state==0)
{
wheel2_Time = millis();
}

if (millis()-wheel2_Time > 10 && millis()-wheel2_Time < 600 && wheel < 255 && wheel > 250)
{
wheel2_state=1;
}

if (wheel < 330 && wheel > 320 && wheel2_state==1)
{
irsend.sendNEC(0x2027887, 32); //предыдущий трэк
delay (200);
wheel2_state=0;
}

if ( millis()- wheel2_Time > 1000 && wheel < 255 && wheel > 250 && wheel2_state==1) // если зафиксировано долгое нажатие, посылаем "LEFT"

{
irsend.sendNEC(0x20208F7, 32); //перемотка назад
wheel2_state=2;
delay(500);
}

if (wheel < 255 && wheel > 250 && wheel2_state==2)

{
irsend.sendNEC(0x20208F7, 32); //перемотка назад
delay(500);
}
if (wheel < 330 && wheel > 320 && wheel2_state==2) // если кнопка была зажата, но уже отпущена - обнуляем статус кнопки
{
wheel2_state=0;
}

// play-pause----------------------------------------

if (wheel < 100 && wheel > 85)
{irsend.sendNEC(0x20202FD, 32);
delay (100);
}

// menu (home)-----------------------------------------
if (wheel < 330 && wheel > 320 && wheel5_state==0)
{
wheel5_Time = millis();
}

if (millis()-wheel5_Time > 10 && millis()-wheel5_Time < 600 && wheel < 235 && wheel >= 232) // если было короткое нажатие кнопки
{
wheel5_state=1;
}

if (wheel < 330 && wheel > 320 && wheel5_state==1) // если кнопка отпущена, но короткое нажатие было, посылаем сигнал пульта "OK"
{
wheel5_state=0;
}

// menu (green)-----------------------------------------

if ( millis()- wheel5_Time > 3000 && wheel < 235 && wheel >= 232 && wheel5_state==1)
{ irsend.sendNEC(0x20258A7, 32); // меню короткое нажатие+длинное
wheel5_state=2;
}

if (wheel < 330 && wheel > 320 && wheel5_state==2) // фиксируем время, когда последний раз кнопка2 была отпущена
{
wheel5_state=0;
}

if ( button1 < 1015 && button1 > 1000 && wheel < 235 && wheel >= 232)
{ irsend.sendNEC(0x202DA25, 32); //меню "грин" длинное нажатие + лепесток
delay (200);
}

}




Доволен как слон! Хочу отметить, что это очень увлекательное занятие, я прям получил удовольствие во время изучения темы. Хотя и сжег 2 платы ардуино, ик-приемник с передатчиком и что то еще по мелочи Но куда без этого!