Сервисный код я никогда не пытался запомнить, а мастер-код — тем более. Безуспешно перебрать на память несколько кодов я все-таки попытался. В течении нескольких минут мне пришлось угнать свой автомобиль. Трель от сирены в ушах еще потом стояла долго, так как сирена была установлена в салоне авто. Не помню почему я разместил сирену именно там — то ли по собственной лени, то ли увидел в этом какой-то смысл. Знаете, по личному испытанному ощущению, это может привести в сильное замешательство неподготовленного злодея. К моему глубокому сожалению, блок мне пришлось демонтировать. Я начал разбираться как быть дальше и что с этим делать. Кому интересно, что же вышло в итоге, прошу под кат.
У меня было несколько гипотез:
- Сбои в работе антенного модуля.
- Сбой энергонезависимой памяти в основном блока. В результате могли быть повреждены данные о брелоках и их синхронизации.
- Сбой энергонезависимой памяти брелока. Последствия схожи с п. 2.
- Глушение сигнала в целях подготовки к угону.
Вариант с наличием глушилки сигнала я проверил сразу же как переехал в безопасное место. Автосигнализация так же не реагировала на брелок.
Я обратился к дилеру по вопросу наличия тех. возможности сброса сервисных кодов. Мне ответили, что такой возможности нет и вам придется приобрести новый комплект за несколько тысяч рублей. Да и будет лучше если вы установите всё это дело у нас — сообщили они, отдав при этом еще несколько тысяч. Такой ответ меня ничуть не удивил, имхо, понятное дело! Дилеру лучше продать новый комплект, чем производить сервисное обслуживание. Тут внезапно я почувствовал как мое настроение резко улучшилось, появилась мысль разобраться во всем самостоятельно, попутно выяснив можно ли сбросить коды или нельзя. Вообще именно такие моменты и побуждают к альтернативам, реверсу, разработке и 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 вольта. Винт регулировки замазан лаком, чтобы предотвратить его смещение от вибраций.
Я думал какую периферию мне необходимо поддержать в первую очередь и получился такой список:
- Датчики температуры салон и двигателя.
- Акселерометр.
- Вольтметр бортовой сети.
- Вход концевых выключателей дверей.
- Вход концевого выключателя багажника.
- Вход концевого выключателя педали тормоза.
- Выход на зажигание.
- Выход на реле повторителей.
- Выход на обходчик иммобилайзера.
- Выход на реле блокировки.
- Выход на сирену.
Сознательный отказ от поддержки:
- Выход на реле центрального замка. В автомобиле отсутствует проводка до двери центрального замка.
- Вход тахометра, так как он просто не имеет смысла для подключения на гибридном автомобиле.
- Вход концевого выключателя капота, так как отсутствует штатно на автомобиле.
Алгоритмы и функции, которые были реализованы:
- Хранение настроек в EEPROM.
- Запуск двигателя по технологии START-STOP.
- Активация бесключевого обходчика с аналоговым управлением (iDatalink).
- Удаленный запуск двигателя.
- Контроль пониженного напряжения на аккумуляторе.
- Контроль работы двигателя по напряжению.
- Постановка/снятие охраны (контроль периметра зон).
- Контроль концевых выключателей дверей и багажника.
- Поддержка сирены.
- Поддержка сигнальных огней (повторителей поворотов).
- Поддержка тихого режима.
- Поддержка внешней платы расширения (модуль телеметрии).
- Соединение и передача состояний на сервер.
- Управление системой DTMF кодами, в случае отсутствия связи с сервером.
- Список доверенных номеров.
Обратная связь реализована вызовом на доверенный номер телефона, c которого был установил режим охраны.
Управление системой было реализовано через Telegram-бот:
Также бот отправляет сообщения о критических состояниях, таких как:
- Низкое напряжение на аккумуляторе.
- Напряжение на аккумуляторе восстановлено.
- Низкая температура двигателя.
- Высокая температура двигателя.
По факту самоделке уже исполнилось 3 года и за этот срок я выяснил, что:
- Самоделка была в максимальном аптайме порядка 80 дней, затем следовала перезагрузка устройства, так как GSM модем переставал принимать даже звонки.
- Стабильная работа в отрицательные и высокие температуры (от -40 до +40).
- Нужно сделать поддержку цифровых шин.
Возможность перепрошивки Pandora DXL 3000 по SPI шине является уязвимостью, потому что позволяет загрузить ПО, которое может активировать выходы бесключевого обходчика иммобилайзера и деактивировать блокировки.
В целом проделанная работа дала мне огромный опыт. Я изучил схемотехнику автомобильный сигнализации, увидел как можно делать компактно и просто и научился программировать микроконтроллеры STM32. В итоге я сделал продукт, которым пользуюсь сам. Я вдохновился и продолжил разработку второй версии. Вторая версия сможет подключаться к цифровым шинам для упрощения и сокращения числа точек подключения, а также реализовывать обход штатного иммобилайзера без внешних обходчиков по цепям IMMO-IMI.
Ах да, все это время система работала и продолжает работать на семейном автомобиле Toyota Prius в 20 кузове, который богат на цифровые шины. Полным ходом идет отладка поддержки шины BEAN.
P.S.: Вторая версия была разработана и проходит тестирование на автомобиле Toyota Camry 2007 года выпуска.
В итоге свой проект я вижу как возможность создания открытой системы автомобильной телеметрии.
Спасибо за внимание!
Комментарии (18)
unwrecker
08.12.2019 17:15Да, эта странность у Пандор с невозможностью сброса пин-кода совершенно необъяснима. Ну сделали бы паузу на сброс, раз надеятся на остаток защиты в виде радиореле....
Самодельная сигналка вышла дешевле?
50cmd Автор
09.12.2019 05:49Да, самоделка вышла дешевле. Проект планирую сделать полностью открытым. Когда это произойдет я не могу сказать, но уже очень скоро. Ради такого события будет создан отдельный пост.
Крутым достижением в проекте считаю наличие реализации бесключевого обходчика иммобилайзера по цепям IMO-IMI — ради этого есть смысл развивать проект.
maxwolf
08.12.2019 18:22Круто! Снимаю шляпу!
P.S. Мне вот тоже не хватает в пандоре (DX-90B, если что) возможности посылать с брелка или телефона кастомные команды на CAN-bus… Тут и задумаешься, ждать милости отприродыпроизводителя, или самому засучивать рукава…50cmd Автор
09.12.2019 05:40Для варианта «посылать кастомные команды в CAN-bus с телефона» могу посоветовать вам сделать WiFi/Bluetooth шлюз на базе ESP32. У ESP32 есть CAN-контроллер. Легко будет добавить GSM модем.
Anfinagen
09.12.2019 13:47Тоже есть pandora (3700) c отсутствием обновлений… и ценой… Думаю отличная идея собрать сигнализацию самому. Потребление у Pandor заявлено минимальное у вас с этим как?
Oakum
09.12.2019 14:26Присоединяюсь к вопросу, делаю управление предпусковым подогревателем через SMS, в режиме ожидания не могу сделать потребление менее 16mA@12V. А тут судя по всему удержание IP соединения. Сколько потребление схемы?
50cmd Автор
10.12.2019 04:25Да, вы правы. Удержание IP соединения весьма затратно и превосходит 16mA. Точные цифры сказать не могу, так как не проводил испытаний по данным критериям.
MrCrooK
10.12.2019 04:25В итоге свой проект я вижу как возможность создания открытой системы автомобильной телеметрии.
Добрый день!
не увидел исходников, схем и разводки печатной платы. А так же исходников телеграмм бота.50cmd Автор
10.12.2019 04:32Вы правильно заметили, что существует возможность создания открытой системы. Статья повествовала о истории обратной разработки устройства, утратившего свой функционал и не более того. Я готов поделиться своими исследованиями немногим позже.
slog2
Я так и не понял, телеграм-бот то где живёт? Неужто в STM32F103
50cmd Автор
Телеграм-бот существует как отдельный компонент системы. По архиктетуре проекта идет как часть docker-контейнера. А можно реализовать бота и прямо в устройстве — занесу в список идей. Железо проекта еще не зафиксировано.
slog2
Я так и не понял — где выполняется код телеграмм-бота? Есть ещё какой-то внешний сервер? В России телеграмм-боты не работают без VPN. Как реализовать бота прямо в устройстве? По-моему для этого нужно железо как минимум уровня самых дешёвых роутеров, типа mr3020.
50cmd Автор
Телеграм-бот крутится на внешнем сервере. Для его бесперебойной работы по callback модели был написан свой https прокси-сервис и размещен на VPS вне территории России. Устройство и телеграм-бот взаимодействуют между собой через сервер проекта по бинарному протоколу, ну а дальше все уже заворачивается по необходимости на внешний https прокси-сервис бота.
Таким же образом можно реализовать телеграм-бота в устройстве, но только по polling-модели, ведь GSM модем умеет нативно формировать и посылать HTTP запросы, а модели постарше уже и HTTPS, например тот же SIM900.
slog2
Вот теперь понятно. Это такая сигналка со своим VPS за границей. Чуда не случилось. Расходимся :)