Нештатная информация на штатный дисплей
#72
Отправлено 05 January 2015 - 18:14
Нет, ГУ и дисплай свяаны только CAN.
#73
Отправлено 05 January 2015 - 19:00
Поэтому пришлось прошивку поделить на несколько "атомарных" (исполняющих только определенный набор функций) и отлаживать их по отдельности.
На текущий момент отлажено и работает:
- Захват сообщений от головного устройства на штатный дисплей;
- Трансляция этих сообщений;
- Отображение своих произвольных сообщений на дисплее;
- Переключение "штатных" и "своих" сообщений по задуманной ранее логике.
Грабли, по которым прошел:
- Система вообще не транслирует "оригинальные" сообщения.
- Через некоторое произвольное время CAN-интерфейс, который считывает информацию с шины автомобиля - зависает (?) или переполняет буфер (?). Выражается в том, что мой модуль перестает транслировать "штатные" сообщения на дисплей.
100% решение нашлось пока только по 1 проблеме - пришлось переписать обработчик прерывания (выкинуть из него вообще всю обработку).
По второй проблеме пока написан "костыль" - банальная перезагрузка контроллера CAN-шины раз в 10 секунд. Работает, но если знать, когда и куда смотреть - можно заметить "лишнюю" задержку (где-то до 0.2 сек) при отображении данных.
Решение второй проблемы, думаю, надо искать в аппаратной возможности отрабатывать фильтры и маски на уровне mcp2515 - потребуется дополнительное изучение этого контроллера. Решение этой проблемы существенно "облегчит жизнь" основному микроконтроллеру (atmega328).
И как результат того, что сегодня сделано -
Реализована следующая логика:
- При старте выдается свое сообщение (для склеротиков: машина приветствует, сообщает о том, какая часть суток сейчас, день недели и текущая дата)
- Если на дисплее в штатном режиме остается неизменным сообщение в течении 5 секунд, включается "альтернативный" режим (на текущий момент циклически выводятся различные представления даты, времени, дня недели)
- Если же во время работы "альтернативного" режима происходят какие-то действия (например, на руле нажали кнопку изменения режима, громкости и т.п.) - система возвращается в "штатный режим".
- При включении задней скорости включается "режим парктроника": игнорируются "штаные" сообщения, на дисплей выводится только информация с парктроника.
Ближе к концу видеоролика, я включаю заднюю скорость - просто для проверки фукнционирования "режима парктроника". Система этот режим отработала, но теперь надо разобраться принимаемыми данными - пока там что-то неадекватное сыпется...
Надеюсь, завтра продолжу.
Нажатие кнопок буду "отлавливать" после того, как парктроник начнет нормальные расстояния показывать.
#74
Отправлено 06 January 2015 - 18:09
P.S. не вынесла душа поэта - снова ушел в холодную машину.. и на текущий момент ВСЕ заработало (программа "минимум": дата/время/день недели в различных вариациях когда на штатном дисплее какая-либо надпись "висит" более 5 секунд, при включении задней скорости - дисплей переходит в режим парктроника).
Завтра сниму полное видео (надо код немного еще "причесать").
С Наступающим Рождеством!!!
Сообщение отредактировал ustas: 06 January 2015 - 20:49
#75
Отправлено 07 January 2015 - 19:48
После того, как снял видео, еще добавил обработку включения "драйва" из состояния "паркинг" (при этом кратковременно включается задняя передача и мой модуль на мгновение входил в режим "паркинг": надпись и писк) - теперь это кратковременное включение просто игнорируется. Работает хорошо (переснимать видео было уже лень).
Ну и дома уже добавил еще "вольметр". При старте на 3 секунды (перед приветствием) выводится сообщение о напряжении бортовой сети:
Достаточно такого времени отображения?
Еще можно добавить функцию вывода напряжения в режиме вождения, если напруга выходит за допустимые пределы (стало больше порогового напряжения или стало меньше другого порогового напряжения). Нужно такое? Какие пороги прописать в прошивке?
Думаю, что завтра надо бы это все проинсталлировать в машину... только надо оставить все "хвосты" для подключения программатора, чтобы можно было дорабатывать и дальше. Все остальные функции уже надо будет на машине делать (особенно интересует "отлов кнопок").
P.S. еще на видео видно, что вместо надписи "AUX" на моем дисплее выводится "MEDIA" - сделано just4fun - на кнопке-то именно MEDIA написано

Что скажете?
#76
Отправлено 07 January 2015 - 21:26
По кнопкам- насколько я помню, кнопки круиз-контроля были резистивными. могу предположить, что и кнопки медиа тоже резистивные.
По времени отображения- в принципе читабельно.
Вопрос по остальным хотелкам- получение и вывод информации бортового компьютера?
#77
Отправлено 07 January 2015 - 23:09
Мне тоже так показалось

Так и есть, кнопки в обоих случаях - резистивные. Но надо покурить схему - куда они заводятся? Сдается мне, что они идут на "мозг", а уж "мозг" транслирует эти нажатия в шину, чтобы разные девайсы исполняли свои функции (музыка - свое, круиз - свое).
Можно, конечно, тупо подцепиться к аналоговым "выходам" с блоков кнопок (где-нибудь в жгуте у руля) и уже на стороне моего микроконтроллера обрабатывать нажатия... и не заморачиваться с шиной (в данном вопросе). Надо подумать. В "аналоговом" варианте потребуется тянуть доп.провода. В "цифровом" варианте - изучать CAN-шину..
По времени - читабельно. Но приветствие не слишком долго идет? Может, укоротить его?
Сегодня уже сделал первый подход к этой теме - нашел идентификатор сообщения, в котором как раз вся информация "маршрутника", записал несколько посылок - надо дешифровать. Там странность какая-то... с наскока не получилось.
Сейчас готовлю свой девайс к инсталляции в машину.
Оказалось, что дисплейчик "к машине" подключен коротеньким кабельком (около 7 см). На одной стороне у него разъем покрупнее (к шине автомобиля), а сдругой - помельче (втыкается в дисплей).
Думаю, что этот кабелек - идеальное место для "врезки". Там есть и питание (общий - черный, красный - 12В), и, естественно, CAN-шина (CAN-L - серый, CAN-H - зеленый).
CAN-шину надо разрезать (и со стороны дисплея - припаять резистор на 120 Ом - без него не работает). Получается вот так:

Количество загрузок:: 22
Полный (на текущий момент) "набор на установку":

Количество загрузок:: 24
В цветном шлейфе (7 проводов) - два CAN-интерфейса (один будет "слушать" машину, второй - "говорить" на дисплей), там же - общий и 12В (для контроля уровня заряда АКБ).
Серый кабель - для подключения программатора.
Другой цветной шлейф (4 проводника) - последовательный интерфейс для получения отладочной информации.
P.S. ОФФ: может кто-нибудь подарить/продать/и т.п. блок аудио-кнопок с руля от Мазда5 (с зеленой подсветкой)? Вдруг у кого-то остался после установки круиза?
#79
Отправлено 08 January 2015 - 00:16


#80
Отправлено 08 January 2015 - 00:24
Более плавное движение букв не сделать: дисплей текстовый - можно только делать смещение на одно знако-место. Был бы графический - можно было бы попиксельно сдвигать... с перелистыванием кадров тоже не все так хорошо - на дисплее всего 12 символов.
Можно попробовать так:
- Good evenyng
- Wednesday
- 8 january
Вроде все надписи влезут.
Заглавные лично мне нравятся меньше

#81
Отправлено 08 January 2015 - 00:48
#82
Отправлено 08 January 2015 - 19:07
Зато сразу стало понятно, что самое место моему модулю (в "серийном варианте" - если до этого дойдет) - за дисплеем. И состоять он должен из одной платы, содержащей сразу и все (включая преобразователь питания с 12В до 5В).
Подключение на Mazda5 - простое: потребуется подключить всего 6 проводков (все действия на кабеле сразу перед разъемом дисплея):
1. подключить "землю" (черный провод)
2. подключить "12В" (оранжевый провод)
3. перерезать серый (can-l) и фиолетовый (can-h) провода
4. подключить can-l и can-h (со стороны машины) к "слушающему" контроллеру CAN моего модуля
5. подключить can-l и can-h (со стороны разъема дисплея) к "говорящему" контроллеру CAN моего модуля.

Количество загрузок:: 57
6. замотать все "синей изолентой"


Количество загрузок:: 41
Все

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

Количество загрузок:: 44

Количество загрузок:: 29

Количество загрузок:: 26
Еще один "косяк" моей установкой в центральной консоли - пищалку плохо слышно (естественно, решаемо). В случае размещения за дисплеем, возможно, нужно будет просверлить маленькую дырочку и пищалку приклеить изнутри аккурат за ней.. но это после.
Кстати.. по ходу пришлось решить еще проблемку.. оказалось (вообще я этого ожидал, но на "стенде" дома это проверить было нельзя), что информация для маршрутника и климата "гуляет" ровно по той же шине... а поскольку я в своем коде обрабатывал только значения для средней части дисплея, а остальные сообщения просто игнорировал - то и получил соответствующий эффект:

Количество загрузок:: 66
Поскольку ноут был с собой - на месте подкорректировал прошивку таким образом, что данные для центральной части дисплея отрабатывались согласно ранее разработанной логике, а все остальные данные - тупо транслировались дальше. И это сработало (что логично). Видео тут:
Кстати, на видео видно, то получился "двойной" вольметр: при повороте ключа - сначала видим напряжение на АКБ, а после того, как машина завелась - напряжение бортовой сети.
Теперь прошивку нужно оптимизировать (естественно, там есть куда - выкидывать лишние проверки, убирать данные для отладки, ускорить работу с портами ввода/вывода). Потом можно добавлять всяческие "рюшечки".
Бегущая строка себя показала на холодной машине просто отвратительно: на холодном ЖК-экране просто нечитаемая "каша". Кстати, на видео вариант прошивки, где я отключил ее совсем (чтобы сразу видеть на дисплее основную информацию).
Но в любом случае, на сегодня мой модуль вполне показал свою жизнеспособность (и остался уже на "постоянку" в машине).
Эта установка еще даст результаты по "замораживанию". Посмотрим, вынесет ли новая резервная батарейка морозы и не будут ли сбиваться мои часы?
Опять же, несколько дней покатаюсь - посмотрю, как будет работать в реальных условиях при нормальной эксплуатации (надеюсь, ничего особенного не "вылезет").
Остальные программные доработки можно производить в спокойном режиме (поскольку все основные гипотезы проверены и основные "грабли" уже пройдены).
Теперь нужно уже определяться: делать ли "серийную" партию?
- Для этого мне нужно заново развести плату исходя из тех моментов, что я описал (от 2 дней до недели, думаю).
- После этого заказать производство платы (уже делал - из поднебесной после заказа придет где-то через 3-4 недели).
- Параллельно закупить комплектуху (ну и прошивку "допилить").
- Смонтировать и прошить (день-два, ну... неделю (с запасом)).
т.е. полный цикл - 5-6 недель (если почта и китайский новый год не внесут дополнительных задержек).
Еще не понятно, что с парктроником (ради которого все затевалось первоначально) - я расковырял всего один конкретный парктроник. Добавлять поддержку других моделей, в принципе, возможно, но мне нужно будет получать "целевой" пакртроник на некоторое время и изучать его (не самая интересная работа, к сожалению: цеплять осциллограф, снимать эпюры напряжений, делать кучу замеров с различными расстояниями до датчиков (в разных комбинациях), включать "логический анализатор", попытаться угадать, как зашифрованы расстояния и т.п., написать кусок кода, который будет адекватно принимать и интерпретировать данные).
Можно, конечно, делать "кит": моя плата и Parkmaster 4-dj-06 (именно его я "расковырял" - на сегодня его цена около 3 тыс.руб.). Только это скорее для тех, у кого парктроника еще нет.
И с ценой еще нужно определиться... В текущих условиях пока не понимаю, во сколько реально встанет производство платы и комплектуха...
Понятно, что первая (если она будет) партия (возможно и единственная) - 10-20 плат... на форуме мазда3 "закинул удочку" - вроде как там тоже есть желающие...
Сплошные вопросы.
Если интересно - включайтесь в обсуждение вопросов. Тогда и решим, как быть дальше?
P.S. ну и собственно то, ради чего я этим всем занялся:

Количество загрузок:: 61
#84
Отправлено 08 January 2015 - 23:29
Плюс - моя плата (о ее цене чуть ниже).
Скопировать парктроник... ну, потенциально можно, только стоить будет существенно дороже (да и датчики-то все равно покупать придется.. а датчики без комплекта - сразу заметно дороже становятся).
По поводу реализации БК - я это сделаю (точно получится сделать периодическое отображение информации БК - значения параметров 100% присутствуют в шине, вот с переключением режимов пока сложности - нужно понять, как работать с кнопками (для упрощения подключения лучше использовать "цифровой вариант")).
Можно воообще свою отдельную кнопку замутить, по нажатию которой будет переключение режимов и т.п., но в свою машину я бы такую кнопку ставить не стал (ну или куда-нибудь в очень неприметное место).
Плата совершенно спокойно будет работать и без функций "парктроника" (т.е. в машине просто "появится БК").
Сейчас сделал прикидку по комплектующим и стоимости производства плат... расчет делался исходя из производства серии в 10 устройств. В лучшем случае получается 4 тыс.руб. (ох уж этот нынешний курс - на него завязана как стоимость производства плат, так и комплектующих).
Цены могут стать несколько лучше при партии в 100 штук, но это уже совсем другая песня.. следующее улучшение цены - уже при партии от 500-1000 штук (а это уже вообще, имхо, нереально).
Понимаю, что дорого. Для себя, как хобби - нормально (хобби очень редко бывают малозатратными).
Боюсь, что при таких раскладах, даже тестовой партии в 10 штук не будет...
#85
Отправлено 09 January 2015 - 10:45
Так и подмывает написать: "А я же говорил!"

Зачем тебе отлавливать и транслировать все сигналы идущие на дисплей от машины (ЭБУ, климат)?
Тебе ведь только текстовый сектор в серединке дисплея нужен, а туда только балалайка флудит, так борись только с ней!
#87
Отправлено 09 January 2015 - 17:20
Поначалу да, ты мотивировал необходимость в таком способе подключения к шине тем что тестируешь прототип на диагностическом разъёме, но сейчас то всё изменилось: тебе пришлось РАЗРЕЗАТЬ шлейф проводов (шину) дисплея для того чтобы подключить готовое устройство.
Теперь рассмотри вариант подключения в разрыв CAN-шины идущей на штатную магнитолу:
1. Можно подобрать разъём на твою плату и подключать штатный шлейф с CAN-шиной идущей на магнитолу к нему.
При этом маздаводы заменившие штатную балалайку на нештатную получат возможность простым способом, подключив платку к свободному разъёму, дополнить пустующий дисплейчик доп. инфой, например БК. Таким способом ты приобретёшь существенно больше клиентов чем сейчас (не каждый согласится что-то разрезать и паять в своём авто). Это будет упрощённая версия платы с одним контроллером CAN-шины
2. Добавляя пару микросхем (MCP2551+MCP2515) и шлейф с разъёмом для штатной магнитолы на твою плату получаем возможность использовать её в полном составе (со штатной балалайкой).
#88
Отправлено 09 January 2015 - 19:01

И разъем будет нужен только одного вида... а если подключать там, где балалайка - там другой разъем

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

Решил все-же сделать полную схему (уже готова) и развести плату (сделаю в ближайшие дни). Завтра по схеме попробую закинуть китайцам на просчет стоимость комплектухи...
#89
Отправлено 10 January 2015 - 12:38

Количество загрузок:: 51
#90
Отправлено 10 January 2015 - 23:47
Так лучше?
P.S. сегодня выяснил, какие сообщения (точнее их идентификаторы) отвечают за вывод информации на дисплей (состоит из трех частей: маршрутник, центральная часть, климат). "Лишние" сообщения сейчас просто "фильтрую" (игнорирую). Уже четко понимаю, "где искать" данные для маршрутника... а вот с нажатием кнопок - пока не понимаю, искать очень сложно...