вторник, 6 августа 2013 г.

Вкорячивание ондроедового планшета в автомобиль. Реализация.

Ну вот, потренеровался я на макетке с тинси, прозвонил шлейфы мамки, составил табличку, какое напряжение на каком пине при положении асс и mem. Вычленил пины i2c и землю.
Еще и таки победил мукс, посыпаю себе голову пеплом и лучей поноса тем, кто писал датащит: нигде не сказано, что чтобы с мукса пошел звук, нужно послать 0 в байт soft mute и дальше уже ставить нужную громкость. Вкупе с тем что я таки отследил, в какую точку на мамке нужно подать высокий уровень, чтоб мамка включилась и пошло напряжение на всю периферию(тот же мукс, приемник, усилитель) стало возможно оторвать таки морду управления и на ее место прилепить плоншет.
Параллельно я освоил сборку цм для киндола, чтоб прикрутить к нему поддержку 3g свистков и карееса.
Упоротые мантайнеры никак не хотели включать поддержку всей этой мишуры в девайстри, а всего-то добавить несколько строк в конфиг. Максимум чего удалось от них добиться-включить поддержку карееса. но в итоге он так и не заработал, потому что в 4.2 гугол поломал весь бт-стек и все usb-bt донглы отвалились.
Но внезапно выяснилось, что разарботчики киндола пошли своим кривым путем. Они поломали usb-host, точнее криво его реализовали: взяли, и ногу gpio, которая у всех нормальных людей отвечает за включение-выключение порта при саспенде, завели ее на подсветку экрана. А свободных ног наружу из под проца не вывели. И тут я конкретно соснул: на отг висит хаб, все работает. уходим в саспенд, хаб отваливается. просыпаемся-получаем в 8 случаях из 10 ошибки на порту. передергиваем хвост-все чинится. Это никак не вяжется с моей концепцией-плоншет запитан постоянно от +12 через dc-dc, а вся периферия и голова включаются от асс. Киндол ужел жене, к этому моменту ребенок уже начал понимать мультики.

На замену ему пришел icoo D70 pro2. размерами он чуть меньше киндола, в рамку торпедя вписывается отлично. Правда на rk3066, о цм можно забыть. питание от usb, основной плюс-на мамке есть полноценный хост, на котором висит вафля. сдуваем модуль, припаиваем usb-шнурок и имеем полноценный хост, а не отг-кастратку.
Питается плоншет от отдельного dc-dc, подключенного взамен батарейки(то еще говно эта батарея, деградирует на глазах).

Но внезапно, во время очередного эксперимента с тинси я случайно оторвал массу от ее dc-dc питальника и на нее пришло +12 вместо максимальных +5. Аминь тинси, прощай, с тобой было хорошо. Пришлось раскошелиться на ардуину. Нашел в оффлайне arduino nano v3. Она хоть и не умеет прикидываться usb-hid девайсом, но зато имеет уарт на ftdi и dc-dc искаропки, так что можно смело питать ее от +12.
За сим с макетки был выкинут костыль в виде уарта от мобилки и тинси, а на их место водружена панелька от какого-то биоса, в которой прижилась ордуина. покруг россыпь из колодок и разъемов:



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

Ну а дальше я таки нарисовал схему, как все должно соединяться и работать(что надо было сделать в первую очередь):
в принципе, все просто и понятно.
Так же сделал замеры потребления тока в разных режимах работы. После них состоялась такая концепция:
ордуина без встроенного уарта потребляет 32ма (это без прикручивания прерываний и режима сна, в котором потребление падает до 2ма), плоншет в саспенде 80. это отлично, они у нас запитаны постоянно от +12. Ардуина мониторит наличие сигнала асс и включает борду магнитолы в нужный момент. Она же саспендит-пробуждает планшет от евента асс,  без всяких костылей в виде таскеров. Дополнительно наружу выведена кнопка питания плоншета, на всякий случай.
 Кстати, вмешательства в плату магнитолы минимальны-всего 2 внешних провода припаяны, остальное все идет через колодку-шлейф от привода сидюка. Никаких вмешательств в проводку авто. Чего и требовалось.
Синий- питание плоншета
Белый- евент асс
Красный- питание ордуины
Черный- включение мамки

Еще есть проблемка с инитом микшера магнитолы-каждый раз при его старте выставляются дефолтные уровни звука, нужно что-то придумать, чтоб запоминались последние состояния регистров. возможно писать текущее состояние в переменные, и ориентируясь на состояние асс брать или их, или дефолт? можно прикрутить eeprom по и2ц. время покажет.

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

 Ну и пошло упаковывание всех плат в коробку, укорочение проводов и прикручивание плоншета к коробке:




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

Питальник плоншета:
Все в сборе:



 С железом покончено. Началось допиливание ондроеда на предмет поддержки внешнего gps, вафли, модема. в стоковую прошивку засунул недостающие модули ядра, нужные скрипты автозапуска. все завелось.
Но внезапно посыпалась нанд у плоншета(довольно распространенное явление). очередной плоншет идет в утиль. пичалька...
кстати, скетч для ордуины и скрипты и модули для ондроеда лежат у меня в гите
 

Комментариев нет:

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