Comments 39
Круто!
На завершающей статью гифке на самодельном экране верхняя строка обрезана, это просто ракурс съёмки неудачный?
Интересная идея конечно, неужели столько много данных шлюзирует что нельзя было сделать свой контроллер/конвертор CAN LIN (что там еще есть) и тогда вообще выкинуть штатную плату?
Мне не попадались готовые проекты с такой реализацией на Астру/Вектру. Но с учетом того, что есть проекты подобного шлюза на другие авто, то при поверхностной оценке, считаю задачу выполнимой. Когда буду разрабатывать модули для перехвата "индикации включения задней передачи" (для автоматического переключения на камеру заднего вида) или "нажатия кнопок на руле" (для мультимедиа) с CAN-шины, то оценю весь обмен.
По кнопкам разве не то? https://github.com/JJToB/Car-CAN-Message-DB/blob/master/Opel/Astra/H/MS-CAN/Buttons.md
Да, оно. Это вырезка из большого списка id пакетов. Есть таблицы по всем шинам LS/MS/HS
Как пример от того-же автора https://github.com/JJToB/Car-CAN-Message-DB/blob/master/Opel/Astra/H/LS-CAN/ALL_TYPES.md
Сообщество собирает данные в большие таблицы.
Какой отличный ресурс! Благодарю
А подобного ресурса с кодами кнопок Форд Фокус не попадалось?
ох уж эти сумасшедшие плисоводы👍👍👍
Как владелец аналогичного пепелаца, я в восхищении. насколько глубоко, оказывется, сообщество залезло в потроха машины.
На рынке много готовых решений, которые будут дешевле
Ох, если бы, одни кастраты или задохлики.
Спасибо за труды, за то, что поделился воплощением идей, очень интересно и удачно получилось - такой дисплей для глаза горазда приятнее родного неконтрастного .
Я некоторое время назад занимался созданием девайса для VW, тоже пришлось посидеть и с осциллографом и с цифровым анализатором, пришлось спаять плату для CanHacker-а, потом проганье этой платы, чтобы она могла с хакером общаться, потом долгий анализ CAN ID, потом создание и проганье платы, потом создание уже своего девайса (на stm32), но тут.... Чувак, то что ты сделал, это просто космос! Зная по себе, какой это титанический труд, жму руку! Это очень и очень круто!!
Но цель явно оправдывает средства, ибо штатный экран в опеле это какое-то нелепое убожество. Результат просто офигенный!
Класс!
Спасибо. Сам я никак до CAN шины не доберусь, нужно тоже спаять CanHacker. Думаю, что это тоже будет "приключение на 20 минут" )
делано на коленке за 3-4 вечера
ага, ага, правда без учета предыдущей работы других людей :) так вот легенды и рождаются
Честно говоря, мне не понятная данная претензия. Если ко времени, то да, действительно - я это сделал по вечерам за неделю, а потом ещё около 6 часов в выходной писал статью и делал скриншоты. Из работы других людей - только тест модуля для вывода CVBS, но и его я переписал (ну да, по аналогии). Если мы не берём в расчет используемые разработанные САПРы, разработанную готовую отладочную плату циклона, разработку ЛА/осциллографа и т.п, то по времени все верно.
Упомянутое сообщество про анализ CAN шины вдохновило на эту деятельность, сам с CAN шиной в астре я не работал.
это "приключение на 20 минут" навеяло :) у меня в коем случае не претензия, наоборот. просто хотел отметить что такое изложение рождает мифы про крутейших как бы хакеров ломающих все подряд на раз-два, а вот про подготовку забывают.
как тебе такое @bodyawm
У меня в десятке нет экрана и CAN вообще, так что мне достаточно будет просто написать морду для KWP2000)

Делал когда то бортком малогабаритный, вместо одного из индикаторов на приборке.
у меня старый опель 78 года.
был карбюратор, поставил инжектор на Motronic 4.1
протокол толком не известный был, но был софт диагностики, приходилось по крупицам собирать инфу и реверсировать общение софта с ЭБУ )
там тоже был KWP или какая то похожая на него фигня)

Ну и появилась встроенная диагностика, лампа Check Engine в изначально карбюраторной машине)


Бонусом лампа низкого уровня топлива, регулировка яркости приборки, плавный розжиг яркости приборки, просадку АКБ при запуске измеряет, звуковой модуль, там файлы речевого информатора с боевых самолетов «рита».
она умеет кричать — «снизь обороты!» , «пожар двигателя!» , «низкий уровень топлива!» и подобное :D
Больше всего мне нравится «катапультируйся ! катапультируйся! :D
Датчики давления масла и топлива - если падает ниже нормы, то Рита говорит "отказ гидросистемы".
Если уровень топлива падает - она говорит "рубеж возврата" или "критически малый уровень топлива" .
Отличный виртуальный ассистент)))
Вспомнил, как в 2017м разбирал пакеты от ЭБУ F3R на москвиче. Тоже все оказалось не сложно, т.к. был софт DDT2000 и там в ini-файлах были все битовые расшифровки.
Из проблем - инициализация обмена должна была проходить на скорости в 5 бод (Карл!!).
да да, у меня такая же фигня)
причем на такой скорости передать что то в ком порт ПК не получится.
я когда программулину на комп писал для диагностики, то обходил это путем дергания порта целиком по таймингам. при этом уровни менялись, и получалась искомая посылка на 5 бодах )
KW-71 он назывался, оказывается)
сам протокол довольно медленный. так еще и если не поддерживать связь постоянную, то всю инициализацию надо заново делать )

Так описали, что я Риту к себе в машину захотел...
я, пожалуй, все таки потерял мысль что из чего тут конвертируется и зачем
Вкратце: чтобы не разбирать все-все возможные комбинации системных пакетов на can шине, я решил просто грабить картинку напрямую с выводов штатного экрана, который всю полезную информацию уже выводит. А передавать эту картинку в виде видеосигнала на цветной монитор, у которого можно переключать входы: в данном случае между выводом сграбленной информации с родного экрана, камерой заднего вида и CarPC
то есть идет преобразование битовых комбинаций интерфейса штатного монитора (который прячется с глаз долой) в "аналоговый" CVBS видеосигнал для монитора который ставится вместо штатного (но пока еще просто все навесом) я правильно понял?
Есть еще интересный вопрос а как управляется переключение входов монитора?
В порядке бреда предложил бы "оцифровывать" сигнал GID но гнать его не по аналогу на монитор а в цифре (сети TCP, либо через USB, да хоть SPI) на carPC и там настроить отображение картинки. В принципе помню на carpc заводили аналог с камер при помощи "свистка" CVBS-usb, но в данном случае это было бы совсем чудесато.
Да, первая мысль была - гнать битовый поток по какому-то uart, а дальше декодировать/оцифровывать на ПК, но:
Для отображения данных с HDMI на матрице экрана (через LVDS) используется плата на специализированной микросхеме RTD2662 (она используется, в так называемом "народном" китайском контроллере, так называемая плата скаляр).
Этот контроллер умеет переключаться между различными видеовходами - AV/VGA/HDMI. Переключаться планирую с кнопок руля (тут тоже придется ловить данные с can) шины.
Подумал, что зачем городить лишний мост на CarPC (да когда я его ещё соберу), когда можно напрямую гнать картинку на монитор. В теории это будет надёжней. Даже если не будет CarPC, то информация с бортового компьютера будет доступна.
да когда я его ещё соберу),
да, я этого как то не учел, надеюсь тачка еще проработает этот 10к лет :) :) :) Тут на самом деле уже стало интересно на чем сейчас carPC самоделят, но это тема отдельных сайтов.
еще по материалу такой вопрос
ПЛИС altera cyclone iv ep4ce10
я так понимаю это готовая китайская платка-отладка?
Дополнительно:
Еще раз внимательно посмотрел обмен и описание на контроллер ST7565 и увидел следующее:
Для верхних строк приходят команды в формате 0xB0 0x10 0x05, а для нижних строк 0xB0 0x12 0x05, но в описании контроллера указывается, что второй и третий байт – это Most significant column address и Least significant column address соответственно.
Получается, что для верхних строк указатель приходит на 5-й столбец, а для нижних на 37-й. Запомним это.
Далее все числа следует считать в HEX:
После основного кадра приходят:
B0 10 00 (столбец 0) и B0 12 00 (столбец 32), затем 5 нулевых байт данных для обеих половин, затем не меняя строки
1D 05 (столбец 213) и 1F 05 (столбец 245) и затем 11 нулевых байт.
B1 10 00 и B1 12 00, затем 5 нулевых байт данных для обеих половин, затем не меняя строки
1D 05 и 1F 05 и затем 11 нулевых байт
,,,
9я посылка идет
B8 10 и B8 12, а затем 224 нулевых байт
В настройках верхняя часть экрана настраивается:
A2 A0 C0 E4 28 E1 40 A6 EE AF
Нижняя часть экрана:
A2 A1 C8 E4 28 E1 40 A6 EE AF
Расшифруем:
A2 – Sets the LCD drive voltage bias ratio 1/9 bias
A0/A1 – Sets the display RAM address SEG output correspondence 0: normal, 1: reverse
С0/С8 – Select COM output scan direction 0: normal direction 8: reverse direction
E4 – Oscillation Frequency Select Typical 31.4 KHz
28 – Power Control Set, voltage follower turns off, voltage regulator turns off,voltage booster turns off
E1 – Test Command – это какая-то специфичная команда, которой нет в NT7534
40 – Display Start Line Set. Specifies RAM display line for COM0
A6 – RAM Data “H” LCD ON voltage (normal)
EE – Cancels Read-Modify-Write mode and returns column address to the original address
AF – Display ON
Получается, что контроллер очень похож на NT7534, кроме одной команды.
Физический размер экрана 218x138 пикселей.
Максимально адресуемый, по протоколу, размер экрана 224x128 (или 224x144 если учитывать адресацию дополнительных строк через B8 – Page8)
Ощущение, что адресация фейковая и сделана так, что при прямом обращении по номеру столбцов, запись идет по маске 0b000X_XXXX, а при обращении к нижней половине (инверсия по столбцам) 0b001X_XXXX. где единичка сделана как индикатор инверсии, так как реальный кадр всегда начинается с 0x05 или 0x15
Обратная разработка GID на Opel Astra H