Тернистый путь отображения штатных данных TPMS на экране Андроид


Електроніка
27 лютого 2024
centur10n
власник Lexus RX III

та ще

2 автівки

По немного описываю что было сделано за последние годы в машине, заполняю бортжурнал)

В моей комплектации авто есть датчики TPMS и лампочка на приборной панели, которая сигнализирует о том, что что-то не то с каким-то колесом. В дорестайте можно на приборке увидеть реальное давление в шинах, чего мне очень не хватает. Конечно, лампочка это хорошо, но она не показывает если нужно выровнять давление, подкачать немного. В итоге я начал поиски того, что можно сделать. Вариант выкинуть родные датчики и поставить китайские с китайской же приблудной для андроида тоже рассматривал, но все-таки хотелось как-то выудить информацию с родных датчиков. Тем более течстрим может эту информацию показать, потому я был уверен в том, что информация гуляет по кан шине где-то. Искал и сканировал я долго) Находил коды от Rav4, не подошли. Потом полностью сканировал пару минут шину и пробовал что-то там откопать… Но не получилось. Думал сделать через ОДБ сканер. Сначала простенький китайский, потом купил даже проверенный… Но тоже оказалось, что не одна программа на андроид не видит ничего. В итоге я нашел схему именно на мою машину моего региона и получилось так, что блок ТПМС не связан с кан шиной никак. У него идет один провод практически напрямую на лампочку в приборке и еще один на разъем ОДБ для течстрима…

Течстрим
Течстрим

Схема ТПМС машины
Схема ТПМС машины


На этом этапе я отмел идею ловить данные в шине машины, а делать диагностически запросы все время — не вариант.

Потом я нашел очень интересный проект, где на контроллере, дисплее и приемнике делают блок ТПМС, который принимает сигнал напрямую из эфира и выводит на экран. В принципе прикольно. Единственное что, у меня датчики на 315Мгц а приемники СС1101 идут с настройкой входного тракта на 433Мгц. Но не долго думая купил приемник, ардуинки нашлись, дисплей тоже. И вот, УРА, я получил первые данные напрямую с колес! Круто! Такую штуку, был бы гараж — повесил бы на стену) Правда принимало оно непосредственно вблизи.

Изменил по даташитам входные фильтры, поставил антенну на 315Мгц, не маленькую спиральку а полуволновой диполь. Начал уверенно принимать до 3х колес одновременно. Потом я потратил пару недель копаясь в оптимизациях в коде. Там параметров приемника просто огромное количество. Но добился хороших успехов. Начал принимать данные с 4х колес одновременно с окна дома (машина во дворе, у окна). Все свои изыскания отправил автору, он внес изменения и оптимизации в код проекта, если кому нужно оно уже там.

Так выглядит спектр сигнала
Так выглядит спектр сигнала


В итоге идея была такая, принимаем сигнал, но выводим его не на дисплей а по юсб передаем на андроид голову. Там пишу программку по отображению. План хороший, но есть одно НО. В салоне машины, где бы я не ставил антенну все равно она работает нестабильно. То принимает все сигналы, то пропускает. Возможно зависит от того, где сейчас датчик, снизу/сверху, как колесо стало. Скорее всего сказывается то, что датчики передают в модуляции FSK, а приемник не умеет работать аппаратно в этой кодировке. Потому контрольные суммы больше используются только для проверки целостности принятых дюнных а не для коррекции ошибок налету.

Настройка
Настройка

Данные на дисплее + диагностические
Данные на дисплее + диагностические

Отладка в машине
Отладка в машине

Приемник)
Приемник)


Мучайся я настройкой много вечеров. Не спорю, мне нравится такие проекты, потому это время не потрачено было зря) Но все же я еще разв глянул на схему системы в машине. И подумал, а вдруг, стало интересно что творится в проводе от антенны до блока ТПМС. Вдруг там гуляют пакеты с данными. Подключаюсь к проводу логическим анализатором через резистор и стабилитрон, чтобы не спалить его и смотрю что там гуляет в проводах… И? Вроде ничего(

Беспорядочные нули и единицы, постоянно
Беспорядочные нули и единицы, постоянно


Но потом внес патерн нужного сигнала и FSK кодирование и ВОТ ОНО! Знакомый сигнал по проекту с антенной и дисплеем)

Найденный сигнал в куче мусора
Найденный сигнал в куче мусора

Немного поколдовал с настройками сигнала и принял полностью посылку. И, Внимание, она начинается точно с айдишников одного из датчиков.
Немного поколдовал с настройками сигнала и принял полностью посылку. И, Внимание, она начинается точно с айдишников одного из датчиков.


В итоге оказалось, что в проводе полный шум пока нет сигнала и проскакивают данные, когда есть сигнал. Родная антенна полностью может заменить СС1101 приемник при этом ничего менять не нужно в родной системе. Просто отводка от этого провода через резистор в 10К и стабилитрон на 4.7В, чтобы не спалить порт ардуинки и не повлиять на работу системы. Если что в проводе амплитуда сигнала вольт 8-9.

Дальше дело техники, распознаю сигнал ардуинкой, достаю данные из него и отправляю в сериал порт все что распознал.

Готовый
Готовый

Готовый модуль
Готовый модуль


Для андроид магнитолы написал программу, которая в фоне принимает данные и если они отклоняются от нормы — на весь экран всплывает сама программа с индикациями. Дизайн одолжил у китайской какой-то программы, т.к. не художник. Так же сделал кнопку не беспокоить на 1 час, 3 часа, день. Например если колесо немного спустило, но нужно доехать чтобы не раздражало. Но при этом чтобы не забыть. Дело было давненько, уже подробностей по программированию не сильно помню…

Проверка на андроиде
Проверка на андроиде


Главный посыл статьи в том, что данные можно принять из эфира, особенно если 433Мгц сигнал или получить их из провода и вывести на андроид или экранчик свой. Протокол можно посмотреть по ссылке проекта для Ардуино.

Готовый результат
Готовый результат

Lexus RX III Restyling