Хакаем CAN шину авто для голосового управления



    Современный автомобиль это не только средство передвижения, но и продвинутый гаджет с мультимедийными функциями и электронной системой управления агрегатами и кучей датчиков. Многие автопроизводители предлагают функции ассистентов движения, помощников при парковке, мониторинга и управления авто с телефона. Это возможно благодаря использованию в авто CAN шины к которой подключены все системы: двигатель, тормозная система, руль, мультимедиа, климат и др.

    Мой автомобиль Skoda Octavia 2011 г. в. не предлагает возможностей управления с телефона, поэтому я решил исправить этот недостаток, а заодно и добавить функцию голосового управления. В качестве шлюза между CAN шиной и телефоном я использую Raspberry Pi с шилдом CAN BUS и WiFi роутер TP-Link. Протокол общения агрегатов авто закрытый, и на все мои письма предоставить документацию протокола Volkswagen отвечал отказом. Поэтому единственный способ узнать, как общаются устройства в авто и научиться ими управлять является реверс-инжиниринг протокола CAN шины VW.

    Я действовал поэтапно:

    1. Разработка CAN шилда для Raspberry Pi
    2. Установка ПО для работы с CAN шиной
    3. Подключение к CAN шине авто
    4. Разработка сниффера и изучение протокола CAN шины
    5. Разработка приложения для телефона
    6. Голосовое управление с помощью Homekit и Siri

    В конце видео голосового управления стеклоподъемником.

    Разработка CAN шилда для Raspberry Pi


    Схему шилда взял здесь lnxpps.de/rpie, там же и описание выводов, для общения с CAN используются 2 микросхемы MCP2515 и MCP2551. К шилду подключаются 2 провода CAN-High и CAN-Low. В SprintLayout 6 развел плату, может кому пригодится CANBoardRPi.lay (на заглавном фото прототип шилда на макетке).





    Установка ПО для работы с CAN шиной


    На Raspbian 2-x годичной давность мне потребовалось пропатчить bcm2708.c, чтобы добавить поддержку CAN (возможно сейчас это не требуется). Для работы с CAN шиной нужно установить пакет утилит can-utils с github.com/linux-can/can-utils, после этого подгрузить модули и поднять can интерфейс:

    # initialize
    insmod spi-bcm2708
    insmod can
    insmod can-dev
    insmod can-raw
    insmod can-bcm
    insmod mcp251x
    # Maerklin Gleisbox (60112 and 60113) uses 250000
    # loopback mode for testing
    ip link set can0 type can bitrate 125000 loopback on
    ifconfig can0 up
    

    Проверяем, что интерфейс CAN поднялся командой ifconfig:



    Проверить, что все работает можно отправив команду и получив ее.

    В одном терминале слушаем:

    root@raspberrypi ~ # candump any,0:0,#FFFFFFFF
    

    В другом терминале отправляем:

    root@raspberrypi ~ # cansend can0 123#deadbeef
    

    Более подробный процесс установки описан здесь lnxpps.de/rpie.

    Подключение к CAN шине авто


    Немного изучив открытую документацию на CAN шину VW я выяснил, что у меня используется 2 шины.

    Шина CAN силового агрегата, передающая данные со скоростью 500 кбит/с, связывает все обслуживающие этот агрегат блоки управления.

    Например, к шине CAN силового агрегата могут быть подключены следующие приборы:

    • блок управления двигателем,
    • блок управления АБС,
    • блок управления системой курсовой стабилизации,
    • блок управления коробкой передач,
    • блок управления подушками безопасности,
    • комбинация приборов.

    Шина CAN системы «Комфорт» и информационнокомандной системы, позволяющая передавать данные со скоростью 100 кбит/с между обслуживающими эти системы блоками управления.

    Например, к шине CAN системы «Комфорт» и информационно<командной системы могут быть
    подключены следующие приборы:

    • блок управления системой Climatronic или климатической установкой,
    • блоки управления в дверях автомобиля,
    • блок управления системой «Комфорт»,
    • блок управления с дисплеем для радио и навигационной системы.

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

    Обе шины связаны через шлюз, который находится в области под рулем, так же к шлюзу подключен диагностический OBD2 разъем, к сожаление через OBD2 разъем нельзя послушать трафик от обеих шин, можно только передать команду и запросить состояние. Я решил, что буду работать только с шиной «Комфорт» и самым удобным местом подключения к шине оказался разъем в водительской двери.



    Теперь я могу слушать, все что происходит в CAN шине «Комфорт» и отправлять команды.

    Разработка сниффера и изучение протокола CAN шины




    После того как я получил доступ к прослушиванию CAN шины, мне нужно расшифровать кто кому и что передает. Формат пакета CAN показан на рисунке.



    Все утилиты из набора can-utils сами умеют разбирать CAN пакеты и отдают только полезную информацию, а именно:

    • Идентификатор
    • Длина данных
    • Данные

    Данные передаются в не зашифрованном виде, это облегчило изучение протокола. На Raspberry Pi я написал маленький сервер который перенаправляет данные с candump в TCP/IP, чтобы на компьютере разобрать поток данных и красиво показать их.

    Для macOS я написал простое приложение, которое для каждого адреса устройства добавляет ячейку в табличку и в этой ячейке я уже вижу какие данные меняются.



    Нажимаю кнопку стеклоподъемника я нашел ячейку в которой меняются данные, затем я и определил какие команды соответствуют нажатию вниз, нажатию вверх, удержанию вверх, удержанию вниз.

    Проверить, что команда работает, можно отправив из терминала, например команду поднять левое стекло вверх:

    cansend can0 181#0200

    Команды, которые передают устройства по CAN шине в автомобилях VAG (Skoda Octavia 2011), полученные методом реверс-инжиниринг:

    // 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

    Мне было лень изучить все остальные устройства, поэтому в этом списке, только то что мне было интересно.

    Разработка приложения для телефона


    Используя полученные команды я написал приложение для iPhone, которое открывает/закрывает стекла и управляет центральным замком.

    На Raspberry Pi я запустил 2 маленьких сервера, первый отправляет данные с candump в TCP/IP, второй принимает команды от iPhone и передает их cansend.


    Исходники приложения управления авто для iOS
    //
    //  FirstViewController.m
    //  Car Control
    //
    //  Created by Vitaliy Yurkin on 17.05.15.
    //  Copyright (c) 2015 Vitaliy Yurkin. All rights reserved.
    //
    
    #import "FirstViewController.h"
    #import "DataConnection.h"
    #import "CommandConnection.h"
    
    @interface FirstViewController () <DataConnectionDelegate>
    @property (nonatomic, strong) DataConnection *dataConnection;
    @property (nonatomic, strong) CommandConnection *commandConnection;
    @property (weak, nonatomic) IBOutlet UILabel *Door_1;
    @property (weak, nonatomic) IBOutlet UILabel *Door_2;
    @property (weak, nonatomic) IBOutlet UILabel *Door_3;
    @property (weak, nonatomic) IBOutlet UILabel *Door_4;
    @property (weak, nonatomic) IBOutlet UIButton *CentralLock;
    - (IBAction)lockUnlock:(UIButton *)sender;
    @end
    
    @implementation FirstViewController
    
    - (void)viewDidLoad {
        self.dataConnection = [DataConnection new];
        self.dataConnection.delegate = self;
        [self.dataConnection connectToCanBus];
        
        self.commandConnection = [CommandConnection new];
        [self.commandConnection connectToCanBus];
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    - (void)doorStatusChanged:(char)value {
        /*
         1 - Front Left Door
         2 - Front Right Door
         4 - Back Left Door
         8 - Back Right Door
         
         3 - Front Left&Right Door = 1 + 3
         5 - Front& Back left Door = 1 + 4
         */
        
        // Front Left Door
        if (value & 1) {
            self.Door_1.backgroundColor = [UIColor yellowColor];
            self.Door_1.text = @"Открыто";
            NSLog(@"1");
        }
        else {
            self.Door_1.backgroundColor = [UIColor lightGrayColor];
            self.Door_1.text = @"Закрыто";
        }
        
        // Front Right Door
        if (value & 2) {
            self.Door_2.backgroundColor = [UIColor yellowColor];
            self.Door_2.text = @"Открыто";
            NSLog(@"2");
        }
        else {
            self.Door_2.backgroundColor = [UIColor lightGrayColor];
            self.Door_2.text = @"Закрыто";
        }
        
        // Back Left Door
        if (value & 4) {
            self.Door_3.backgroundColor = [UIColor yellowColor];
            self.Door_3.text = @"Открыто";
            NSLog(@"4");
        }
        else {
            self.Door_3.backgroundColor = [UIColor lightGrayColor];
            self.Door_3.text = @"Закрыто";
        }
        
        // Back Right Door
        if (value & 8) {
            self.Door_4.backgroundColor = [UIColor yellowColor];
            self.Door_4.text = @"Открыто";
            NSLog(@"8");
        }
        else {
            self.Door_4.backgroundColor = [UIColor lightGrayColor];
            self.Door_4.text = @"Закрыто";
        }
    }
    
    BOOL firstStatusChange = YES;
    BOOL lastStatus;
    
    -(void) centralLockStatusChanged:(BOOL)status {
        // At first status changes set lastStatus variable
        if (firstStatusChange) {
            firstStatusChange = NO;
            // Invert status, to pass the next test
            lastStatus = !status;
        }
        
        // Change Lock image only if status changed
        if (!(lastStatus == status)) {
            // Check status
            if (status) {
                [self.CentralLock setBackgroundImage:[UIImage imageNamed:@"lock_close"] forState:UIControlStateNormal];
            }
            else {
                [self.CentralLock setBackgroundImage:[UIImage imageNamed:@"lock_open"] forState:UIControlStateNormal];
            }
            lastStatus = status;
        }
    }
    
    
    // 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"];
            });
        }
        
    }
    @end
    


    Есть способ не писать свое приложение для телефона, а воспользоваться готовым из мира умных домов, всего лишь потребуется установиться на Raspberry Pi систему автоматизации Z-Way командой:

    wget -q -O - razberry.z-wave.me/install | sudo bash

    После этого добавляем наши CAN устройства в Z-Way систему автоматизации


    И управляем стеклоподъемником как обычным выключателем:


    Мобильный приложения для Z-Way: ZWay Home Control и ZWay Control.

    Голосовое управление с помощью Homekit и Siri


    В одной из своих статей я описывал процесс установки Homebridge на Raspberry Pi для голосового управления домашней системой автоматизации Z-Way. После установки Homebridge вы получите возможность голосового управления с помощью Siri. Уверен, что для Android есть множество приложений позволяющих голосом отправлять HTTP запросы для управления Z-Way.

    Видео голосовогу управления стеклоподъемником прилагаю.
    Поддержать автора
    Поделиться публикацией

    Похожие публикации

    Комментарии 107

      +1
      Как говорится — «Кашааа». Судя по видео, присутствует какая-то задержка со стороны Siri?
        0

        готов разжевать, в чем вопрос? нет задержки.

        –2
        Интересно, в каком реальном сценарии может пригодиться голосовое управление стеклоподъемниками? В аварии руки оторвало и надо на помощь позвать? :-)
          +1

          в этом случае у нас есть глонасс в новых тачках. А в перспективе управление мульдемидиа удобно голосом.

            0
            У меня, если музыка в машине играет, даже на средней громкости, гугл нау плохо может разобрать мой голос. У сири с этим лучше? Если нет, то мультимедиа будет неудобно пользоваться)
          0
          А на автомате с эл.усилителем можно через шину полностью управлять движением авто?
          Какая марка/модель наиболее подойдет для таких экспериментов?
            +2

            У меня авто концерна Volkswagen Audi Group, команды в авто концерна: Skoda, VW, Audi, Porsche одинаковые.
            У любой из марок в максимальной комплектации есть ассистенты движения и парковки, можно расширить их работу до автопилота, спросите у Геохота :)


            Электроусилитель руля позволяет управлять рулем через CAN.

              0

              <зануда-mode>Извините за оффтоп, но компания называется не Volkswagen Audi Group, и даже не Volkswagen Auto Group, как думают многие. Более того, аббревиатура VAG никогда не была официальным названием. Компания называется просто Volkswagen Group, либо, по немецки, Volkswagen Aktiengesellschaft, причем Aktiengesellschaft это просто "акционерное общество".</зануда-mode>

                0

                Для обывателей все таки VAG ассоциируется с Volkswagen и Audi, да и Wikipedia не против:
                "Головной (материнской) компанией концерна является Volkswagen Aktiengesellschaft, чаще упоминаемая как Volkswagen AG или просто VAG. Неофициально аббревиатуру VAG расшифровывают как «Volkswagen Audi Gruppe»."

                  +1
                  Ещё Seat.
                0
                У меня Ford Kuga 2 умеет парковаться но там много доп. оборудования стоит для этого, возможно что прошивка мозгов другая. Но при мне официалы крутили рулем и газовали с ноута через CAN. Т.е. можно управлять.
                  +1

                  Однозначно можно, но у GM другие команды, которые вычислить не сложно.

                    +3
                    У Ford'a есть почти полностью открытый SDK, так что…
                    https://media.readthedocs.org/pdf/openxc-vehicle-interface-firmware/v7.1.0/openxc-vehicle-interface-firmware.pdf
                    https://habrahabr.ru/post/165929/
                    0
                    У меня Ford Kuga 2 умеет парковаться но там много доп. оборудования стоит для этого
                    По идее там нужны датчики парковки (с камерой, возможно). Без них он будет парковаться, но куда (в кого) — не знает.
                  0
                  Спасибо за статью

                  Единственный вопрос: не думали упростить связку Raspberry Pi + WiFi роутер?
                  Мне кажется, использование двух устройств несколько избыточно в данной ситуации.
                  Или в Raspberry Pi воткнуть WiFi донгл + модем ну или роутер взять помощнее и отказаться от Pi.
                    0

                    Конечно изначально в разбери я воткнул wifi стик, но практика показала, что мой orient приводит к перезагрузке raspberry, поэтому за 400р купил отдельный роутер.
                    Возможно сейчас и есть нормальные usb wifi стики.
                    Мне нужен homebridge, raspberry самый дешевый комп поддерживающий его.

                      0
                      Подскажите, какой роутеркупили
                        0

                        tp link tl mr3020

                          0
                          эх, найти бы еще по 400р?)
                            0

                            Сейчас то на Raspberry Pi 3 достойный wi-fi, доп роутер не нужен.
                            Это у меня все еще стоит Raspberry Pi первого поколения.

                    +5
                    Как ненастоящий автоэлектрик, хочу заметить, что использование кабеля Cat5e solid в автомобиле крайне чревато, а в том месте, где они показаны на фото, чревато втройне. Вибрации и перегибы вкупе с перепадом температур и влажности быстро доконают эти проводки, причем в довольно неожиданном месте.

                    Если очень хочется использовать подручный айтишный склад, то лучше использовать многожильные пары от патч-кордов, а по хорошему лучше зайти на любую разборку и взять бесплатно, то есть даром, ненужную косу от более-менее современного аппарата и далее разобрать ее на годные провода в правильной изоляции.
                      0

                      кабель от патч корда за 2 года не сгнил. а если правильно подключиться к obd2 разъему, так вообще сносу не будет

                        0

                        4 года полет, провода в норме

                        0
                        +100500, сам от патч-кордов многожилку использовал для подключения кнопок управления вариатором на руле к мозгам, а так же ввиду отсутствия родного кабеля между головой и ченджером сделал тоже и витухи кабелек (мне не нужен был аудио с ченджера, а только факт его наличия, чтоб голова включила AUX, поэтому 8 проводов хватило)
                        0
                        У меня похожая Шкода L&K, но каким-то чудом у неё нет опции отключения передней пассажирской подушки (для детского кресла) — как такое не встоке, я не понял.

                        Официалы сказали, что отключить/включить можно только на сервисе, ~5000 за процедуру. А переключать-то часто нужно.

                        Можно ведь и это через CAN делать? Будет загораться при этом наверняка лампочка на панельки (лампочка есть, нет только переключалки)?
                          0

                          В моей комплектации есть кнопка отключения пассажирской подушки, это означает, что в любой комплектации есть команда для отключения подушки, нужно только её вычислить.

                            +1
                            У меня тоже в Fabia нет кнопки отключения подушки пассажира, решение простое — ставить детское кресло за водителем, так безопаснее.
                              0
                              Ну, у меня трое, с трудом помещаются все кресла сзади. А в Фабию точно не влезут.
                                0
                                безопаснее ставить не за водителем, на заднее сиденье с правой стороны двери или по центру. У нас все же правостороннее движения
                                  0
                                  Я в своей Fabia II 2014 у дилеров переднюю пассажирскую подушку отключил, через диагностический разъем.
                                    0
                                    это можно, но жену тогда как возить? её надо включать-выключать в зависимости от ситуации. так задумано. но вот у меня не стоит эта опция.
                                      0
                                      Там ребенок в автокресле, не жена.
                                  0
                                  посмотрите схему как ставится штатная кнопка, попробуйте себе ее поставить сами
                                    0
                                    Полезный совет ;) куда смотреть-то?
                                      0
                                      Для вашей модели автомобиля бывают комплектации у которых такой переключатель есть штатно? Если бывает то смотреть как реализовано, если не бывает то никак.
                                        0
                                        конкретно в фабии по инструкции выключатель под ключ должен быть с правой стороны панели, доступ при открытой двери. Сам долго втыкал в инструкцию с картинками и в пластиковую заглушку в моем экземпляре авто. Сборка чешская. Приходится кресло возить сзади.
                                        0
                                        В электросхемы :)
                                          0
                                          Как вариант — никто не мешает откусывать подушке электрозапал при помощи надежного тумблера.
                                          Чтобы не взбесился блок контроля — тумблер взять переключашку на 2 позиции и на вторую привесить балласт, имитирующий айрбэг
                                            0

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

                                          0
                                          Через can, насколько знаю, нет такой возможности.
                                          В vcds (спец программа для диагностики), по крайней мере такой возможности нет. Есть настройка «у нас есть/нет подушки безопасности», но какой эффект это даст, неизвестно.
                                          +7
                                          Удивительно, что никто не оценил бешеный скилл ТСа, как будто тут одни гении сидят) Весьма сражен вашими способностями уважаемый, жду ваших новых публикаций. Удачи в делах)
                                            0
                                            Присоединясь. Круто.
                                            0
                                            средство передвижение

                                            передвижениЯ

                                            По тексту — довольно интересно, но слишком много «Я» для 6-ти пунктов, наиболее тяжкие из которых ( 1, 2 ), по сути, сделаны товарищами с приведённого в статье сайта ( lnxpps.de/rpie )

                                              +2

                                              Ну по сути я только фотки и видео сделал, остальное уже было.

                                              0
                                              Друзья, а как 2551 работает с комфорт шиной? На комфорте же low speed fault tolerance без концевых резисторов и даже уровни сигнала там отличаются. Разве не должен использоваться трансивер типа tja1054?
                                                0

                                                Я подключен именно к шине комфорт, проблем нет.

                                                  0
                                                  На passat b6 (дизель) использовал 2551, работает нормально.
                                                  А вот на mercedes a class завелось только с tja1054.
                                                  0
                                                  Вариант использования диллерского диагностического оборудования не рассматривался?
                                                  Все функции упарвления доступные из диллерского сканера прописаны в базе данных программы.
                                                  Возможно проще распаковать эту базу, чем сниферить нужные команды в шине?

                                                  В автомобилях марки рено (ну и естественно у Весты и Иксрея тоже, ибо это тоже рено, хоть и с шильдиком ваза) например достаточно простой формат, описание всех команд управления и последовательностей команд сделано в формате XML. всякие там мигания фарами и управление стёклами подробно расписаны.
                                                    0
                                                    А есть ссылочка какая на это дело?
                                                      0
                                                      для рено это pyren, если для других марок, то не знаю, надо у сообществ интересоваться.

                                                      просто любая диллерская программа которая с диллерским сканером работает в себе содержит базу всех кодов нужных для управления по шине, вопрос в том как эти данные в программе расшифровать.
                                                    +1
                                                    >>На Raspbian 2-x годичной давность мне потребовалось пропатчить bcm2708.c, чтобы добавить поддержку CAN (возможно сейчас это не требуется).

                                                    Сейчас поддержка MCP2515 уже реализована в ядре Raspbian, по сути работает из коробки.
                                                      0
                                                      у меня тоже машина семейства ваг и куплена VCDS. там для каждого блока есть тест исполнителей. может оттуда можно взять команды. и плюс что подключается через обд-2
                                                        0

                                                        Пытался в дистрибутиве "Вася" найти коды, но быстро не получилось, поэтому не стал с ним заморачиваться, хотя можно было бы и Васю послушать. Надо будет еще разок его в HEX редакторе посмотреть.

                                                        0
                                                        Тоже самое на форуме делаем с Citroen C4, только у нас зоопарк CAN шин побольше.
                                                          0

                                                          Ссылочку на форум можно? интересно посмотреть

                                                            0
                                                            Можно. Вот тут обсуждают все наработки.
                                                          –9
                                                          Один я предпочитаю по старинке пользоваться машинами только с ручной крутёлкой для открытия окон?
                                                            0
                                                            Заодно после грунтовки и разных пассажиров смотреть что там открылось. Очень удобно, примерно как бензобак и капот с багажником открывать ключами, в идеале — разными.
                                                              0
                                                              Чего после грунтовки открыться то может? Эксплуатируем с батей машины с ручным открытием окон сколько себя помню, само по себе ничего никогда не открывалось.
                                                              Пассажиры у меня тоже ничего не открывают. Когда последний раз батя менял машину, и я сам искал себе, искали именно с ручным открытием окон, проще конструкция меньше проблем, да и вообще мне не нравится когда всякую ерунду на CAN завязывают, ладно ещё тупые кнопки ни с чем не соединённые, но окно это прямой способ попасть в машину, ну и если машина попала в воду то электростеклоподъёмники уже не помогут.
                                                              Плюс, простой стеклоподъёмник надёжнее, я его поломанным только на совсем убитых жигулях встречал, а вот электростеклоподъёмники выходят из строя чаще, сам не раз ремонтировал у других, а сам решил не связываться даже.
                                                              Не понимаю за что тут минусовать.
                                                                0

                                                                Прогресс не остановить, у премиум моделей стеклоподъемник подключен по оптоволокну.

                                                                  0
                                                                  само по себе ничего никогда не открывалось
                                                                  За 20 лет эксплуатации у пары машин такое было (задние двери). Грейдер очень способствует.

                                                                  проще конструкция меньше проблем
                                                                  Если не Жигули, то проблем нет. У них ЦЗ и стеклоподъёмники надо менять на нормальные (слабые заводские активаторы горят при перекосе кузова). Ни у одной другой машины ни разу проблем ни с ЦЗ, ни со стеклоподъёмниками(электро) не было.

                                                                  и если машина попала в воду то электростеклоподъёмники уже не помогут
                                                                  У меня нет планов нырять на машину в воду, на (несколько) порядков больше шанс попасть в ДТП (даже лобовое), а я уверен в том что моя машина значительно безопаснее любой, обладающей механическими стеклоподъёмниками.
                                                                    0

                                                                    К слову о безопасности с электрическими стеклоподъмниками. У новых Mercedes, когда машина понимает, что аварии не избежать (передний парктроник показывает 2 метра до столкновения, а скорость больше 40 км/ч) на стеклоподъемники подается повышенное напряжение, чтобы побыстрее открыть все стекла, чтобы разбитое стекло не повредило людей.

                                                                      0
                                                                      Интересно, хотя обычно применяются шторки. У меня с боковых осколков нет — триплекс ;)
                                                                      0
                                                                      Ну, с меня хватило центрального замка отнюдь не на жигулях, шёл дождь и надо было забрать девушку, а он внезапно сработал, машина заведена, ключи и пульт от сигналки внутри. Запасного ключа и пульта под рукой нет, полчаса с другом пытались вскрыть разными способами, в итоге отломали молдинг и тыкнули в замок линейкой. Зато я люто промок под дождём, да и девушку забрать не вышло.
                                                                      После этого случая я и привод ЦЗ на пассажирской двери отсоединил.
                                                                      Вот мотоцикл у меня вообще карбюраторный, а из электроники только система зажигания. И он меня никогда не подводил. Чем больше электроники лишней, тем больше проблем она может создать я считаю. При этом сам электрик и немного шарю в компах (и кодил, и админил, и прошивал всякое и паял).
                                                                        +1
                                                                        машина заведена, ключи и пульт от сигналки внутри
                                                                        Криворукие настройки сигнализации, сталкивался с таким (не у себя, у себя следил за установкой или использовал выход на штатные системы — ни разу не было такого, а вот личинку замка заливало и ключом открывать было проблемой).

                                                                        И вообще к чему полумеры? ЭБУ и инжектор — ненадёжно, только карбюратор (хотя солексовские клапаны ХХ — зло), топливный электронасос — зло, нужен механический (но он в разы менее надёжен, чем механический стеклоподъёмник и в бесконечное число раз менее надёжен, чем электрический [мы же тут все ориентируемся исключительно на личный опыт])? И вообще надёжнее всего отсутствие стеклоподъёмников. И стёкол. И дверей, раз уж они клинят и запираются. И вообще ДВС могут получить гидроудар. Никаких полумер. Только рикши, только хардкор.
                                                                          0
                                                                          >Криворукие настройки сигнализации, сталкивался с таким
                                                                          Там без сигнализации обошлось, когда выходил зацепил за собачку замка (возможно её ещё дёрнуло при резком хлопке дверью) и сработал центральный замок который довёл и эту собачку и все остальные.

                                                                          Ну насчёт карбюраторов можно поспорить, вполне надёжная конструкция, правда требует регулировки по сезону, но не вижу никакой проблемы раз в несколько месяцев повернуть пару болтов (пусть даже и 3 т.к. в моём мотоцикле 2 карбюратора). Уж не знаю какие проблемы могли возникнуть с механическим топливонасосом, у нас было 3 карбюраторных нивы ни в одной насос мозги не полоскал, а вот электронасосы на моём опыте полоскали за счёт отказа электрики, а ещё электронасос можно убить погоняв его без топлива, механический же убить сложно. А в мотоцикле у меня топливо вообще самотёком идёт.

                                                                          >И вообще надёжнее всего отсутствие стеклоподъёмников. И стёкол. И дверей, раз уж они клинят и запираются.
                                                                          Я вот тоже пришёл к аналогичным выводам, и выход есть. МОТОЦИКЛ! Благо ещё можно купить карбюраторный в адекватном состоянии.
                                                                            0
                                                                            вполне надёжная конструкция, правда требует регулировки по сезону
                                                                            По сезону не регулировал (и так работало нормально), но вот что клапан ХХ залипал от перегрева — да, если в открытом положении — заливало, в закрытом — глохло при остановке. Лечится нормальным клапаном, но за несколько лет эксплуатации и чуть не с десяток попробованных не нашёл способного работать долго.

                                                                            Уж не знаю какие проблемы могли возникнуть с механическим топливонасосом
                                                                            Очень простые — толкатель при минимальной прокладке не дотягивался, а без неё — ушатывал насос месяцев за 7-9. Менялись несколько раз, после чего мог разобрать-собрать с закрытыми глазами, что пригодилось на другой машине, когда она пришла с неправильно собранным с конвейера.

                                                                            электронасос можно убить погоняв его без топлива
                                                                            Какой ужас, как же мне теперь жить? Паника! А, нет, стоп. Когда у меня последний раз кончалось топливо? Ах да, 18+ лет назад (при продаже наливают такую каплю, что иногда до заправки не доехать). Потом когда загоралась лампа оно как-то всё не могло кончиться. Что при покупке новой, где лампа была так удачна, что не мозолила глаз, что после пробега 1200км на одном баке. Вот такая нестрашная страшная вещь.

                                                                            МОТОЦИКЛ
                                                                            Бесполезен чуть более, чем полностью. Сколько на нём фундаментных блоков можно увезти? А мешки с цементом и 200л бочку? И это только последнее перемещённое. Да даже более простой вариант — продуктов на две семьи в выходные закупить. С парковкой тоже проблемы — оставить вдоль дороги не вариант, укатить можно «карбюраторный в адекватном состоянии», потому как масса невелика, а цена — выше, чем у велосипеда. Если уж машины тырят сейчас очень активно. Опять же погода — начиная с редкого ледяного дождя, заканчивая обычной грязью, когда после всего полсотни километров машина покрывается ощутимым слоем. А здесь им покроется мотоциклист. Ну и общая неадекватность хрустиков, использующих двойную сплошную в качестве полосы и вышивающих между рядами, не добавляет желания присоединиться. А если ездить по правилам, то преимуществ и нет.
                                                                              0
                                                                              >Бесполезен чуть более, чем полностью.
                                                                              Ну для кого как, я на нём в среднем больше чем на машине наезжаю.

                                                                              >Сколько на нём фундаментных блоков можно увезти? А мешки с цементом и 200л бочку?
                                                                              С такими потребностями вам батенька микроавтобус надо, мотоцикл он для другого — по быстрому мотануться тууда-назад.

                                                                              >С парковкой тоже проблемы
                                                                              никогда не испытывал, что бы не укатили есть блокировка руля, ещё бывают замки на тормоза, я на прошлом мотоцикле (у меня ещё Ява была) колесо к раме тросом ещё примыкал (на текущем бесполезно, дури хватит что бы порвать трос).

                                                                              >Опять же погода — начиная с редкого ледяного дождя, заканчивая обычной грязью, когда после всего полсотни километров машина покрывается ощутимым слоем. А здесь им покроется мотоциклист.
                                                                              ну, всё не так плохо, я езжу от снега до снега, при правильной одежде помехой может стать разве что ливень.

                                                                              >Ну и общая неадекватность хрустиков, использующих двойную сплошную в качестве полосы и вышивающих между рядами, не добавляет желания присоединиться. А если ездить по правилам, то преимуществ и нет.
                                                                              Преимуществ хватает на самом деле, надо только попробовать. И не все сводятся к проезд между рядами.
                                                                0
                                                                Очень здорово! А кнопки нажимаемые на магнитоле в шину поступают? У меня такая же Октавия 11 года и магнитола болеро без SD/USB входа. Для прослушивания mp3 я купил Yatour, но он проработав (с перебоями) 2 года умер. Если в шине появляются команды от магнитолы, то можно подключить к AUX китайскую плату проигрывающую mp3 и приделать по CAN шине управление.
                                                                  0

                                                                  Я вот тоже думал в машину влепить и большой экран с камерой заднего вида, но всё это было в основе своей из-за музыки. Музыка решилась девайсом "Xiaomi Roidmi 2S" который просто транслирует музыку с телефона на заданной частоте радио — теперь просто переключается нужная станция и музыка играет из колонок.
                                                                  Необходимость в танцах с бубном/ aux/ usb отпала (а так хотелось).

                                                                    0
                                                                    FM трансмиттер это у меня пройденый этап. Главный минус ловит сигналы с других машин и помехи. Второй минус у октавии не выключается прикуриватель после глушения двигателя, т.е. трасмиттер ещё помоему 20 минут будет сажать аккум распевая пестни. И ещё минус, неудобство управления, промотать песню, поставить на паузу и т.д. удобнее с магнитолы (у меня нет управления на руле) а не тыкаясь в слепую в маленькую коробочку. Или я что-то не знаю про конкретно этот трансмиттер?
                                                                      0

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


                                                                      Данный трансмиттер если не подключён к телефону ничего распевать не будет, так что и сажать аккум не должен.


                                                                      Неудобство управления — это да, но громче/тише/mute работает и с магнитолы.


                                                                      тыкаясь в слепую в маленькую коробочку
                                                                      Btw, это вы про трансмиттер или про телефон? Трансмиттер не имеет никаких контролов, всё управление через медиа-проигрыватель на телефоне. Свайп сверху вниз (например активно приложение навигатора) -> там три кнопки — предыдущий трек, play/stop, следующий трек. Не очень удобно, но в принципе, юзабельно. На радио тоже не особенно треки попереключаешь :) Так что как альтернатива радиостанциям вполне годно.
                                                                        0

                                                                        Изначально засматривался на вот это схему: https://geektimes.ru/post/272210/

                                                                      +1
                                                                      Поступают. Я делал вот так, когда ставил iPad mini в качестве головного устройства
                                                                        0

                                                                        За таблицу с кодами респект, я некоторые устройства не смог вычислить, а у вас в таблице они расшифрованны.

                                                                          0
                                                                          спасибо тебе добрый человек!
                                                                          0
                                                                          Я купил себе AUX bluetooth приемник с кнопками и прилепил к магнитоле. Теперь все медиа со смартфона. Очень удобно получилось.
                                                                          0
                                                                          Готовые шилды CAN-SPI на MCP2515 недорого продаются на ибее
                                                                            0
                                                                            Обе шины связаны через шлюз, который находится в области под рулем, так же к шлюзу подключен диагностический OBD2 разъем, к сожаление через OBD2 разъем нельзя послушать трафик от обеих шин, можно только передать команду и запросить состояние. Я решил, что буду работать только с шиной «Комфорт»

                                                                            Я так понимаю, для реверс-инжиниринга посылок необходимо подключение к шине «Комфорт», а разве процитированный абзац не утверждает, что для последующей выдачи «известных» посылок достаточно подключения к шине диагностики (500К), благодаря наличию шлюза?
                                                                            Это так?
                                                                              0

                                                                              Команды можно отправлять из одной шины в другую, если знаешь адрес. OBD2 разъем, например это отделен от обеих шин шлюзом, но зная команды, через OBD2 можно и двигателем управлять.

                                                                              0
                                                                              Кстати (и грубо говоря), обычно по стандарту CAN чем меньше число в идентификаторе (ID) CAN-сообщения (телеграммы), тем более приоритетно это сообщение в сети.

                                                                              Поэтому чаще всего ID сообщений для управления двигателем, тормозами, ABS, подушками безопасности и пр. будут находиться в «первых двустах»: то есть ID находятся между 0х001 и 0х1FF (очень грубо).
                                                                                0
                                                                                Не просто обычно, в CAN на физическом уровне при коллизии двух пакетов всегда пройдет пакет с меньшим ID (бит 0 в CAN доминантный).
                                                                                +1
                                                                                по поводу реверс инжиниринга КАН сети, я пилю опен сорс фреймворк который упрощает исследование и изучение и если кому интересно потестить или по-пилить вместе, было бы здорово… ну например методы детекта типа данных или стат. отклонения, по ссылке с слайдами уже есть конкретные примеры…

                                                                                https://github.com/eik00d/CANToolz
                                                                                https://www.blackhat.com/docs/eu-16/materials/eu-16-Sintsov-Pen-Testing-Vehicles-With-Cantoolz.pdf (демо и примеры реверс инжиниринга автоматического в конце слайдов)
                                                                                  0

                                                                                  Классный проект, изучу подробно.
                                                                                  Давно уже хочу сделать компактный девайс в обд2 разъем для демонстрации хака тачки. Прикуплюка RPI zero.

                                                                                    0
                                                                                    крутой проект! обязательно присоединюсь!
                                                                                    0
                                                                                    Клево!
                                                                                    Я долго тоже мучался с CAN шиной.
                                                                                    Но мозгов тогда не хватило сделать полную систему.
                                                                                    Я в Infiniti интегрировал Nexus 7, но условие было — полное сохранение штатных кнопок.
                                                                                    У фиников климат управляется кнопками, а отображается на мониторе. Поэтому надо было где-то прочитать климат-инфу, а в той шине, где я искал — не было.
                                                                                    Оказалось, что есть еще третья шина…
                                                                                    но машину уже продал)

                                                                                    Клево! давай еще!
                                                                                      0
                                                                                      Спасибо за статью!
                                                                                      У меня всегда было горячее желание заменить штатное радио (с тачскрином и навигатором) на айпад мини с сохранением функционала (управление музыкой, отображение картинки с задней камеры). Ищу варианты реализации.
                                                                                      Машина правда не VAG, а Ниссан.
                                                                                        0

                                                                                        Я столкнулся с проблемой прослушивания радиостанций и забил.

                                                                                          0

                                                                                          У многих магнитол на android идет в комплекте переходник на CAN шину, а в настройках нужно выбрать к какой машине магнитола подключена, если она сама это не определила по CAN шине.
                                                                                          Для ipad можно сделать связь с CAN шиной по Wi-Fi.


                                                                                          Я давно писал приложение на iphone, которое подключалось к машине по wi-fi, но только к OBD шине, чтобы показывать скорость, обороты, температуры и др. на дисплее, нужно было для замеров ускорения.

                                                                                          0
                                                                                          а что происходит с машиной, если, например, уложить шину? Например, выставив не правильную скорость
                                                                                            0
                                                                                            на моем опыте такого не случилось.
                                                                                            Шина достаточно устойчива к помехам
                                                                                            0
                                                                                            Интересно, а бывают автономные CAN-датчики? Например, датчики давления, температуры или там кнопки?
                                                                                            Типа пойти на разборку, взять отдельно CAN-датчик и потестить. Теоретически, если есть шина — то она вероятно соединяет центральный компьютер с чем-то.
                                                                                              0
                                                                                              ну, например, iDrive от бмв, сам джойстик. Чем-то соответствует автономному
                                                                                                0
                                                                                                Спасибо, поглядел. Да, действительно, CAN-джойстик.
                                                                                              0
                                                                                              Пардон за нубские вопросы, но:
                                                                                              1. Нельзя ли было купить http://www.ebay.com/itm/SPI-MCP2515-EF02037-CAN-BUS-Shield-Controller-communication-speed-high-Arduino-/401090806613?hash=item5d62e00355:g:E7oAAOSwpLNX9bla?
                                                                                              Он как раз на микросхемах MCP2515 и MCP2551.
                                                                                              2. Интересно, а пойдет ли такое добро на Orange Pi PC/PCplus?
                                                                                                +1

                                                                                                Эту плату конечно можно по UART подключить к Raspberry pi, но спаять свою и именно под Raspberry в виде шилда гораздо интереснее.

                                                                                                0
                                                                                                То есть, если несанкционированно подкрутить ту-же малину к CAN шине можно вполне себе приспокойно едущий автомобиль заставить заблокировать двери, закрыть окна, открыть заслонки воздушные на побольше, вырубить подушки, включить например Highway to Hell погромче и весело прибавив газу заставить авто срулить вниз с ближайшего моста. А если учесть, что авто у нас тоже нутром своим в облака стремятся то могут и дыру найти, чтоб без малины. Вот это уже страшно, это не зараженными лампочками в квартирах мигать.
                                                                                                  0

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

                                                                                                  +1
                                                                                                  Как вообще может придти в голову управление автомобилем (голосовое) ставить в зависимость от интернета, от сервиса третьих лиц, которые могут заглючить как специально, так и случайно? Только проверенные оффлайн решения!
                                                                                                    0

                                                                                                    Android auto и Apple carplay не для вас это понятно, ссылки на офлайн решения в студию!

                                                                                                      0
                                                                                                      Сносно работающих оффлайн решений распознавания голоса нет — и это удручает. Видимо, трудности монетизации.
                                                                                                        0

                                                                                                        Это трудности мощностей, для работы сири работает не один датацентр, на одном компьютере достичь сопостовимой скорости и точности распознавания не возможно.

                                                                                                          0
                                                                                                          вот не думаю, что для каждого клиента работает по датацентру. Скорее всего этот датацентр обслуживает миллионы клиентов, и если поделить количество компьютеров в датацентре на количество пользователей siri, то окажется, что производительности одного компьютера достаточно.
                                                                                                            0
                                                                                                            Нет, это значит что клиент не постоянно чатится с Siri. Ему разово доступна большая мощность, чтобы быстро распознать, а потом она отдаётся другим. «У унитаза большой выпуск не для пропускной способности, а для быстрого сброса»(Ц)
                                                                                                    0
                                                                                                    Интересно наверное сделать что-то типа своего противоугонного устройства напримере вот этого
                                                                                                    http://www.kondrashov-lab.ru/avtorskie-resheniya-uchebnik/tekhnologiya-ican/
                                                                                                    Интересен такой момент. Ведь CAN шина защищено от замыкания на корпус и замыкания между собой. Но при этом это жосткая ошибка в системе. Если замкнуть CAN это будет достаточно что бы двигатель заглох? Ну или узнать такие коды ошибок при которых двигатель глохнет.
                                                                                                      0

                                                                                                      Шина комфорта и шина двигателя разделены, поэтому даже если, что то случится закоротит в шине комфорта с двигателем ничего не будет.
                                                                                                      Думаю ничего страшного не будет, если и в шине двигателя все сломать. У двигателя есть прошивка, которая реагирует на информацию от датчиков и соответственно управляет двигателем. Если замкнуть сан шину двигателя, то например, информация от датчика расхода воздуха перестанет поступать, но двигатель не заглохнет, а перейдет в аварийный режим, не будет давать крутить обороты, но ехать можно будет.

                                                                                                      0

                                                                                                      Протестировали хак CAN шины на Nissan Qashqai 2008 года, шина комфорта работает на 500 кбит/с. С тем же самым софтом удалось получить данные со всех систем и всем управлять.

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

                                                                                                      Самое читаемое