среда, 24 июля 2013 г.

Вкорячивание ондроедового планшета в автомобиль. Идея и тесты

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

Там, на фотуме, уже есть похожий проект, но тот чувак пошел по простому пути-тупо вклеил планшет в консоль и сделал внешнее питание с усилителем. Получилось адово-колхозно, и подозреваю что нефункционально.

Обычно народ не заморачивается и врезает aux в разрыв приемника или сидюка. но это костыли и вообще не наш метод.

Пораскинув мозгами я нарисовал для себя следующую идею:
  1. берем штатный мафон
  2. отрезаем или прячем его морду с кнопками
  3. вкорячиваем планшет
  4. паяем мост usb планшета-процессор магнитолы
  5. рисуем\крадем под ондроед морду управления звуком-радио, и чтоб все рулилось с плоншета кнопочками, и чтоб можно было рулить каждой колонкой отдельно
  6. делаем так, чтоб не было лишних проводов, никаких врезок в проводку авто. Никаких нештатных кнопок на торпеде
  7. как-то реализуем питание планшета, чтоб он уходил спать при вынимании и ключа и просыпался обратно по возвращении оного на место, и при этом не выжирал батарею авто
  8. по возможности громкая связь
  9. при желании, управление климатом
  10. ???
  11. получить профит
Так как я вообще не прогромист, писать никакого кода не умею, изучал один семестр асм и паскаль, то пункт 5 в сочетании с пунктом 4 делали меня печально. А потом мне попался на глаза на том же форуме Ъ-хардкорный проект, и я понял что таки смогу(своровав с него скелет для ордуины и оболочку).


Мой проект базируется на штатном мафоне: все питание уже готово, не надо переделывать проводку и торпеду, никаких километров проводов. Готовый усилитель на TDA7385. Качественная smd-рассыпуха. Цифровой тюнер.


Бошка последней ревизии(полностью цифровой тюнер, usb вход для флэшэк) производства vdo под управлением mcu MB95F128NB. микшер на tda7342, радио- tef6606t, усилитель TDA7385, грамотное питание.
Общий вид мамки:
Микшер и усилитель:
Вид снизу:
Тюнер:
Управление чипами реализовано по шине i2c. Обмазался даташитами, покурил. По муксу особых вопросов не возникло-есть байт адреса, байт субадреса, пачка байтов управления. А вот по тюнеру вышел ахтунг-тот же байт адреса, и дальше байты данных, но частота задается по хитрой формуле, как ее считать- в даташите не ясно. Оставим это дело на потом.

В качестве моста взял ту же teensy 2.0, как и у s.m., (воровать, так уж по полной). Она хороша тем, что умеет прикидываться составным hid-девайсом, что хорошо для ондроеда (можно реализовать еще и контроллер рулевых кнопок, если приспичит) и имеет железный уарт. И еще обратно совместима с ордуиной, так что можно наворовать скетчей и допилить их под себя.

Не стал дожидаться доставки тинси с офф.магазина, а купил у местных барыг за 1000р в оффлайне. в закромах же нашел старый датакабель(usb-com), распотрошил его и получил usb2uart-мост. И начал играть с шиной и2ц, чтоб таки понять как все должно работать, заодно подучил С.

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

Выкинул модуль CD, нызвонил куда идет шина и2ц, подпаялся


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




Макеточка с тинси и уарт-конвертером:
Все вроде работает, но только при наличии морды-она как-то хитро инициализировала мамку на предмет включения усилителя, мукса и приемника. Она же как-то отключала mute.

Решил оторвать проц и оставить его в коробке мафона.
Дальше начался онанизм на предмет спаривания ворованного скелета моста управления и мукса с приемником. То что я выловил сниффером, никак не соответствовало даташиту мукса, что заставило меня потратить кучу времени на гугление написание тестовых скетчиков. Гуголь упорно молчит, на tda7342 куча магнитол(в основном на дорогих машинах), но в DIY ее никто не использует, все берут дешевую TDA7318 или китайские подделки SC7313. Принцип работы там тот же, но различаются байты управления, и в 7342 еще есть субадрес, бо она более нафарширована в плане функционала. Со временем я таки научился ей управлять, но оставалась одна проблема-без проца мамка упорно молчала, стоит подключить проц и перехватить управление, отрубить проц-и можно делать что угодно. Вызванивание дорожек мамки и проца продолжалось.
Даже записал небольшой видосик:
 Там видно, что оболочка крутится на знаменитом toshiba ac100 под цм10.1
Еще я параллельно мучал гуголь на предмет тюнера-микруха тоже достаточно распространенная, но в DIY ее никто не использует, све балуются или с китами от silabs или вообще с копеечной TEA5767(я ее кстати в порыве безысходности и отчаяния заказал, как запасной вариант, если не овладею родным тюнером.

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

 This makes sense. Lets take the 2026D6 that you saw. Let’s look at it backwards:
The contents of TUNER1 register is D6 and it is the lower 8 bits of 87.5*20. We multiply by 20 according to Table 25 in the datasheet, for 50kHz step. 87.5*20 is 1750, which is 06D6 in hex, and the lower 8 bits is D6.
The contents of TUNER0 register is 26 and it is the upper remaining bits of 87.5*20 in the 5 least significant bits of the register. So, the 5 LSB are 6. The bits 6 and 7 are set to ‘FM Europe, US, Japan’ which is 01 according to Table 22. So, TUNER0 is 00100110 which is 26.
The contents of register MSA is 20. See Table 18 in the datasheet for the explanation: the 4 LSB of this are zero, which mean that subaddress 0 is going to be the register for the next instruction. Subaddress 0 is TUNER0. The MSB are 001 which means ‘preset’ which means ‘tune to new station’ according to table 20 in the datasheet.
So, basically they are doing the same thing, but in 3 register settings. I tuned with 4 register settings in my code as you saw in the post; more inefficient, but it still works.

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


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

А в качестве морды я выбрал плоншет amazon kindle fire первого поколения. Абы какой мне не подходит, ибо пространство в торпеде ограничено высотой 2din+5-7мм, сооветственно нужно пилить рамки планшета или вынимать из него потроха, что не входит в мои планы.
А у киндола большое комьюнити, есть порт цм10.*, есть отг, нет физических кнопок(только питание), офигительный ипс-экран.
примерно так можно оценить его габариты:

Купил я его значит за гроши, и стал сращивать с магнитолой.

Ну а дальше у меня родился ребенок, и проект пришлось подзабросить




2 комментария: