Привет, давно хотел поделиться доработкой своего авто, но второй год лень. Коротко опишу, как я добавил своему авто голосовое управление, а в конце видос.
Я работаю инженером-разработчиком систем "Умный дом" и в качестве хобби-работы разрабатываю различные устройства управления всем и вся!
Не обошел вниманием любимый авто, и похакав CAN шину добавил функцию голосового управления с помощью Siri.
Далее я пошагово покажу, что конкретно я сделал без влезания в технические дебри программирования.
Вводная
При нажатии на кнопку передается определенная команда по CAN шине на исполнитель и/или Блок управления. Для голосового управления авто нужно узнать эти команды и собрать устройство, которое эти команды будет отправлять.
1) Я спаял шилд с CAN чипом для Raspberry Pi. Шилд нужен, чтобы получать/отправлять команды по CAN шине с компьютера Raspberry Pi.

2) Теперь нужно подключиться проводами к CAN шине машины. У нас в машине используется 2 CAN шины (силового агрегата и комфорт), соединенные через gateway, меня интересует только шина Комфорт, которая позволяет открыть/закрыть стекла, управлять центральным замком, музыкой, кондеем и др. Лучше всего к ней подключить в двери, резать провода не нужно, просто в дверную колодку запихиваем еще 2 провода.

3) Для управления с телефона нужен еще WiFi роутер, нашел маленький TP-Link, связал их с Raspberry Pi и запихнул в нишу под рулем, благо у меня там места много.

4) Питание взял от блока предохранителей, он совсем рядом


5) Закрываем все, подключаемся с компьютера по WiFi к CAN шине и сканируем шину. Я написал программу, которая перехватывает все команды от всех устройств в машине. Чтобы узнать какую именно команду передает кнопка стеклоподъемника, я нажимаю и смотрю в какой ячейке изменились значения. Таким способом я вычислил все интересующие меня устройства (стекла, замок, фары, и чего то еще).

7) После того, как я узнал какие команды нужно отправлять, я написал программу-сервер принимающую команды с телефона и отправляющую их в CAN шину машины и написал простую программу для телефона, чтобы управлять авто. Ну а когда Apple пару лет назад представила технологию управления умными дома HomeKit с помощью голосового помощника Siri, то я добавил функцию преобразования голосовых команд в команды управления авто.





Комментарии 31
Добрый день, как можно с Вами связаться? Ватсап, телеграмм
Привет, хорошая статья, я только что купил жене VRS TDI 2010 года выпуска. Можете ли вы поделиться журналами? мне нужны пиды или сырой канбус. Алекс
Привет? Какие пиды?
могут данные? это сэкономит мне время на машине моей жены. ты разделяешь это? лог дампа?
Please, english )
Oh sorry. i need candump data from mk2.5, can you share the file u got?
I don't have a full trace. Only this
ARM
07,825975 2 00000004 381 6 82 0C 00 8C 00 00 00000000
07,925963 2 00000004 381 6 82 0C 00 8C 00 00 00000000
08,026060 2 00000004 381 6 82 0C 00 8C 00 00 00000000
08,126160 2 00000004 381 6 82 0C 00 8C 00 00 00000000
DISARM
44,426073 2 00000004 381 6 8A 0C 00 8C 00 00 00000000
44,436068 2 00000004 381 6 8A 0C 00 8C 00 00 00000000
44,446093 2 00000004 381 6 8A 0C 00 8C 00 00 00000000
44,456076 2 00000004 381 6 8A 0C 00 8C 00 00 00000000
44,571446 2 00000004 291 8 00 AA 00 00 00 00 00 00 00000000
44,601338 2 00000004 291 8 00 AA 00 00 00 00 00 00 00000000
44,631369 2 00000004 291 8 00 AA 00 00 00 00 00 00 00000000
44,661375 2 00000004 291 8 00 AA 00 00 00 00 00 00 00000000
44,691386 2 00000004 291 8 00 AA 00 00 00 00 00 00 00000000
44,721411 2 00000004 291 8 00 AA 00 00 00 00 00 00 00000000
44,751211 2 00000004 381 6 82 0C 00 8C 00 00 00000000
44,761228 2 00000004 381 6 82 0C 00 8C 00 00 00000000
44,771233 2 00000004 381 6 82 0C 00 8C 00 00 00000000
44,781252 2 00000004 381 6 82 0C 00 8C 00 00 00000000
OPEN TRUNK
11,134749 2 00000004 381 6 82 0C 00 8C 20 00 00000000
11,174661 2 00000004 381 6 82 0C 00 8C 20 00 00000000
11,214691 2 00000004 381 6 82 0C 00 8C 20 00 00000000
11,254742 2 00000004 381 6 82 0C 00 8C 20 00 00000000
RPM — 0x35B
08 DC 0B 9A 08 18 C2 A0 // (0x0BDC = 3036; 3036 / 4 = 759)
08 F4 0B 9A 08 18 C2 A0 // (0x0BF4 = 3060; 3060 / 4 = 765)
Alex5916
Oh sorry. i need candump data from mk2.5, can you share the file u got?
I found few files
disk.yandex.ru/d/gbbNLgWtqWBnEw
disk.yandex.ru/d/6fTgSrlYABd4OA
disk.yandex.ru/d/Zq1u-w9ohu6njA
cansend can0 181#0200
// Front Left Glass Up
181#0200
// Front Left Glass Down
181#0800
// Front Right Glass Up
181#2000
// Front Right Glass Down
181#8000
// Back Left Glass Up
181#0002
// Back Left Glass Down
181#0008
// Back Right Glass Up
181#0020
// Back Right Glass Down
181#0080
// Central Lock Open
291#09AA020000
// Central Lock Close
291#0955040000
// Update Light status of central lock
291#0900000000
tHANKS ALOT :)
'
Есть ли вариант обойтись своей ELM-кой? Перепрошить свою ELM, написать на SWIFTUI свой обработчик запросов, и в зависимости от того что ты говоришь, отправлять соответствующий запрос в шину, обрабатывать ответ и выполнять действия? То есть VCDS работает по такому же принципу? Только заместо голосового ассистента ты нажимаешь на кнопки.
Через obd2 нельзя ничем управлять, только диагностика.
А как тогда VCDS опускает/поднимает окна, включает омывайку, дворники, поворотники, лампы, сигналит и т.п. ?
В режиме теста исполнителей. Но на ходу это может быть заблокировано.
В итоге: в любом случае нужно внешнее устройство, которое будет отправлять спец. команды в шину?
Если управлять с телефона, то нужно устройство либо на базе esp32, либо одноплатный компьютер.
Можно в CAN отыскать параметр температуры коробки? Через ОБД в моей машине посмотреть не возможно.А VCDS такую информацию выдает.
Vcds берет ее как раз по can, нужно посниффать запросы от vcds
отличный пост, тоже начну изучать коды кан шины очень скоро
Более подробно здесь
m.geektimes.ru/post/282338/
Маньяк! :-)
На скриншоте подписи к командам предположительные, во время тестов подписывал, многие не подтвердились.
Схема отсюда lnxpps.de/rpie/, 2 чипа для RPI нужно MCP2515 и MCP2551
Может пригодится, разведенная плата для установки на RPI, делал в Sprint Layout 6.
www.dropbox.com/s/4zdlzut…sll3/CANBoardRPi.lay?dl=0
Вот кусок кода из тестового приложения для айфона:
// Front Left Glass
— (IBAction)frontLeftUp:(UIButton *)sender {
[self.commandConnection sendMessage:@"cansend can0 181#0200"];
}
— (IBAction)frontLeftDown:(id)sender {
[self.commandConnection sendMessage:@"cansend can0 181#0800"];
}
// Front Right Glass
— (IBAction)frontRightUp:(UIButton *)sender {
[self.commandConnection sendMessage:@"cansend can0 181#2000"];
}
— (IBAction)frontRightDown:(id)sender {
[self.commandConnection sendMessage:@"cansend can0 181#8000"];
}
// Back Left Glass
— (IBAction)backLeftUp:(UIButton *)sender {
[self.commandConnection sendMessage:@"cansend can0 181#0002"];
}
— (IBAction)backLeftDown:(id)sender {
[self.commandConnection sendMessage:@"cansend can0 181#0008"];
}
// Back Right Glass
— (IBAction)backRightUp:(UIButton *)sender {
[self.commandConnection sendMessage:@"cansend can0 181#0020"];
}
— (IBAction)backtRightDown:(id)sender {
[self.commandConnection sendMessage:@"cansend can0 181#0080"];
}
— (IBAction)lockUnlock:(UIButton *)sender {
// If central lock closed
if (lastStatus) {
// Open
[self.commandConnection sendMessage:@"cansend can0 291#09AA020000"];
int64_t delayInSeconds = 1; // 1 sec
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[self.commandConnection sendMessage:@"cansend can0 291#0900000000"];
});
}
else {
// Close
[self.commandConnection sendMessage:@"cansend can0 291#0955040000"];
int64_t delayInSeconds = 1; // 1 sec
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[self.commandConnection sendMessage:@"cansend can0 291#0900000000"];
});
}
}
спасибо
Привет, можешь ли поделиться адресами на стекла(или то что на скриншоте оно и есть)? и какую микруху использовал для работы с can? MCP2515?
Круто! Патент теперь и в массы :)
Забыл рассказать, у меня дома в коридоре iPhohe в стене с моей программой управления умным домом, когда машину паркую около подъезда, то машина подключается к моему дому и передает различную информацию, типа заряд аккумулятора, открыты ли окна и др.
как говорится — кто на что учился.)
Крутяк! Вот это тема!
Очень круто!
Порадовал пост! Вещь прям эксклюзивная!
При просмотре видео, моё Siri тоже активировалось))
зачОт! тоже подсмотрел тут как подключают датчик удара в машине к жсм модулю+ ардуино и он если чО звонит на телефон.заказал запчасти на али, жду прихода и буду паять строго по инструкции(на больше а этой области я не способен). к сожалению НИЧЕГО в этом не понимаю но уважаю подобные разработки и хотелось бы иметь что то подобное