PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Рабочий журнал (http://pccar.ru/forumdisplay.php?f=25)
-   -   Skoda Superb CarTablet (http://pccar.ru/showthread.php?t=20274)

cherkasoff 16.01.2014 11:58

Skoda Superb CarTablet
 
Вложений: 4
Skoda Superb 2012 + Nexus 7 2012 = 4024!

Что реализовано:

- Управление кнопками с руля через CAN-BUS Shield и Arduino Leonardo

Планы по проекту:

- Переделка управления с руля на вариант с переназначением кнопок с помощью ПО на планшете с помощью Arduino Uno.
- Прикручивание SDR-радио.
- Попытка реализации отображения информации из CAN-шины на экране планшета и/или Maxidot-е.

Что не будет реализовано:

- Переезд на Android 4.4.2. - потому что вот почему.

Для реализации проекта требуется:

1. Nexus 7 2012
2. Arduino Leonardo (или его клон)
3. Seeedstudio CAN-BUS Shield (можно самостоятельно спаять по схеме от lti1 из этого поста)
4. Преобразователи питания PSD-15A-05 и Мастеркит PW24-1-2
5. Переходная рамка 2DIN.
6. HiFimeDIY Sabre Tiny USB DAC. Возможны варианты, но совместимость надо проверять.
7. Какой-нибудь хаб. Можно активный, можно пассивный. Если планируется большое количество периферии, то лучше активный. У меня кроме DAC, флешки и Arduino ничего не предполагается, поэтому мне достаточно пассивного D-Link на 4 порта.

ЭТАП 1. Доработка планшета.

Делаем чтобы планшет включался при подаче внешнего питания. Как это сделать написано здесь.

Затем нужно:

1. Разблокировать загрузчик.
2. Установить CWM рекавери.
2. Установить прошивку USB ROM "от Тимура". Планшет с 3G называется tilapia, а без 3G - grouper. Важно прошивки не перепутать.

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

Всё что написано дальше делаем при выключенном планшете.

Вскрываем планшет пластиковой лопаткой или карточкой (можно и ногтями, если они есть). Начинаем вскрывать с угла рядом с pogo-pin.
На снятой крышке имеется сеточка, закрывающая динамики. Она держится на двух пластиковых "соплях" и клее. Сопли срезаем и аккуратно отклеиваем сеточку, а потом убираем её в коробку от планшета - приклеим в случае если будем продавать планшет.

Аккумулятор и его контроллер будем из планшета убирать. На плату от контроллера идет разъем с 6 проводами - отключаем его от платы. Аккумулятор с контроллером приклеен к корпусу - отклеиваем. Прикладываем умеренное усилие - всё должно отклеиться.

После этого отрезаем коннектор от аккумулятора примерно посередине.

Провода лучше резать по-одному, иначе есть шанс что-нибудь замкнуть на контроллере и вывести его из строя, например.

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

Два припаянных провода продеваем в отверстие динамиков (с которого сняли сеточку) с внутренней стороны, а крышку закрываем.

Крепление к переходной рамке заключается в следующем:

1. Срезаем ножом все неровности на внутренней стороне внутренней рамки и обезжириваем её.
2. По всему периметру рамки наклеиваем тонкие полоски двустороннего скотча 3M.
3. Прикладываем планшет к скотчу с умеренным усилием. Следим за тем, чтобы с внешней стороны было ровно и красиво. Важно не закрыть датчик освещенности.
4. Я еще сделал из эпоксилина "кучки", а в них вставил стоечки от материнской платы, в которые винтиками прикрутил прижимающие пластинки металлические, чтобы планшету ну вообще некуда было деться.

Доработки планшета завершены.

ЭТАП 2. Питание.

Схема питания находится на доработке!

В теме про Nexus 7 есть over9000 вариантов питания через одну PSD, 2 PSD, 1 PSD с диодом, с помощью святой воды, с помощью катушек Тесла и электромагнитного поля Земли.
Я описываю так как заработало у меня. Если вы знаете, что "можно сделать иначе" - это отлично. Я пробовал 3 варианта питания, заработал только тот который я использую.


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

Питание строим следующим образом.

На плату планшета (через высунутые провода) подаем питание с преобразователя PW24-1-2, предварительно отрегулировав его на выходе до 4.5-4.6 вольт. На вход преобразователя подаем постоянные 12 вольт, которые имеются в наличии в колодке автомобиля, в которую подключается ГУ. Там черный провод - минус, желтый - плюс.

В USB-разъем подаем питание с PSD-15A-05 через OTG-кабель с питанием (y-кабель). Если кабеля с питанием нет, то можно купить обычный OTG-кабель и припаять к нему питание. Плюс на красный провод, минус - на черный соответственно. Если и обычный OTG-кабель недоступен, то можно спаять самостоятельно по этой схеме и припаять питание.

PSD в автомобиле запитываем от ACC. Т.к. в колодке Skoda такого кабеля нет, берем его из свободного места в блоке предохранителей, который находится с левого торца торпеды автомобиля в салоне (позже укажу какой контакт конкретно и приложу картинку). Минус общий с PW24-1-2, или можно взять из любого места где он есть.

Получается, что на плату у нас подается 4.5-4.6 вольт, а на USB-разъем 4.97. Судя по всему, благодаря разнице в вольтаже всё и работает так как надо.

При включении зажигания питание подается на USB-разъем, планшет включается. Когда питание пропадает - планшет выключается.

Энергопотребление:

PSD-15A-05 без нагрузки - 40 мА
PW24-1-2 без нагрузки - 4 мА

Nexus + PW24-1-2 в режиме глубокого сна - 10-12 мА. С PSD, соответственно, будет около 50 мА, что в 4 раза больше чем с PW24-1-2. Можно легко подсчитать, что планшет с PW24-1-2 будет высаживать вполне обычный аккумулятор на 63Ач в течение примерно полугода. С PSD - примерно 1.5 месяца, что тоже немало.

Отсюда можно сделать вывод о том, что режима сна вполне достаточно, и городить огород с контроллером питания - лишнее. Тем более учитывая тот факт, что из режима сна планшет выходит мгновенно.


ЭТАП 3. Адаптер мультируля.

Android понимает нажатие мультимедиа-кнопок обычной USB-клавиатуры, поэтому наша задача - преобразовать нажатия кнопок руля в USB-клавиатурные нажатия посредством CAN-адаптера.

ЖЕЛЕЗО:

1. Arduino Leonardo или его клон:

http://i1.storeland.net/1/405/404646...o-leonardo.jpg

2. Seeedstudio CAN-BUS Shield:

https://duino.ru/images/product_imag...ges/2476_0.jpg

Шилд поставляется с неприпаяными ногами, что оправдано, т.к. если их припаять, то с Leonardo шилд не заработает.

Причина кроется в том, что шилд рассчитан на работу с Leonardo Uno, который не умеет притворяться USB HID устройством, а у Uno и Leonardo SPI-интерфейс использует разные контакты. У UNO это контакты с D11 по D13, а у Leonardo - пины 4, 1 и 3 разъема ICSP соответственно.

http://arduino.cc/en/uploads/Reference/ICSPHeader.jpg

Получается, что варианта 2:

а) припаять ноги к шилду, откусить ноги, идущие на пины 11-13 и подключить их с помощью проводов к контактам разъема ICSP.
б) изначально подключаться проводами, как я и сделал. Получается менее компактно и красиво, но в конце концов, это всё не на стену же вешать.

Есть еще третий вариант. Купить шилд с распиновкой под леонардо: http://pccar.ru/showpost.php?p=311376&postcount=135


После того как всё подключили, нужно отпаять терминирующий резистор R3 (его хорошо видно на этой картинке), иначе ничего не заработает. Если кто хочет подробностей, можно почитать про устройство кан-шины и терминаторы в ней.

СОФТ:

В первую очередь ставим Arduino IDE версии 1.0.5. Есть более новая бета, но она нам ни к чему.
Для использования с Arduino CAN-BUS адаптера нужна библиотека. Берем её из этого поста (CANBUS.ZIP), распаковываем и копируем сюда: "C:\Program Files (x86)\Arduino\libraries".
Потом берем USBLIB.ZIP из этого поста (они взяты отсюда) и файлы из него копируем в папку "C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino" с заменой существующих файлов.

Скетч, который работает у меня приложен к этому посту (test_keys-140206a.zip). Его нужно открыть в Arduino IDE и загрузить в Arduino.
Он будет работать только с Leonardo!

Если хотите просто поснифить CAN-шину, то функцию loop надо заменить на следующую:

Код:

void loop()
{
     
    if(!digitalRead(2))                       
    {
      CAN0.readMsgBuf(&len, rxBuf);             
      rxId = CAN0.getCanId();                   
     
        Serial.print("ID: ");
        Serial.print(rxId, HEX);
        Serial.print("  Data: ");
        for(int i = 0; i         {
          if(rxBuf[i] < 0x10)                    // If data byte is less than 0x10, add a leading zero
          {
            Serial.print("0");
          }
          Serial.print(rxBuf[i], HEX);
          Serial.print(" ");
        }
        Serial.println();     
   
    }
}

Тогда в мониторе COM-порта будут видны все сообщения кан-шины.

По идее всё то же самое должно работать в любом автомобиле концерна VAG - Skoda, Volkswagen, Audi, Seat. Разница может быть в идентификаторах источника CAN-сообщений и в самих сообщениях. Всё что здесь написано 100% работает в Skoda.

e-statik 16.01.2014 14:04

А ради андроида не проще купить просто китайскую башку для шкоды на андроиде? И не городить зазря лишнего
8" пожалуйста
И кнопки будут сразу с руля и с самого ГУ, и внешний вид приличный стоковый

e-statik 16.01.2014 14:15

Про углы - что-то давно проблем таких не видел. По яркости и самой картинке - соглашусь.
По звуку - можно и поспорить. Можно долго придираться к цапам и выхлопу, выбрать более правильный и потратить времени/денег, услышать действительно разницу "заиграло на порядок лучше", а потом прийти домой, включить обычной хай-фай стерео и понять, что в машине играет на 5 порядков хуже и что усилитель, аудио-подготовка и акустика в машине - вот что по настоящему исходно отставало.

e-statik 16.01.2014 14:20

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

e-statik 16.01.2014 14:28

Ну вот я так же внимательно послушал Creative X-Fi Surround 5.1 Pro и
http://pult.ru/product/53464.htm на хорошем стерео дома, размышляя, насколько крут дорогой ЦАП, и стоит ли всё-таки ставить отдельно процессор в авто и отказаться от этой звуковухи. А потом спустился в авто и послушал эту же звуковуху там и понял, что звук по сравнению со стерео дома - ни о чем. И что все придиры к цапу - полная чепуха, когда реально вся остальная система после цапа в авто - очень хромает. Усилитель и акустика, кстати, стоит в твоем же ценовом диапазоне.

e-statik 16.01.2014 14:30

Цитата:

Сообщение от cherkasoff (Сообщение 283567)
Поживем - увидим :)
Arduino и CAN - самая интересная часть процесса для меня :)

Ок, если что - кое-какие коды я разгадал у нас ) Конкретно коды кнопок у меня есть все. Там мудрено с роликами больно сделано...
Ну и остальные всякие я тоже нашел - парктроники, всякие настройки дворников...

sirota 16.01.2014 16:20

Приветствую коллега!
Вопрос про переходную рамку: примерка была?
А то есть подозрение, что будут зазоры при устаноки большой рамки.

P.S Cледим за проэктом...удачи!

sirota 16.01.2014 16:31

Цитата:

Сообщение от e-statik (Сообщение 283570)
Ну вот я так же внимательно послушал Creative X-Fi Surround 5.1 Pro и
http://pult.ru/product/53464.htm на хорошем стерео дома, размышляя, насколько крут дорогой ЦАП, и стоит ли всё-таки ставить отдельно процессор в авто и отказаться от этой звуковухи. А потом спустился в авто и послушал эту же звуковуху там и понял, что звук по сравнению со стерео дома - ни о чем. И что все придиры к цапу - полная чепуха, когда реально вся остальная система после цапа в авто - очень хромает. Усилитель и акустика, кстати, стоит в твоем же ценовом диапазоне.

Жалко, что не впихнуть мою зучку xonarDX по PCIe в твой компактный "писи", хотелось бы сравнить.
Хотя через переходник(шлейф) наверное возможно.
Думаю разница была бы ощутима.

P.S ИМХО. USB звуковухи ни о чем.

e-statik 16.01.2014 17:30

Цитата:

Сообщение от sirota (Сообщение 283592)
P.S ИМХО. USB звуковухи ни о чем.

Таки нет. Конкретно XFI играет почти ничуть не хуже, чем дорогой домашний стерео ЦАП. Зато значительно хуже играет сама акустика и усилитель, чем средний неплохой стерео комплект дома.
Так что сильно искать крутой цап/звуковуху в авто - смысла практически нет, если вся аналоговая часть играет так себе (или это попросту вполне себе средние компоненты, что и есть у большинства автолюбителей).

halfpipe 16.01.2014 21:14

to cherkasoff
Приветствую. На РС СAR еще одной Шкодой прибыло. А монитор 10,1 дюймов с мультитачем не хотите воткнуть. Sirota прекрасно реализовал такую связку.

lti1 16.01.2014 22:27

Цитата:

Сообщение от cherkasoff (Сообщение 283549)
В качестве блока питания планирую использовать DC-DC 3-х полосный блок питания (600 рублей) с тремя выводами, два из которых регулируемые.

А зачем вам такой блок питания, один выход 3,3в, второй от 12в и до 30в, а третий всего 0,5А?
Цитата:

Диапазон выходного напряжения OUT2 (3.3В 2A), OUT3 (12-30В 3А), OUT4 (1.25В-26В 0.5A регулируемый) Пик 2А.

sirota 16.01.2014 23:51

cherkasoff

Цитата:

Способ подключения DAC к цифровому источнику значения не имеет, вы о чем?
Я же и пишу, что ИМХУЮ...Пробовал 2 usb звучки, одна от асус, другая креатив...на слух pci-e карта выдала более сочный звук в сравнении с usb.

e-statik

Цитата:

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

sirota 17.01.2014 23:39

Цитата:

Что-то мне кажется что Nexus уж очень маленький.
Как смартфон по мне, а вот 10.1 самое то.

Gorynch 19.01.2014 15:19

да ладно?

Gorynch 19.01.2014 15:41

могу поделиться разъёмом угловым microUSB папа разборным - хвост с мамой сам допаяешь
Только куда повёрнут не помню - на работе лежат

awtoap 29.01.2014 02:30

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

awtoap 29.01.2014 02:34

а с каким интервалом

awtoap 29.01.2014 02:38

а если несколько кнопок одновременно нажимать что происходит?

awtoap 29.01.2014 02:43

Для анализа например нажал одну и держешь и потом вторую...интересно первая так и будет слаться или же только вторая.

laytya 29.01.2014 08:51

ПО поводу нажатий нужно просто алгоритм сделать на устранение дребезга. Аля

если нажато более чем 300мкс - значит получаем 1 нажатие, если более 1с то долгое нажатие.

Понятно что время я написал примерное, подберите для комфорта свои тайминги.

lti1 29.01.2014 13:24

Цитата:

Сообщение от laytya (Сообщение 285036)
ПО поводу нажатий нужно просто алгоритм сделать на устранение дребезга. Аля

если нажато более чем 300мкс - значит получаем 1 нажатие, если более 1с то долгое нажатие.

Понятно что время я написал примерное, подберите для комфорта свои тайминги.

Можно и по количеству пакетов, от 1 до 9 короткое нажатие, более 10 длинное.

laytya 29.01.2014 13:55

Вообще конечно странно как-то это работает. Хотя я снифал передачу пакетов между мордой магнитолы и самой магнитолой, там тоже с интервалами идут пакеты с нажатием кнопки. Долгое нажатие не определишь =(

lti1 29.01.2014 22:38

Цитата:

Сообщение от cherkasoff (Сообщение 285152)
То ли я что-то накрутил в настройках PowerAMP, то ли еще что, но в PowerAMP предыдущий и следующий трек почему-то переключают альбом, хотя в Google Play Music всё работает отлично. Надо посмотреть.

Так что, мне осталось только устранить дублирование нажатия кнопок и часть адаптера кнопок завершена, что не может не радовать.

Именно из за двойного нажатия и переключает альбом.
Цитата:

Сообщение от lti1 (Сообщение 268471)
Для перехода по альбомам, кнопка вверх и вниз, используется двойное нажатие Next Track и Previous Track, т.е. Carduino отсылает код два раза с паузой 0.1 секунды. Для работы функции в настройках Poweramp необходимо включить двойное и тройное нажатие.
http://pccar.ru/attachment.php?attac...1&d=1377384242


lti1 29.01.2014 22:51

Цитата:

Сообщение от cherkasoff (Сообщение 285164)
Значит после устранения дублей паверамп будет работать хорошо!

Должно.
Цитата:

Сообщение от cherkasoff (Сообщение 285152)
Очередной проблемой стало то, что библиотека Keyboard в Arduino не может посылать мультимедиа-клавиши. Нашел здесь инструкцию по доработке библиотеки. Добавляется класс remote, с помощью которого можно отправлять мультимедиа-события.

Я здесь выкладывал доработаную библиотеку, в отличии от оригинала есть команда Remote.play_pause();, то есть Play/Pause одной кнопкой.

e-statik 29.01.2014 23:00

Про дребезг кнопок и т.д... По обычным кнопкам там так:
команды кнопок идут по адресу 5C1 и для кнопки Next, например, пока в 0 байте "2" - это нажатие, когда появился "0" - отжатие. Точнее, отжатие там вообще на все кнопки в целом одинаково выглядит ("0" в нулевом байте).
И для одного клика там этих команд может пронестись пачка - как первого типа, так и второго... И надо по принципу ловушки: 2 проскочило - всё, стоп, ждём 0. И пофиг на количество тогда. Я такой алгоритм писал. И таймауты вроде тоже предусматривал тоже.

С роликами намного веселее будет.

e-statik 29.01.2014 23:05

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

Я в итоге целую прогу написал, чтобы это всё настраивать

lti1 30.01.2014 13:07

Цитата:

Сообщение от e-statik (Сообщение 285169)
Про дребезг кнопок и т.д... По обычным кнопкам там так:
команды кнопок идут по адресу 5C1 и для кнопки Next, например, пока в 0 байте "2" - это нажатие, когда появился "0" - отжатие.

Тогда можно без счетчика времени в Arduino обойтись:
Например прилетело 2 (Next) начинаем накручивать переменную, если переменная стала равна например 5 (0,5 секунды) выполнить "действие 2" (удержание кнопки), после прихода 0 с CAN и если переменная больше 5 сбросить переменную на 0, а если с CAN прилетел 0 и переменная меньше 5, но больше 0 выполнить "действие 1" (короткое нажатие) и сбросить переменную на 0.
Цитата:

Сообщение от cherkasoff (Сообщение 285168)
У меня на руле нет кнопки play/pause. Можно, конечно, MUTE на это дело приспособить, но состояние проигрывания можно и в коде скетча учитывать, без play/pause.

Play/pause можно повесить на удержание MUTE.

e-statik 31.01.2014 12:16

супер, темпы продвижения впечатляют! ) отлично

Rage2 31.01.2014 12:54

Цитата:

На выходе преобразователя 0.5А
Этого мало...тока.
и можно смело подавать напругу до 5в

laytya 31.01.2014 22:43

если не секрет - исходники получения нажатий можно глянуть? А то мне тоже самое делать нужно =)

по поводу питания. В основной теме были упоминания скоко жрет планшет. В максимуме до 1.5А при 4.3в... в среднем примерно 700-800мА. Итого регулятор нужен не менее 2А.

ФИ работает токо с включенным ОТГ+питание на нем. Это тоже везде написано.

e-statik 01.02.2014 09:46

Кстати, а посылать в шину команды Seeedstudio CAN-BUS Shield умеет? Или только читать?

laytya 01.02.2014 10:26

А ну сделали как я и говорил. Ну это действенный алгоритм.

e-statik 01.02.2014 10:33

В лоб, так сказать )

sirota 03.02.2014 10:45

Отлично смотрится 5 баллов, за кнопки 5 с плюсом.

e-statik 03.02.2014 13:28

Да, супер получилось. Экран, конечно, отличный.
Кстати, никто не в курсе, какой сейчас экран на коламбусе - разрешение, яркость и тд?

e-statik 04.02.2014 08:39

Хм, а чего стряслось? Почему "проект удален"?

cherkasoff 04.02.2014 10:52

Цитата:

Сообщение от e-statik (Сообщение 285817)
Хм, а чего стряслось? Почему "проект удален"?

Идеология данного форума оказалась мне не близка. Если что-то уже обсуждалось в теме, то если задать вопрос - тебе (в основном) не помогут, а скажут "читай, всё уже по сто раз написано". Из 320 страниц тему про Nexus страниц 200 - это вода и уточняющие вопросы, задаваемые местным важным дядькам, у которых уже "всё написано".

Я всю информацию брал из открытых источников, получается, что тоже уже "всё написано", так зачем засорять этот золотой форум своей писаниной?

В общем вот так.

Rage2 04.02.2014 12:25

cherkasoff, ну вы блин даете.... (shok)
Покажите ходь один ваш вопрос который остался без ответа? ....
Вроде взрослый, а обижаетесь на такую хрень как ....важные дядьки из ведройдной темы. ))
А ну хватит безобразничать и возвращаем проект на место, лично мне он был реально интересным...

e-statik 04.02.2014 12:39

Даа, жестишь...
Было интересно (

cherkasoff 04.02.2014 13:38

Сюда я проект не верну, т.к. не вижу необходимости.


Часовой пояс GMT +4, время: 04:36.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot