1 (2020-11-17 00:02:57 отредактировано nickname3)

Тема: Убираем синий экран при запуске магнитолы через AV CAN

Предлагаю бюджетный вариант (~500р) решения проблемы с синим экраном, который каждый раз надо тыкать при запуске магнитолы. Потребуется изготовить устройство для OBD2 разъема, которое после запуска авто имитирует нажатие одной из кнопок (навигация, радио, статус, TV-AUX и т.д.) через отправку команд в AV CAN шину (да, на лифе есть отдельная CAN шина системы мультимедиа).

Итак нам потребуется:

Собираем по схеме: https://s8.hostingkartinok.com/uploads/thumbs/2020/11/90d1fabbb97e9db5e38c9c06ecb26097.png
Можно добавить внешний стабилизатор питания типа LM7805, движковый переключатель на питание, светодиод для индикации работы...
после сборки прозвоните все контакты на разъеме OBD2! 4 и 5 контакты соединены,  3 и 11 должны иметь сопротивление 120 Ом.
Должно получиться что-то вроде этого:

На видео еще установлен переключатель для подключения к разным CAN шинам лифа.

Заливаем в ардуинку скетч, который нажимает кнопку TV-AUX:

#include <SPI.h>                      //connect libraries
#include <mcp2515.h>
#include <GyverPower.h>

struct can_frame canMsg1;
struct can_frame canMsg2;
struct can_frame canMsg3;
MCP2515 mcp2515(10);

void setup() {

  canMsg1.can_id  = 0x681;            //write commands to send here...
  canMsg1.can_dlc = 8;
  canMsg1.data[0] = 0x04;
  canMsg1.data[1] = 0x10;
  canMsg1.data[2] = 0x40;
  canMsg1.data[3] = 0x0D;
  canMsg1.data[4] = 0xAB;
  canMsg1.data[5] = 0xFF;
  canMsg1.data[6] = 0xFF;
  canMsg1.data[7] = 0xFF;

  canMsg2.can_id  = 0x681;
  canMsg2.can_dlc = 8;
  canMsg2.data[0] = 0x04;
  canMsg2.data[1] = 0x20;
  canMsg2.data[2] = 0x40;
  canMsg2.data[3] = 0x0D;
  canMsg2.data[4] = 0xAB;
  canMsg2.data[5] = 0xFF;
  canMsg2.data[6] = 0xFF;
  canMsg2.data[7] = 0xFF;

  canMsg3.can_id  = 0x681;
  canMsg3.can_dlc = 8;
  canMsg3.data[0] = 0x04;
  canMsg3.data[1] = 0x30;
  canMsg3.data[2] = 0x40;
  canMsg3.data[3] = 0x0D;
  canMsg3.data[4] = 0xAB;
  canMsg3.data[5] = 0xFF;
  canMsg3.data[6] = 0xFF;
  canMsg3.data[7] = 0xFF;

  while (!Serial);
  Serial.begin(115200);
  SPI.begin();
  mcp2515.reset();
  mcp2515.setBitrate (CAN_500KBPS, MCP_8MHZ);    //check your quartz on mcp2515
  mcp2515.setNormalMode();
  Serial.println("Killing blue screen...");
}

void loop() {
  delay(8000);                                   //delay for starting vehicle 8s
  mcp2515.sendMessage(&canMsg1);
  Serial.println("Message 1 sent");
  delay(100);
  mcp2515.sendMessage(&canMsg2);
  Serial.println("Message 2 sent");
  delay(100);
  mcp2515.sendMessage(&canMsg3);
  Serial.println("Message 3 sent");
  delay(100);
  Serial.println("Blue screen was killed!");

  mcp2515.reset();
  power.sleep(SLEEP_FOREVER);                   //deep sleep
}

Пример работы готового устройства:


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

База данных известных CAN пакетов Nissan Leaf тут https://github.com/dalathegreat/leaf_can_bus_messages Для открытия фалов *.dbc необходимо установить программу Kvaser Database Editor. Так же по этой ссылке есть файл xls, но не уверен, что там актуальная инфа.

UPD1 Немного подправил схему. Джампер J1 на MCP2515 должен стоять. Добавляю архив с прошивкой, схемой и командами других кнопок ГУ. https://yadi.sk/d/o8aNpRvHWk3lpw

AZE0 G 2013г.
Спасибо сказали: LKA, janeg61, vikt, Alex88, sftk, kovax6

2

Re: Убираем синий экран при запуске магнитолы через AV CAN

nickname3⇓ пишет:

Это же устройство, но с другой прошивкой можно использовать и для отслеживания CAN шины и поиска нужных пакетов

Может ты свою энергию потратишь на создание адекватной CAN обманки по коррекции пробега для двухбатареечников? Считаю, что эта тема будет более актуальной. На сегодня есть попытки таких девайсов, но у бюджетных там всего-лишь умножение GIDS на коэффициент... И не плохо-бы указать, откуда ты, мил человек...

Лиф Амер АЗЕ0 SL 13г COX 84%, доп ВВБ 41 кВт час.
Спасибо сказали: chip12, Ernesto2

3

Re: Убираем синий экран при запуске магнитолы через AV CAN

janeg61 пишет:
nickname3⇓ пишет:

Это же устройство, но с другой прошивкой можно использовать и для отслеживания CAN шины и поиска нужных пакетов

Может ты свою энергию потратишь на создание адекватной CAN обманки по коррекции пробега для двухбатареечников? Считаю, что эта тема будет более актуальной. На сегодня есть попытки таких девайсов, но у бюджетных там всего-лишь умножение GIDS на коэффициент... И не плохо-бы указать, откуда ты, мил человек...

Давайте каждый сам будет решать, на что ему тратить свою энергию? Если тема про вторую батарею Вам кажется более актуальной - предлагаю обратиться в соответствующий раздел форума. Данная ветка посвящена мультимедиа...
И да, я наверно пропустил момент, когда мы с Вами перешли на ТЫ.

AZE0 G 2013г.

4

Re: Убираем синий экран при запуске магнитолы через AV CAN

nickname3, Отличная работа. Обязательно повторю девайс.
Просьба. Скетч, схему, базу данных известных CAN пакетов собрать в одной папке и выложить на форуме, на Ядиске или ещё где-нибудь.

AZE0-2012.G_24kW
Спасибо сказали: nickname31

5

Re: Убираем синий экран при запуске магнитолы через AV CAN

Alex88 пишет:

nickname3, Отличная работа. Обязательно повторю девайс.
Просьба. Скетч, схему, базу данных известных CAN пакетов собрать в одной папке и выложить на форуме, на Ядиске или ещё где-нибудь.

Спасибо  ab
Выложил что Вы просили. Ссылка в конце первого поста.

AZE0 G 2013г.
Спасибо сказали: edtwo, LKA, Alex88, Alex0464

6

Re: Убираем синий экран при запуске магнитолы через AV CAN

nickname3 пишет:

Спасибо  ab
Выложил что Вы просили. Ссылка в конце первого поста.

интересно , arduino с этой схемой потянет  перехват пакетов CAN , например от нажатия кнопки брелка ,
ну и отправку в шину команды на включение климата  ab

7

Re: Убираем синий экран при запуске магнитолы через AV CAN

edtwo, Ну пакеты основной шины она без проблем принимает. Я заметил, что шина молчит при выключенной машине и просыпается при нажатии педали тормоза. Сейчас попробую будет ли реакция на брелок...

AZE0 G 2013г.

8

Re: Убираем синий экран при запуске магнитолы через AV CAN

edtwo, смутно припоминаю, что у кан-модулей есть возможность включать фильтры, тогда он принимает только нужные пакеты и не принимает не нужные, в таком режиме атмеге должно хватить соплей на обработку

Листок-самолет LEAF ZE0 G 2011

9

Re: Убираем синий экран при запуске магнитолы через AV CAN

В общем на брелок реакция есть, сообщения летят.
Как я понимаю, при выключенном зажигании климат может включиться только по таймеру (если есть еще способы - поделитесь).
Пришлось поторчать в машине, чтоб записать трейс при срабатывании таймера)
Пытался этот трейс воспроизводить в шину. Машина 2 раза пикает, щелкают реле, но климат не запускается.  bn
Либо перед запуском происходит сверка с расписанием, либо действительно при записи трейса были пропущены важные сообщения. У ардуинки действительно соплей впритык для работы на 500 kbs и она может пропускать сообщения. Если знать на что поставить фильтр...
Я еще попробую считать другим протоколом. Может не будет пропусков. Ну и есть вариант считать трейс и отыскать нужные сообщения проф. оборудованием, а уже зная конкретные команды - написать скетч для ардуинки.

AZE0 G 2013г.

10

Re: Убираем синий экран при запуске магнитолы через AV CAN

nickname3⇓ пишет:

при выключенном зажигании климат может включиться только по таймеру (если есть еще способы - поделитесь).

еще от TCU, но так как японские модемы у нас не работают, отснифать пакеты можно только на америкосах, или поискать уже отснифанные в базе у dala

Листок-самолет LEAF ZE0 G 2011

11

Re: Убираем синий экран при запуске магнитолы через AV CAN

LKA пишет:
nickname3⇓ пишет:

при выключенном зажигании климат может включиться только по таймеру (если есть еще способы - поделитесь).

еще от TCU, но так как японские модемы у нас не работают, отснифать пакеты можно только на америкосах, или поискать уже отснифанные в базе у dala

Я в своих логах нашел сообщения с ID 54A и 54B, по базе Dala https://github.com/dalathegreat/leaf_can_bus_messages они и отвечают за климат. Но отправка этих сообщений ничего не дает.

Вот первые строки моего трейса:

21:10:06.918 -> 605 1 0 
21:10:06.953 -> 50A 8 5 22 34 E 6 61 4 0 
21:10:06.988 -> 180 8 0 0 0 0 0 0 26 0 
21:10:06.988 -> 174 8 0 0 0 AA 6 0 0 0 
21:10:06.988 -> 1D5 5 0 0 0 2 D8 
21:10:06.988 -> 176 7 0 0 0 0 0 0 6 
21:10:06.988 -> 54A 8 12 80 70 2 0 0 0 2D 
21:10:06.988 -> 54B 8 11 A 80 12 4 0 0 0 
21:10:06.988 -> 180 8 0 0 0 0 0 0 27 0 
21:10:06.988 -> 174 8 0 0 0 AA 7 0 0 0 
21:10:06.988 -> 260 4 C8 C8 7D 0 
21:10:06.988 -> 176 7 0 0 0 0 0 0 7 
21:10:06.988 -> 180 8 0 0 0 0 0 0 28 0 
21:10:06.988 -> 174 8 0 0 0 AA 8 0 0 0 
21:10:06.988 -> 1D5 5 0 0 0 0 D6 
21:10:06.988 -> 176 7 0 0 0 0 0 0 8 
21:10:06.988 -> 35D 8 0 3 0 0 0 0 0 0 
21:10:07.023 -> 180 8 0 0 0 0 0 0 29 0 
21:10:07.023 -> 174 8 0 0 0 AA 9 0 0 0 
21:10:07.023 -> 421 3 8 0 0 

Если посмотреть на время, то видно, что сообщения то летят в один момент, то появляется пауза в 35 мс. Видимо нужное сообщение пропущено...

AZE0 G 2013г.

12 (2020-11-18 20:46:20 отредактировано Noal1)

Re: Убираем синий экран при запуске магнитолы через AV CAN

На гитхабе можно исходники OVMS посмотреть, оно умеет лифом командовать
vehicle_nissanleaf.cpp

Ну и там есть ,говорят, какой-то прикол, что если TCU не отключить от can шины, то тоже ниче не работает, так как этот TCU обратно все выключать будет..

Левый ZE0
Спасибо сказали: LKA1

13

Re: Убираем синий экран при запуске магнитолы через AV CAN

похоже и правда есть, но сырец для меня сложноват, похоже вот нужные данные, может потом как-нить руки дойдут покавыряться

bool fan_only = (d[1] == 0x48 && fanspeed_int != 0);
      m_climate_fan_only->SetValue(fan_only);

      switch (d[2])
      {
      case 0x80:
        m_climate_vent->SetValue("off");
        break;
      case 0x88:
        m_climate_vent->SetValue("face");
        break;
      case 0x90:
        m_climate_vent->SetValue("face|feet");
        break;
      case 0x98:
        m_climate_vent->SetValue("feet");
        break;
      case 0xA0:
        m_climate_vent->SetValue("windscreen|feet");
        break;
      case 0xA8:
        m_climate_vent->SetValue("windscreen");
        break;

switch (d[3])
      {
      case 0x09:
        m_climate_intake->SetValue("recirc");
        break;
      case 0x12:
        m_climate_intake->SetValue("fresh");
        break;
      case 0x92:
        m_climate_intake->SetValue("defrost");
        break;

      m_climate_remoteheat->SetValue(d[1] == 0x4b);
      m_climate_remotecool->SetValue(d[1] == 0x71);

hvac_calculated =
          d[1] == 0x0a || // Gen 1 Remote
          d[1] == 0x48 || // Manual Heating or Fan Only
          d[1] == 0x4b || // Gen 2 Remote Heating
          d[1] == 0x71 || // Gen 2 Remote Cooling
          d[1] == 0x76 || // Auto
          d[1] == 0x78;   // Manual A/C on

      // More accurate climate control values for hvac, heating, cooling for 2013+ model year cars.
      {

        bool cooling = d[1] == 0x78 || /* cool only */
                       d[1] == 0x79 || /* cool + heat */
                       d[1] == 0x76;   /* cool + auto */

        // d[1] == 0x47 : heat + auto
        // d[1] == 0x49 : heat only
        // d[1] == 0x79 : heat + cool

        bool heating = (d[1] & 0x01);

Листок-самолет LEAF ZE0 G 2011

14 (2020-11-24 12:01:09 отредактировано Noal1)

Re: Убираем синий экран при запуске магнитолы через AV CAN

LKA пишет:

похоже вот нужные данные, может потом как-нить руки дойдут покавыряться
bool fan_only = (d[1] == 0x48 && fanspeed_int != 0);

Это место похоже на сбор данных для отображения текущего состояния(обратная связь), не команда


Ну раз такое дело, вот еще ссылочка
https://www.mynissanleaf.com/viewtopic. … 41#p490333

Тут и готовый рецепт предлагается (даже без отключения tcu), правда это азео
« After much testing I found that it usually works to send the 0x56E messages more often than the TCU, and send them for longer than the TCU would when it starts the Climate control. I settled on sending the bus wake-up (0x68C 00) , followed 50 ms later by 0x56E 4E 08 12 00 to turn on Climate Control, then delaying another 20 ms and repeating this Climate Control command another 45 times at 60 ms intervals.»


На зео все проще вероятно, но надо релюшку присобачить для сигнала активации.
Тоже хочу сделать дистанционное включение климата и зарядки, но тоже руки не доходят, а пока сидишь на работе  можно только теорию изучать..
Но tcu уже с машины снял.

Левый ZE0

15 (2020-11-24 12:12:09 отредактировано Ernesto)

Re: Убираем синий экран при запуске магнитолы через AV CAN

У меня прошивка от ксанави, там кнопка сама нажимается без приблуд

AZE0 2013 G bose
Владение русской орфографией - это как владение кунг-фу: настоящие мастера не применяют его без необходимости...

16

Re: Убираем синий экран при запуске магнитолы через AV CAN

Noal1⇓ пишет:

Но tcu уже с машины снял.

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

Листок-самолет LEAF ZE0 G 2011

17 (2020-11-25 00:39:03 отредактировано Noal1)

Re: Убираем синий экран при запуске магнитолы через AV CAN

LKA пишет:
Noal1⇓ пишет:

Но tcu уже с машины снял.

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

Хз, не вскрывал. Открыл только крышечку с симкартой. Вставлена какаято без опознавательных знаков.

Но даже если поставить модем, на ниссановском сервисе нас с нашими симками все равно никогда не зарегистрируют и пользоваться не дадут. Или в чем идея менять модем? Я не уверен.
По-моему проще сделать свое колхозное tcu из ардуин

Зы

Но это американский tcu, не епонский

Левый ZE0

18

Re: Убираем синий экран при запуске магнитолы через AV CAN

Ernesto пишет:

У меня прошивка от ксанави, там кнопка сама нажимается без приблуд

Можно поподробнее? Что за кнопка и когда нажимается

Езжу на зе1 и серена e-power

19

Re: Убираем синий экран при запуске магнитолы через AV CAN

Вот кто бы сделал дистанционное включение климата на зе1 через телефон, я бы купил готовое устройство

Езжу на зе1 и серена e-power

20

Re: Убираем синий экран при запуске магнитолы через AV CAN

http://mynissanleaf.ru/viewtopic.php?id=966

Листок-самолет LEAF ZE0 G 2011

21

Re: Убираем синий экран при запуске магнитолы через AV CAN

mexanik пишет:
Ernesto пишет:

У меня прошивка от ксанави, там кнопка сама нажимается без приблуд

Можно поподробнее? Что за кнопка и когда нажимается

Тут имеется в виду, что в последних своих прошивках Ксанави убрал этот долбаный экран)

AZE0 G 2013г.

22

Re: Убираем синий экран при запуске магнитолы через AV CAN

У меня есть прилада для запуска климата дистанционно с мобилы.
Устанавливается в ОБД разъём. И почему то пока не отключишь разъём с TCU, эта прилада не работает.
AZE0 конец 2012 года. На более свежих годах вроде отключать TCU не требуется.
У меня такое ощущение, что эта прилада сначала подаёт пакет данных, как будто идёт зарядка авто, а уже потом пакет данных на включение климата.

AZE0-2012.G_24kW

23

Re: Убираем синий экран при запуске магнитолы через AV CAN

Alex88 пишет:

У меня есть прилада для запуска климата дистанционно с мобилы.
Устанавливается в ОБД разъём. И почему то пока не отключишь разъём с TCU, эта прилада не работает.
AZE0 конец 2012 года. На более свежих годах вроде отключать TCU не требуется.
У меня такое ощущение, что эта прилада сначала подаёт пакет данных, как будто идёт зарядка авто, а уже потом пакет данных на включение климата.

отключать надо на всех - TCU рубит пакеты на климат - не санкционированное вмешательство типа...

Nissan Leaf AZE0 X 2014, BMW 116i

24

Re: Убираем синий экран при запуске магнитолы через AV CAN

nickname3, Тема конечно интересная. По сути вашим устройством можно не только синий экран в магнитоле убирать, но и многое другое.
На просторах интернета уже много умельцев которые смогли узнать нужные пакеты CAN шины и делают на этом деньги.
Было бы не плохо пустить это в массы. К тому же CAN хакер уже есть в свободной продаже и за адекватные деньги.

AZE0-2012.G_24kW