Цитата:
Сообщение от Artery
doxtor, кодами не поделисси? А мониторил как? Тупо терминалом слушал блютуз-компорт на котором ЕЛМка висит?
ЗЫ Тоже потихоньку обАрдуиниваю машину ;)
|
ELM управляется через AT-команды, на компе видится как bluetooth com-port и имеет свой номер порта. Цепляешься на этот порт терминалом, инициализируешся: ATZ, ATL1, ATH1 (если не путаю)... далее - ATMA - и любуешься "трафиком" на шине вида PP RR TT DD DD ... CC (приоритет приемник передатчик данные контрольная сумма)чтобы что-то понять, его по хорошему надо распарсить, но по простому - включаешь логирование всей 'той ботвиньи, запускаешь ATMA затем быстро n-раз нажимаешь нужную кнопку, полученный лог либо (как делали буржуи) - в эксель и искать n-одинаковых последовательностей, либо мне в принципе хватило блокнота и глаз... Далее, получив эти n примерно одинаковых последовательностей посылок делаем ATMR RRmn (эта штука парсит шину и выбирает только те посылки, в которых приемник = RRmn, где n - номер последовательности, а m - номер посылки в n-й последовательности) для каждого RR из этой последовательности, нажимаем кнопочку и смотрим - появляются отфильтрованные посылки ли нет. Если нет, меняем RR на следующий и т.д.
В итоге я выявил, что при нажатие кнопок управления стеклами или дверями используется RR равый A0h. Т.е. делай ATMR A0 [ENTER] - дави кнопку и смотри, что происходит... Менятся будут TT и данные... все коды я не записывал, но для примеру могу сказать, что
22 A0 01 00 [CC] (контрольную сумму ELM считает сам, поэтому ее не записывал) - открывает 3 двери, кроме водительской (багажник - не помню)
22 A0 04 00 [CC] - закрывает 3 двери, кроме водительской
22 A0 40 00 [CC] - заднее правое стекло вверх
22 A0 80 00 [CC] - заднее правое стекло вниз
переднее правое, если не путаю вместо 40 и 80 было 10 и 08...
Если анализировать DD в 22 A0 xx, то видно, что оно меняется в зависимости от открытых или закрытых дверей... т.е. похоже как раз тот самый статус дверей, который мне нужен для сигналки...
Записывал в шину через ATSH PP RR TT, затем 00 (просто 00) и [ENTER]. Сдается мне что а) это не совсем верно, б) в этот момент не вижу "ответки" по шине, в) впечатление, что посылка долбится rnd раз (а скорее t-милисекунд), т.к. после ENTER стекла опускаются/поднимаются ступенькой, высота которой рознится...
Теперь некоторые сделанные мной выводы (не знаю, правильные или нет) и "полученные результаты):
1. RR=A0 - пассажирский блок
2. надо научиться правильно писать в J1850, а еще лучше соорудить на ардуине девайс чтения/записи на прямую... в принципе живую схему почти нашел...
3. надо вычленить команду, гасящую питание через 40 секунд на дверных блоках и попробовать его "включать" обратно, иначе стекла через 40 секунд не подвигать...
4. То, что приемником является A0 абсолютно не говорит о том, что он является ИСПОЛНИТЕЛЕМ действия, т.е. при нажатие на кнопку водительского стекла посылка выглядит как 22 A0 02 00 [CC] но при этом запись такой команды в шину не вызывает никаких действий, т.е. сия посылка получается какбы сугубо "информационная" для A0... по крайней мере это мне пока-что так видится... может быть все проще...
5. при запущенном ATMA и включенном двигателе через некоторое время загорается чек. Если ATMA остановить - чек тутже тухнет.. Т.к. елм-ка занята терминалом, вычитать код ошибки не представляется возможным.
6. Нужно таки напрячься и покурить j1850 и форматы посылок, чтобы точно знать, что и как посылать...
Ну и на последок: идею изначально брал отсюда -
https://theksmith.com/software/hack-...p-easy-part-1/
там-же есть живые команды управления громкостью, seek и выбором пресета с руля. Все попробовал, все работают как в одну, так и в другую сторону... Т.е. уже сейчас сделать коробочку для управления с кнопок руля ЛЮБОЙ магнитолой - нет никаких проблем...