Второе дыхание Pandora DXL 3000 или как я прикрутил собственную телеметрию

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

К разработке собственной телеметрии меня привела, пожалуй, многим знакомая ситуация — работало, да перестало. Однажды вечером блок автосигнализации перестал воспринимать брелок. Я понимал, что нужно для начала попытаться перепривязать брелок, для чего требовалось выполнить несложную процедуру, четко следуя инструкциям из руководства по монтажу. Выполнение процедуры становилось невозможным, так как автосигнализация находилась в режиме охраны, отключить которую аварийно можно было кнопкой Valet, введя сервисный код.

Сервисный код я никогда не пытался запомнить, а мастер-код — тем более. Безуспешно перебрать на память несколько кодов я все-таки попытался. В течении нескольких минут мне пришлось угнать свой автомобиль. Трель от сирены в ушах еще потом стояла долго, так как сирена была установлена в салоне авто. Не помню почему я разместил сирену именно там — то ли по собственной лени, то ли увидел в этом какой-то смысл. Знаете, по личному испытанному ощущению, это может привести в сильное замешательство неподготовленного злодея. К моему глубокому сожалению, блок мне пришлось демонтировать. Я начал разбираться как быть дальше и что с этим делать. Кому интересно, что же вышло в итоге, прошу под кат.

У меня было несколько гипотез:

  1. Сбои в работе антенного модуля.
  2. Сбой энергонезависимой памяти в основном блока. В результате могли быть повреждены данные о брелоках и их синхронизации.
  3. Сбой энергонезависимой памяти брелока. Последствия схожи с п. 2.
  4. Глушение сигнала в целях подготовки к угону.

Вариант с наличием глушилки сигнала я проверил сразу же как переехал в безопасное место. Автосигнализация так же не реагировала на брелок.

Я обратился к дилеру по вопросу наличия тех. возможности сброса сервисных кодов. Мне ответили, что такой возможности нет и вам придется приобрести новый комплект за несколько тысяч рублей. Да и будет лучше если вы установите всё это дело у нас — сообщили они, отдав при этом еще несколько тысяч. Такой ответ меня ничуть не удивил, имхо, понятное дело! Дилеру лучше продать новый комплект, чем производить сервисное обслуживание. Тут внезапно я почувствовал как мое настроение резко улучшилось, появилась мысль разобраться во всем самостоятельно, попутно выяснив можно ли сбросить коды или нельзя. Вообще именно такие моменты и побуждают к альтернативам, реверсу, разработке и DIY. Я бросил себе вызов.

Начал я отнюдь не с копаний в блоках, а с альтернативного варианта. Пока Pandora лежала в шкафу я пытался сделать свой модуль. Я прикинул, что если разработать свой модуль автосигнализации, то это будет сразу круто, надежно, гибко и абсолютно не сложно. Что сказать, все это был голый энтузиазм. Я провел несколько недель за написанием прошивки и прототипированием модуля. Процесс был полностью творческим. Так, внезапно, мне приходила какая-либо идея и я с удовольствием реализовывал ее. Например, уже на стадии рабочего прототипа с нужными релюшками, транзисторами и GSM я вдруг захотел добавить еще GPS и Bluetooth. Ну а чего тянуть кота за хвост? Пусть модуль будет сразу крутым, как я изначально прикинул и мне пришлось сменить микроконтроллер на более жирный, так как UART портов у ATMega328 всего один единственный. Достать у AVR что-то распространенное и с тремя UART мне показалось нереальной затеей. Вариант реализации программных UART мне не понравился, по той простой причине, что аппаратный надежнее. Помню как STM32 уже вовсю мелькал в различных статьях по электронике и был доступен к заказу на AliExpress. Не долго думая я выписал себе пару STM32F103, так как это был настоящий 32-битный микроконтроллер с большим объемом памяти и богатой периферии, а тем более и нужным числом UART. Опыта программирования STM32 у меня на тот момент не было, но этого лишь возник интерес изучения чего-то нового.
В ожидании прихода микроконтроллеров было решено отложить прототип и не просто ждать, а проверить гипотезы, который остались.

Зима приближалась, да и машина без “присмотра” как-то не вселяла комфорта. Все продолжалось до тех пор, пока однажды я не заглянул под крышку блока автосигнализации. Внутри я обнаружил ATMega324! Радости моей не было и предела, так как это был AVR, а значит с ним можно было поработать и как следует. Первым делом я начал проверять разводку UART и SPI. У ATMega324 2 UART порта. Один UART заведен на сдвиговый регистр, а второй на разъем антенного модуля. Цепи SPI же привели меня на нераспаянную колодку (на фото у кварца в нижнем левом углу платы).



Быстренько напаял колодку и подключил программатор. Чтение прошивки и EEPROM приводили к пустым дампам. Понятное дело, разработчик не мог допустить такой прокол. Проверил обмен между блоком и антенным модулем. Линия TX была чистая в момент тревоги. Это могло означать, что число брелоков в памяти равно 0. Антенный модуль оказался совсем не разговорчивым. Также выяснилось, что микроконтроллер управляет питанием антенного модуля через транзисторный ключ. На выходе ключа было обнаружено входное напряжение, а по инструкции должно быть +5В. Все это мне показалось немного странным. Может быть по этой причине антенный модуль молчал? Вариантов проверки гипотез у меня не оставалось. А что там с фьюз-битами? Вот так сюрприз! Во фьзах разрешена прошивка через SPI интерфейс. Ну и как теперь сидеть на месте ровно? Правильно — написать свою прошивку! Это был такой хардкорный вариант, поскольку кроме самой прошивки еще и плату прозвонить пришлось.

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

Распиновка портов микроконтроллера
Номер вывода Пин процессора Разъем под документации Номер выхода в разъеме Назначение согласно документации карты монтажа
9 PD0 (RXD0/PCINT24) X1 RX / CALL RX-сигнал антенны и вход кнопки CALL BUTTON
10 PD1 (TXD0/PCINT25) X1 TX TX-сигнал антенны
11 PD2 -> 6C595 RCK pin
12 PD3 -> 6C595 SER IN pin
13 PD4 -> 6C595 SRCK pin
14 PD5 X5 COM Вход кнопки iButton
15 PD6 X4, X4a DQ DQ сигнал от датчиков температуры двигателя и салона
16 PD7 X7 Вход срабатывания основного уровня
3 PB7/SCK -> 6C595 CLR
2 PB6 X8 5 Выход CH5 (300mA) -
1 PB5 X8 2 Выход CH4 (1A) -
PB4 X8 3 Выход СH2 (500mA) -
43 PB3 X8 20 Вход сигнала от тахометра, инжектора, генератора
42 PB2 X8 4 Выход CH3 (300mA) -
41 PB1 X8 13, 14 Фонарь левого поворота
Фонарь правого поворота
40 PB0 X8 18 Реле CH1 (15 A)
15, 16 -> 18
37 PA0 Акселерометр (ось X)
36 PA1 Акселерометр (ось Y)
35 PA2 X3 COM Кнопка Valet / измерение напряжения
34 PA3
33 PA4 X8 8 Концевой выключатель багажника (±)
32 PA5 X8 11 Концевой выключатель дверей (±)
31 PA6 X8 19 Вход от датчика нейтрали/ручного тормоза (±)
30 PA7 X8 7 Вход от датчика масла, лампы зарядка (±)
19 PC0 X7 Вход срабатывания предварительного уровня
20 PC1 X6 1 Красный индикатор
21 PC2 X6 2 Зеленый индикатор
22 PC3 X1 +12V Питание антенны
23 PC4 X8 21 Вход от кнопки педали тормоза
24 PC5 X8 10 Вход зажигания
25 PC6
26 PC7 X8 17 Сирена




Написал тестовую прошивку, прошил, пощелкал релюшками — отлично! Антенный модуль и брелок уже были бесполезны. Так если можно написать прошивку для блока автосигнализации, используя всю его готовую схемотехнику и точки подключения в авто, то остается решить вопрос с каналом связи. Я подумал, а что если оставить в своем проекте GSM и GPS, выкинуть Bluetooth и прикрутить все его к автосигнализации Pandora? Ну конечно, это же лучший вариант! Во-первых не нужно было готовить сложную плату, схемотехника Pandora решала многие задачи, а мне же лишь нужно было сделать модуль расширения, который подключался бы взамен штатного антенного модуля. Как можно понять, период ожидания микроконтроллеров из Китая прошел не заметно.

Чтобы соединить все модули между собой я вытравил плату. Она очень простая. В ней готовые модули GPS, GSM и блок автосигнализации подключены к UART портам микроконтроллера STM32.



Начинка модуля разместилась в корпусе блока питания от ноутбука.



DC-DC преобразователь ни в какую не хотел размещаться внутри корпуса и пришлось подыскать более просторный корпус. В итоге на роль корпуса очень хорошо подошел пенал от лицевой части магнитолы SUPRA с удобным механизмом защелкивания.



Плата была покрыта полиуретановым лаком.

Компоненты. Тут все просто:

DC-DC преобразователь LM2596
GSM модем SIM800L (питание 3.6-4.4)
GPS модуль NEO-6M (питание 3.4-3.8)
Кусок текстолита.

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

Я думал какую периферию мне необходимо поддержать в первую очередь и получился такой список:

1. Датчики температуры салон и двигателя.
2. Акселерометр.
3. Вольтметр бортовой сети.
4. Вход концевых выключателей дверей.
5. Вход концевого выключателя багажника.
6. Вход концевого выключателя педали тормоза.
7. Выход на зажигание.
8. Выход на реле повторителей.
9. Выход на обходчик иммобилайзера.
10. Выход на реле блокировки.
11. Выход на сирену.

Сознательный отказ от поддержки:

  1. Выход на реле центрального замка. В автомобиле отсутствует проводка до двери центрального замка.
  2. Вход тахометра, так как он просто не имеет смысла для подключения на гибридном автомобиле.
  3. Вход концевого выключателя капота, так как отсутствует штатно на автомобиле.

Алгоритмы и функции, которые были реализованы:

1. Хранение настроек в EEPROM.
2. Запуск двигателя по технологии START-STOP.
3. Активация бесключевого обходчика с аналоговым управлением (iDatalink).
4. Удаленный запуск двигателя.
5. Контроль пониженного напряжения на аккумуляторе.
6. Контроль работы двигателя по напряжению.
7. Постановка/снятие охраны (контроль периметра зон).
8. Контроль концевых выключателей дверей и багажника.
9. Поддержка сирены.
10. Поддержка сигнальных огней (повторителей поворотов).
11. Поддержка тихого режима.
12. Поддержка внешней платы расширения (модуль телеметрии).
13. Соединение и передача состояний на сервер.
14. Управление системой DTMF кодами, в случае отсутствия связи с сервером.
15. Список доверенных номеров.

Обратная связь реализована вызовом на доверенный номер телефона, c которого был установил режим охраны.

Управление системой было реализовано через Telegram-бот:

image

Также бот отправляет сообщения о критических состояниях, таких как:

  1. Низкое напряжение на аккумуляторе.
  2. Напряжение на аккумуляторе восстановлено.
  3. Низкая температура двигателя.
  4. Высокая температура двигателя.

По факту самоделке уже исполнилось 3 года и за этот срок я выяснил, что:

  1. Самоделка была в максимальном аптайме порядка 80 дней, затем следовала перезагрузка устройства, так как GSM модем переставал принимать даже звонки.
  2. Стабильная работа в отрицательные и высокие температуры (от -40 до +40).
  3. Нужно сделать поддержку цифровых шин.

Возможность перепрошивки Pandora DXL 3000 по SPI шине является уязвимостью, потому что позволяет загрузить ПО, которое может активировать выходы бесключевого обходчика иммобилайзера и деактивировать блокировки.

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

Ах да, все это время система работала и продолжает работать на семейном автомобиле Toyota Prius в 20 кузове, который богат на цифровые шины. Полным ходом идет отладка поддержки шины BEAN.

P.S.: Вторая версия была разработана и проходит тестирование на автомобиле Toyota Camry 2007 года выпуска.

В итоге свой проект я вижу как возможность создания открытой системы автомобильной телеметрии.

Спасибо за внимание!
Источник: https://habr.com/ru/post/479216/


Интересные статьи

Интересные статьи

SWAP (своп) — это механизм виртуальной памяти, при котором часть данных из оперативной памяти (ОЗУ) перемещается на хранение на HDD (жёсткий диск), SSD (твёрдотельный накоп...
Есть несколько способов добавить водяной знак в Битрикс. Рассмотрим два способа.
Как-то у нас исторически сложилось, что Менеджеры сидят в Битрикс КП, а Разработчики в Jira. Менеджеры привыкли ставить и решать задачи через КП, Разработчики — через Джиру.
Сегодня мы продолжим разговор об использовании форм в React. В прошлый раз мы рассматривали особенности взаимодействия компонентов и текстовых полей. Здесь же мы обсудим работу с другими элемента...
Если Вы используете в своих проектах инфоблоки 2.0 и таблицы InnoDB, то есть шанс в один прекрасный момент столкнуться с ошибкой MySQL «SQL Error (1118): Row size too large. The maximum row si...