PDA

Просмотр полной версии : Arduino+CANBUS Shield


Страницы : [1] 2

Disgraced
20.06.2015, 22:36
Помогите разобраться.
Имеется автомобиль семейства Mazda.

Имеется Ардуино Про Микро (https://duino.ru/arduino-pro-micro.html) и CAN-BUS Shield (https://duino.ru/CAN-BUS-Shield.html).

Между собой соединял согласно даташита про микры и MCP2515 (прозванивал ноги).

CAN-BUS Shield -> Ардуино
MOSI -> MOSI
MISO -> MISO
SCK -> SCK
CS -> к пину 10 ардуины
INT -> к пину 2 ардуины
GND -> GND

К одной из колодок содержащей CAN_H и CAN_L контакты подключился воткнув в колодку пару иголок, получившееся соединение прозвонил - контакт есть. Данные по шине в месте подключения передаются - инфа 100%.

Согласно найденной информации шина в мазде работает на скорости 500 kbps.
Пробовал залить example receive скетч идущий с CANBUS либой.
Эффект нулевой - в мониторе порта вообще ничего.
Судя по внешнему виду шилда - терминирующего резистора на нём нет, но для эксперимента выпаял резистор R2 - не помогло.
Что я делаю не так, и что мне надо сделать, чтобы стало как надо. Вопрос стоит не в расшифровке сообщений идущих по can, а в их простом получении, для начала.

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

Farman
21.06.2015, 19:57
GND c массой на машине подключаете?

Disgraced
22.06.2015, 11:09
GND c массой на машине подключаете?

Нет, а надо? Если да, то мне непонятен принцип подключения - в авто сеть 12V, а ардуина с шилдом питаются от 5V с усб. Да и куда подключать - на ардуине только CAN_H и CAN_L.

В соседней теме у людей не работают параллельно подключенные к колодке OBD устройства - может причина в этом? Хотя у меня подключение скорее последовательное.

Lehas
22.06.2015, 11:45
Нет, а надо? Если да, то мне непонятен принцип подключения - в авто сеть 12V, а ардуина с шилдом питаются от 5V с усб. Да и куда подключать - на ардуине только CAN_H и CAN_L.

В соседней теме у людей не работают параллельно подключенные к колодке OBD устройства - может причина в этом? Хотя у меня подключение скорее последовательное.

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

Disgraced
23.06.2015, 13:20
массу можно к корпусу разъема подключить.
В can шине не бывает последовательного подключения.

да, с последовательным соединением тупанул, но земля нафиг не нужна.
у шилда своя земля, у авто своя.
проблема не в этом. может быть всё таки в параллельном соединении? хотя если все системы в авто итак параллельно висят, то добавление шилда ничего не должно менять.

Lehas
23.06.2015, 14:34
а масса шилда, ардуины и компа как нибудь с массой машиной соединены? шилд начинает принимать данные если подключена масса и can_h, на шилде начинает мигать светодиод.

lti1
23.06.2015, 16:33
Масса не обязательна. У меня на Octavia Tour и на FF3 без массы всё отлично принимает и отправляет.

Lehas
23.06.2015, 16:51
Масса не обязательна. У меня на Octavia Tour и на FF3 без массы всё отлично принимает и отправляет.

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

Disgraced
23.06.2015, 17:08
по одному проводу в любом случае работать не будет. либо обе кан, либо кан-х и масса

Ну так у меня и подключены оба can.
На шилде очень быстро моргает светодиод RX, почти непрерывно, и немного реже моргает светодиод TX - значит шилда чтото принимает. И либо не передаёт на ардуину, либо делает это неправильно.
Или ошибка в соединении ардуино-шилд или загвоздка в скетче.
Попробовал ради эксперимента в скетче разные скорости шины указывать - результата нет.
В мониторе порта вообще ничего не отображается. Если скорость неправильная так и должно быть? Или должен быть поток ничего не значащих цифр?

Disgraced
24.06.2015, 14:12
Итак, шина работает на скорости 500kbps - это 100%.
Прозвонил все контакты на моём безымянном шилде и на ардуине - подключены они между собой верно - 99%
Залил скетч с вот таким содержанием:
if(CAN_OK == CAN.begin(CAN_500KBPS)) // init can bus : baudrate = 500k
{
Serial.println("CAN BUS Shield init ok!");
}
else
{
Serial.println("CAN BUS Shield init fail");
Serial.println("Init CAN BUS Shield again");
delay(1000);
}
В мониторе порта увидел ответ CAN BUS Shield init ok!
Значит дело в скетче для приёма сообщений с can шины.
Нашел вот такую информацию:
Аппаратные фильтры настраивают получение драйвером только сообщений с определенными ID, вплоть до отключения приема сообщений. В вашей бибилиотеке это функции :

1
INT8U init_Mask(const INT8U num,const INT32U ulData); /* init Masks */
2
INT8U init_Filt(const INT8U num,const INT8U ext,const INT32U ulData); /* init filters */
Масок всего две.

Фильтров шесть, причем при определенных обстоятельствах первые два фильтра взаимодействуют с первой маской, остальные 4 со второй. Попробуйте проинициализировать фильтры так :
кодрасечатать?
1
CAN.init_Mask(0, 0); // разрешить маскам получать обычные сообщения
2
CAN.init_Filt(0, 0, 0); // разрешить фильтрам получать обычные сообщения
3
CAN.init_Mask(1, 0); // разрешить маскам получать расширенные сообщения
4
CAN.init_Filt(1, 1, 0); // разрешить маскам получать расширенные сообщения

Немного не отдупляю, как проинициализировать фильтры.

Gorynch
24.06.2015, 14:58
покажи весь скетч и либу для шилда
При передачи данных шилду (по SPI) нет аппаратного подтверждения принятых данных, поэтому нужно проверять программно, например, прочитать один из регистров cnf и сравнить с тем, что туда было записано. Если совпадает, значит соединение прошло успешно. Не во всех либах это сделано.
Ещё момент, у тебя перемычка J1 (рядом с контактом Тх) открыта, а это значит, что питание для платы 3.3В, а не 5В. По крайней мере, для настоящего Pro Micro. Проверь напряжение на Vcc.
И чем питается шилд?
Судя по фотке, кварц на шилде 8Мгц, это влияет на значения регистров CNF, с помощью которых устанавливается скорость CAN шины в шилде. Чаще всего используется 16МГц, поэтому в либе значения могут быть рассчитаны для 16, а не для 8

Disgraced
24.06.2015, 16:17
Gorynch
либа отсюда https://github.com/Seeed-Studio/CAN_BUS_Shield
напряжение на vcc 4.64 - на китайских про микро перемычка открыта
как я понимаю, шилд питается от ардуины, которая в свою очередь от usb порта ноутбука
шилд соединял с ардуиной по инструкции от iti1 у которого всё работает (правда с другим шилдом)
скетчи пробовал разные вот один и зних:
// demo: CAN-BUS Shield, receive data with check mode
// send data coming to fast, such as less than 10ms, you can use this way
// loovee, 2014-6-13


#include <SPI.h>
#include "mcp_can.h"


// the cs pin of the version after v1.1 is default to D9
// v0.9b and v1.0 is default D10
const int SPI_CS_PIN = 10;

MCP_CAN CAN(SPI_CS_PIN); // Set CS pin

void setup()
{
Serial.begin(9600);

START_INIT:

if(CAN_OK == CAN.begin(CAN_500KBPS)) // init can bus : baudrate = 500k
{
Serial.println("CAN BUS Shield init ok!");
}
else
{
Serial.println("CAN BUS Shield init fail");
Serial.println("Init CAN BUS Shield again");
delay(100);
goto START_INIT;
}
}


void loop()
{
unsigned char len = 0;
unsigned char buf[8];

if(CAN_MSGAVAIL == CAN.checkReceive()) // check if data coming
{
CAN.readMsgBuf(&len, buf); // read data, len: data length, buf: data buf

unsigned char canId = CAN.getCanId();

Serial.println("-----------------------------");
Serial.println("get data from ID: ");
Serial.println(canId);

for(int i = 0; i<len; i++) // print the data
{
Serial.print(buf[i]);
Serial.print("\t");
}
Serial.println();
}
}

/************************************************** ************************************************** *****
END FILE
************************************************** ************************************************** *****/
то что в предыдущем посте я писал - фигня


по факту, на данный момент - шилда/ардуино подключены к проводке авто и как только на них поступает питание - шилда начинает безостановки что-то принимать (светодиод rx мерцает, почти непрерывно светится) но ардуино нихрена не получает от шилды - даже сообщение из START_INIT (не появляется в мониторе порта ни при каких условиях, и на ардуине светодиод rx не моргает вообще)

Gorynch
24.06.2015, 16:56
ПрОвода питания от ардуины к шилду на картинке нет. Есть земля и данные
В данном скетче для проверки наличия нового сообщения идёт обращения к шилду через SPI, по идее для этого нужно использовать прерывание от шилда по пину 2 (в твоём случае), это будет быстрее
Увеличь скорость rs232 до 115200 (и в скетче, и на компе)
Добавь обработку прихода данных от компа: пришла "1" (т.е. ты в терминале нажал 1 и Enter) - инициализировать шилд, пришла "2" - запустить приём данных от шилда
Светодиод rx на ардуине связан с rs232, а не с шилдом. Когда пойдут данные должен моргать Tx
Самое главное - в скетче значения регистров CNF рассчитаны для 16МГц. Нужно пересчитывать (http://www.intrepidcs.com/support/mbtime.htm) для 8, или менять кварц

lti1
24.06.2015, 17:22
Disgraced, попробуйте этот скетч, я им сканировал FF3, только скорость CAN поменяйте:#include <mcp_can.h>
#include <SPI.h>

long unsigned int rxId;
unsigned char len = 0;
unsigned char rxBuf[8];

MCP_CAN CAN0(10);

void setup()
{
Serial.begin(115200);
CAN0.begin(CAN_125KBPS);
pinMode(2, INPUT);
}

void loop()
{
if(!digitalRead(2))
{
CAN0.readMsgBuf(&len, rxBuf);
rxId = CAN0.getCanId();
// if (rxId == 0x3A) //фильтр по ID, при необходимости раскомментировать
// { //фильтр по ID, при необходимости раскомментировать
Serial.println();
Serial.print("ID: ");
Serial.print(rxId, HEX);
Serial.print(" Data: ");
for(int i = 0; i<len; i++)
{
if(rxBuf[i] < 0x10) Serial.print("0");
Serial.print(rxBuf[i], HEX);
Serial.print(" ");
}
// } //фильтр по ID, при необходимости раскомментировать
}
}
И питания шилда действительно на фото нет. Соедините +5v шилда и микро.

Disgraced
25.06.2015, 15:44
Итак, по порядку: соединил разъем шилда 5V и разъем VCC ардуины - никакого эффекта.
Скетч в посте от lti1 не дал результата, в мониторе порта по прежнему тишина.

Gorynch, по вашей подсказке поменял кварц - впаял на 16mhz.
Что получилось - скетч из моего поста, шилда запитана, кварц на 16mhz - в мониторе порта поток сообщений:
CAN BUS Shield init fail
Init CAN BUS Shield again
А вот что это может значить - не пойму.
Т.е. до этого не было никаких сообщений, а теперь сообщает что всё плохо.
По поводу

Добавь обработку прихода данных от компа: пришла "1" (т.е. ты в терминале нажал 1 и Enter) - инициализировать шилд, пришла "2" - запустить приём данных от шилда
можете помочь со скетчем?

Gorynch
25.06.2015, 16:38
в ардуино не силён, но что-то вроде

void loop() {
if (Serial.available() > 0) {
incomingByte = Serial.read();
if (incomingByte == 1) {
do somthing ....
}
if (incomingByte == 2) {
do somthing else ....
}
}
}

можно использовать switch, но синтаксиса не знаю для ардуины

в либе на mcp2515 добавь своих отладочных сообщений в терминал, чтобы понять где именно затык

T_r_D
03.07.2015, 19:15
У меня таже проблема!
На шилде светодиод RX аж светится, а на Arduino данные не идут.
Кварц тоже кстати 8MhZ.

Gorynch Спасибо что направил в нужную сторону!

Такс, Выдернул отсюда https://github.com/Flori1989/MCP2515_lib
с поддержкой 8MhZ.

Теперь вопрос как установить 8MhZ в скетче.
Вот так нужно? Или она сама определит?
if(CAN_OK == CAN.begin(CAN_500KBPS,MCP_8MHz))

Вот так данные пошли

// demo: CAN-BUS Shield, receive data with interrupt mode
// when in interrupt mode, the data coming can't be too fast, must >20ms, or else you can use check mode
// loovee, 2014-6-13

#include <SPI.h>
#include "mcp_can.h"

// the cs pin of the version after v1.1 is default to D9
// v0.9b and v1.0 is default D10
const int SPI_CS_PIN = 10;

MCP_CAN CAN(SPI_CS_PIN); // Set CS pin


unsigned char flagRecv = 0;
unsigned char len = 0;
unsigned char buf[8];
char str[20];

void setup()
{
Serial.begin(115200);
START_INIT:

if(CAN_OK == CAN.begin(CAN_500KBPS,MCP_8MHz)) // init can bus : baudrate = 500k
{
Serial.println("CAN BUS Shield init ok!");
}
else
{
Serial.println("CAN BUS Shield init fail");
Serial.println("Init CAN BUS Shield again");
delay(100);
goto START_INIT;
}

attachInterrupt(0, MCP2515_ISR, FALLING); // start interrupt
}

void MCP2515_ISR()
{
flagRecv = 1;
}

void loop()
{
if(flagRecv)
{ // check if get data

flagRecv = 0; // clear flag

// iterate over all pending messages
// If either the bus is saturated or the MCU is busy,
// both RX buffers may be in use and reading a single
// message does not clear the IRQ conditon.
while (CAN_MSGAVAIL == CAN.checkReceive())
{
// read data, len: data length, buf: data buf
CAN.readMsgBuf(&len, buf);

// print the data
for(int i = 0; i<len; i++)
{
Serial.print(buf[i]);Serial.print("\t");
}
Serial.println();
}
}
}


А теперь ответте мне кто нить на вопрос!
На диагностической колодке CAN-Comfort нету чтоль?
Я невижу нажатий кнопок на руле в упор!

Disgraced
04.07.2015, 17:47
T_r_D, скетч который ты выложил - у тебя работает? у тебя кварц 8MHz? А шилд, как у меня на фото?


На диагностической колодке CAN-Comfort нету чтоль?
Я невижу нажатий кнопок на руле в упор!

Комфорт если и выведен в диагностическую колодку, то на другие контакты. Проще к контактам идущим на магнитолу подцепить для проверки.

T_r_D
04.07.2015, 23:04
Disgraced у меня шилд с кнопками вообще.
Но это не важно! Кварц у меня 8мегагерц так что качай по ссылке библиотеку и заливай мой скетч.
И да, у меня после этого заработало, но только я увидел то что мне не нужно :)

На магнитоле FT CAN так что надо шилд допилить. Микруху уже заказал, через пару недель приедет.

Disgraced
05.07.2015, 12:58
Disgraced у меня шилд с кнопками вообще.
Но это не важно! Кварц у меня 8мегагерц так что качай по ссылке библиотеку и заливай мой скетч.


Не помогло. В отличии от предыдущих скетчей - в этот раз постоянно горел светодиод INT на шилде, помимо рх тх, но в мониторе порта пустота.
Я уже в отчаянии.

(vS)
05.07.2015, 14:42
я знаю с кем тебе поговорить https://www.drive2.ru/b/1567416/
))

T_r_D
05.07.2015, 22:03
Disgraced
5V========5V
GND======GND
D3========D3 (INT)
D9========D9
D10=======PMW10
D11=======PMW11
D12=======12
D13=======13

Так подключи!
И кварц 8МгЦ верни на место.

А шилд у тебя такой же как и у меня.

Отпиши результат.

У тя походу каких-то соединений не хватает.
Чем так мучится купил бы уже UNO :) Не так дорого это стоит.

Disgraced
19.07.2015, 14:47
Disgraced
5V========5V
GND======GND
D3========D3 (INT)
D9========D9
D10=======PMW10
D11=======PMW11
D12=======12
D13=======13

Так подключи!
И кварц 8МгЦ верни на место.

А шилд у тебя такой же как и у меня.

Отпиши результат.

У тя походу каких-то соединений не хватает.
Чем так мучится купил бы уже UNO :) Не так дорого это стоит.

У тебя в списке одно из соединений по мойму лишнее. Вообще, как я понял, для соединения шилды и арудины нужно соединить питание (VCC), землю(GND), SPI интерфейс(MISO, MOSI, SCK, CS) и один цифровой контакт(D10). Еще INT. D9 используется вместо D10 на более свежих версиях шилдов для Leonardo.
Но в любос случае пока никаких результатов.
УНО бы купил, если бы мог быть уверен, что это поможет.
В конечном итоге, я бы хотел получить готовое устройство на одной плате - т.е. микрухи от шилда и ардуины спаяные вместе, без лишних компонентов и контактов.

Bersenev
19.07.2015, 15:36
В конечном итоге, я бы хотел получить готовое устройство на одной плате - т.е. микрухи от шилда и ардуины спаяные вместе, без лишних компонентов и контактов.

Типа такого? Читал с помощью него легковые Opel, Volkswagen, Hyundai, Ford, Mercedes, грузовики MAN, Isuzu, Volvo, FREIGHTLINER, трактора John Deere и ещё много чего, всё уже и не припомню


http://content.foto.my.mail.ru/mail/bersenev_s/Chameleon/i-618.jpg

http://content.foto.my.mail.ru/mail/bersenev_s/Chameleon/i-619.jpg

Disgraced
01.08.2015, 23:50
Достал Ардуино Уно (https://duino.ru/arduino-uno-ch340g.html), испробовал кучу разных библиотек, результат нулевой.
По прежнему не хочет инициализировать шину.
Похоже проблема в шилде.
Bersenev не могли бы вы дать схему по которой собирали свою щилду?

xmetal
02.08.2015, 01:47
ПрОвода питания от ардуины к шилду на картинке нет. Есть земля и данные У меня была такая ситуация. В результате погорела нога MISO у Ардуино, а также mcp2515 похоже тоже, так как с другой ардуиной она уже не работала. С другим кан модулем все нормально стало. Disgraced, попробуй проверить SPI ноги у твоей Про Мини.

olegik_ah
05.08.2015, 05:17
Достал Ардуино Уно, испробовал кучу разных библиотек, результат нулевой.
По прежнему не хочет инициализировать шину.
Похоже проблема в шилде.
Bersenev не могли бы вы дать схему по которой собирали свою щилду?

Привет!
Тоже вмешаюсь в разговор. Не так давно мутил проектик для своей ауди. Тоже весь мозг сломал по поводу can сниффилки. Купил шилд и ардуину - не мог подружить. Что только не делал. И кварц менял и трансивер... После 2 недель пыток пришла мысль о том, что шилд мертв. Шилд, кстати, был такой-же, как у тебя... Покупал я его в России. Было безумно жалко денег на новый шилд. Порылся на алиекспрессе и нашел дешманские варики. И купил сразу по 5 штук:)
Ардуина нано http://ru.aliexpress.com/item/Nano-3-0-free-USB-Cable-Free-Shipping-Dropshipping/659109175.html 151руб штучка
CAN шилд http://ru.aliexpress.com/item/5pcs-lot-MCP2515-CAN-Bus-Module-TJA1050-receiver-SPI-For-51-MCU-ARM-controller-Free-shipping/32259606078.html 200рублей штучка.

С этим всем заработало почти сразу... Вот мои комменты:
0. Если ни с какими либами шилд не хочет инициализироваться - либо мертв шилд, либо не корректное подключение...
1. Перед включением еще раз проверяем провода. В моем случае ардуина питалась от USB, а шилд от ардуины. Соединяем MOSI, MISO, SCK, +5 и землю. Любой не задействованный DigitalPin в качестве CS для модуля (его же и в скетче указываем). INT по началу можно вообще не использовать.
2. Для общения с машиной нужно только 2 провода CanH и CanL. Общая земля с машиной не нужна. Скорее всего от общей земли с машиной у меня умер трансивер на первом шилде. Если попутать H и L - ничего страшного не будет. Шилд инициализнется, но данных не будет.
3. Важно выбрать нужную либу - если кварц на 8мгц - нужна соответствующая либа. Почти все либы в нете на 16мгц. Просто замена кварца на 16мгц не приносила результатов. Если кварц не совпадает с либой, то инициализация все равно проходит успешно... только данных нет никаких... или в шину начинает что-то срать - аж блоки теряются.
4. В некоторых либах фильтры изначально настроены так, чтобы ничего не принимать (нужно глядеть код либы). В этом случае инициализируем их, чтобы принимать все:
CAN.init_Mask(0, 0);
CAN.init_Filt(0, 0, 0);
CAN.init_Mask(1, 0);
CAN.init_Filt(1, 1, 0);
5. И самое важное. В некоторых автомобилях (к примеру у меня в AUDI) на диагностическом разъеме (ODB) нет вообще ничего и работает он в режиме запрос-ответ. Т.е. если у диаг шины ничего не спросить - то будет тишина. Поэтому нужно вкурить место подключения. У меня 4 различные шины (моторная, комфорт, инфотеймент и диагностическая). Нужно понимать, что не во всех шинах есть вся информация... И скорости у шин могут быть разные. У меня часть 100, часть 500...

Если интересно, то могу прислать фотку с подключением, либу и скетч...

olegik_ah
05.08.2015, 05:25
А, забыл добавить про терминирующий резюк.
Если подключаться ВМЕСТО устройства или в диаг разъем - то терминирующий резюк нужен. В общем случае 120 ом. Но, судя по спецификации, у меня в ауди нужно 60 ом.
Если подключаться ВМЕСТЕ (параллельно) с устройством - то терминатор не нужен.

И еще одно. Проводки CAN шины должны быть витой парой. Я по началу подцепил 2 проводка и не скрутил их. С не скрученными проводками длиною 30см у меня портились данные...

xmetal
05.08.2015, 11:34
olegik_ah, тоже использую нано и почти такой же кан-модуль :good: Все думаю как их между собой закрепить, сейчас просто болтаются на проводках, как решил этот вопрос?

alexfox
05.08.2015, 14:42
У меня что-то китайский NANO не пошел...драйвера под Win не ставятся, всякие пробовал - на видит его комп. Кто какие подсовывал драйвера?
ПроМикро (Леонардо) нормально определяется, но с ним точно такая же ситуация как автора поста - нет инициализации с шилдом.
MCP2515 + TJA1050 (с кварцем на 8МГц) и пробовал со вторым MCP2515 + 2551 с кварцем на 16МГц - глухо...

xmetal
05.08.2015, 15:40
У меня что-то китайский NANO не пошел...драйвера под Win не ставятся, всякие пробовал - на видит его комп. Кто какие подсовывал драйвера?Если микруха USB-UART CH340g, то можно тут (http://www.5v.ru/zip/ch341ser.zip) взять.

olegik_ah
05.08.2015, 17:40
olegik_ah, тоже использую нано и почти такой же кан-модуль :good: Все думаю как их между собой закрепить, сейчас просто болтаются на проводках, как решил этот вопрос?

Позже буду мутить свою плату... А пока ардуина, CAN модуль, DC-DC конвертер и bluetooth модуль ужились с помощью термоклеевого пистолета и пары саморезов вот в такой http://ru.aliexpress.com/item/3pcs-lot-60x45x23mm-junction-box-instrument-enclosure-plastic-box-for-electron-project-instrument-enclosure/32267314003.html коробочке:)

Внутри выглядит не очень... Но снаружи вполне достойно

olegik_ah
05.08.2015, 17:52
У меня что-то китайский NANO не пошел...драйвера под Win не ставятся, всякие пробовал - на видит его комп. Кто какие подсовывал драйвера?


Ну это зря. У меня кучка китайских ардуин всяких... на части из них китайский (не оригинальный) чип FT232R. Если ставить последние драйвера с сайта производителя http://www.ftdichip.com/Drivers/VCP.htm, то они определяют что чип - подделка и сносят с него PID. Короче, нужно изначально ставить дрова версии 2.8.14. Но, если PID уже снесен - то курим здесь http://geektimes.ru/post/258848/ - в принципе ничего сложного...

olegik_ah
05.08.2015, 17:57
Если микруха USB-UART CH340g, то можно тут (http://www.5v.ru/zip/ch341ser.zip) взять.

+1 Тока драйвер без цифровой подписи к этому чипу...
Подробнее http://arduino-project.net/driver-ch340g/

olegik_ah
05.08.2015, 18:17
MCP2515 + TJA1050 (с кварцем на 8МГц)

Пока я пытался завести свой первый шилд - выяснил, что TJA1050 может не подойти для всех авто. Проверить просто - нужно подать питание на шилд (ардуину можно вообще не подключать) и ткнуться осцилом в землю и в TJA1050 в 4 ногу. Будет что на осциле? Если нет - то либо TJA1050 мертв, либо он не подходит.

По итогу для моей тачки (как выяснилось потом) TJA вполне подходит... Но я то этого не знал еще. Взял какой-то блок со свой машины и разобрал его с целью посмотреть что VAG ставит в качестве трансивера - выяснил, что используется MCP2551 (не путать с контроллером MCP2515). MCP2551 1 в 1 по распиновке подходит вместо TJA1050... Но это все имеет смысл ТОЛЬКО если инициализация проходит успешно, но нет данных!!!

Если инициализации нет - то еще раз повторюсь - либо не так подключен шилд к ардуине, либо контроллер MCP2515 мертв.

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

xmetal
05.08.2015, 18:28
olegik_ah, стабилизатор ардуиновский разве не потянет блютус и КАН, а то может без DC-DC обойтись можно? У себя хочу немного напругу сбить 4 диодами, чтобы не выше 12 в было при работающем генераторе. Преобразователь городить не хочется.
[оффтоп] Какое ГУ в Ауди, не как у остальных VAG?

alexfox
05.08.2015, 18:31
Инициализация шилда прошла, после того как сменил ПроМикро на Нано:
CAN BUS Shield init ok!
Больше в мониторе ничего нет.
На 4-пине MCP2551 есть пачки импульсов во время нажатия кнопок, если не нажимать, то тишина...

olegik_ah
05.08.2015, 19:02
olegik_ah, стабилизатор ардуиновский разве не потянет блютус и КАН, а то может без DC-DC обойтись можно? У себя хочу немного напругу сбить 4 диодами, чтобы не выше 12 в было при работающем генераторе. Преобразователь городить не хочется.
[оффтоп] Какое ГУ в Ауди, не как у остальных VAG?

Возможно... Но мне для BT нужно 3.3 Преобразователь для этого. Ардуина питается от сети машины. Судя по спецификации - должна выдержать 17вольт постоянно. Поэтому в диодах смысла не вижу.
Что такое ГУ?

olegik_ah
05.08.2015, 19:13
Инициализация шилда прошла, после того как сменил ПроМикро на Нано:
CAN BUS Shield init ok!
Больше в мониторе ничего нет.
На 4-пине MCP2551 есть пачки импульсов во время нажатия кнопок, если не нажимать, то тишина...

Куда подключаешься? Скорость шины точно та, что нужна?

В аттаче моя либа и скетч. Либа не типовая - взял какую-то с гитхаба и ее под себя немного допилил.

Обрати внимание на строчку CAN.begin(CAN_100KBPS, MCP_8MHz)
Первый параметр - скорость шины, второй - тип кварца (MCP_16MHz или MCP_8MHz) на шилде.

Либа и скетч 100% рабочие - проверено на разных тачках, на разных шинах, на разных кварцах...

xmetal
05.08.2015, 19:15
Возможно... Но мне для BT нужно 3.3 Преобразователь для этого. Ардуина питается от сети машины. Судя по спецификации - должна выдержать 17вольт постоянно. Поэтому в диодах смысла не вижу.
Что такое ГУ?Помоему максимум 15, надо еще раз взгялуть в даташит. В китайских нано стаб стоит другой, попроще, нежели в оригинале. Да и вообще хочется чтобы меньше мощи рассеивалось на стабе, чтобы не грелось.
ГУ - головное устройство, магнитолка.

olegik_ah
05.08.2015, 19:31
Да я что-то не заметил, чтоб китайский стаб сильно грелся... По температуре почти как трупик:) В любом случае вариант пилотный - если стаб умрет - буду думать:)

ГУ во всех VAG сильно разные... В смыле в разных ауди ГУ сильно разные, в разных фольцах ГУ разные, в разных шкодах разные:)... У меня, к примеру, ГУ вообще из нескольких блоков состоит...

alexfox
05.08.2015, 19:42
CS ---> 9pin
INT ---> 2pin
MOSI -> MOSI
MISO -> MISO
SCK -> SCK
Питание 5V.
Arduino IDE версии 1.0.5., пробовал последнюю 1.6.5 - так же всё...
Скорость порта пробовал менять везде и 9600 и 115200.
Есть два шилда с кварцами на 8 и 16 Мгц.
Залил твою либу и скетч, шина 500 у меня, кварц 16 выставил - инициализация проходит и дальше затык...

Куда подключаешься? Скорость шины точно та, что нужна?

В аттаче моя либа и скетч. Либа не типовая - взял какую-то с гитхаба и ее под себя немного допилил.

Обрати внимание на строчку CAN.begin(CAN_100KBPS, MCP_8MHz)
Первый параметр - скорость шины, второй - тип кварца (MCP_16MHz или MCP_8MHz) на шилде.

Либа и скетч 100% рабочие - проверено на разных тачках, на разных шинах, на разных кварцах...

olegik_ah
05.08.2015, 21:19
А что за машинка? И куда подключение? К какому-то блоку или в диаг разъем?

Можно фотку кан-шилда крупным планом?

alexfox
05.08.2015, 21:50
Машина Infiniti FX35, подключение на внутреннюю шину AV-Com (BUS+ и BUS-), между блоком кнопок и Display Control Unit:
http://meb54.ru/av1.jpg
Шина точно 500KBPS.
Шилд такой: http://ru.aliexpress.com/item/Free-shipping-1pcs-MCP2515-CAN-Bus-module-TJA1050-receiver-51-MCU-SPI-protocol-routines/32235683419.html
Второй: http://pccar.ru/showpost.php?p=289078&postcount=95

olegik_ah
05.08.2015, 22:46
Ну тогда сдаюсь. Я не эксперт в автоэлектронике... Я программер и в прошлом радиогубитель:) Визуально все должно быть ок - все также, как и у меня.
Финика у меня не было никогда - ничего конкретного сказать по нему не могу. Но, если интересно - вот мои мысли.
1. Быстренько посерчил по инету - не нашел ни одного однозначного упоминания, что на картинке это шина это CAN со скоростью 500 (хотя где-то встречается инфа). Попробовал бы для начала другие скорости. Ничего плохого не должно произойти. В либе в файле mcp_can_dfs.h с 410 строчки перечислены все скорости, поддерживаемые либой...
2. Поэкспериментировал бы с терминатором. попробовал бы разные варианты с резистором от 60 до 120ом. Хотя при таком подключении он врядли нужен - но все же...
3. Если это не помогло - то попробовал бы вскрыть корпус устройства и подглядеть какой там стоит трансивер - попробовать использовать такой-же. Can трансиверы в дорогом московском магазе стоят примерно по 100рублей. Я не эксперт в трансиверах, но, насколько я понял из форумов, PCA82C251 - это наиболее универсальный. Почти все трансиверы имеют распиновку 1 в 1 как TJA1050...

Боюсь, что это все мысли на данный момент...

alexfox
05.08.2015, 22:56
Дело в том, что у человека с форума работает на финике и шина там 500 выставлена. подключение к этим же блокам.
Термирующий резистор пробовал.
Микруха такая: M6636B

xmetal
05.08.2015, 23:37
На 12 ноге mcp2515 в момент когда она готова передать данные ардуине будет 0, в противном случае 1. Либо попробовать передать что нить в кан шину и осциллографом посмотреть 1 ногу.

alexfox
05.08.2015, 23:41
Из даташита на M6636B:
Modulating/demodulating: PWM (Pulse Width Modulation)
• Transmission speed: 41.6 kbps
Разве она может работать на 500KBPS ?
Странно...

xmetal
05.08.2015, 23:49
Еще может отличаться формат данных, есть стандартный и расширенный. Эту настройку надо в либе смотреть.
Upd: Наврал, просто при отправке можем указать, что формат расширенный, принимает похоже любые. В общем я не проверял, не знаю.

olegik_ah
06.08.2015, 01:14
Еще может отличаться формат данных, есть стандартный и расширенный. Эту настройку надо в либе смотреть.


Стандартные и расширенные - не имеет значения. Та либа, которую я прислал - по умолчанию принимает все, если не ставить доп фильтров и масок.

olegik_ah
06.08.2015, 01:17
Микруха такая: M6636B

Ну вот и разобрались - эта микруха это не CAN трансивер!!! Протокол те тот - кан тансивер не поймет!!!

Либо подключаетесь не туда, либо шилд нужен другой...

olegik_ah
06.08.2015, 01:39
эта микруха работает с протоколом SAE J1850 - это один из подвидов obd-II.
Курить в сторону https://www.sparkfun.com/products/9555

и чипов STN1110 или ELM327

olegik_ah
06.08.2015, 01:52
во! и схему нашел.
http://pinoutsguide.com/CarElectronics/obd-2_universal_cable_pinout.shtml
выкинуть все, сто касается ISO и CAN.

xmetal
06.08.2015, 02:38
olegik_ah, ты через диагностический разъем общаешься с авто?

olegik_ah
06.08.2015, 10:07
Я - нет.

Disgraced
06.08.2015, 11:59
Привет!
Тоже вмешаюсь в разговор. Не так давно мутил проектик для своей ауди. Тоже весь мозг сломал по поводу can сниффилки. Купил шилд и ардуину - не мог подружить. Что только не делал. И кварц менял и трансивер... После 2 недель пыток пришла мысль о том, что шилд мертв. Шилд, кстати, был такой-же, как у тебя... Покупал я его в России. Было безумно жалко денег на новый шилд. Порылся на алиекспрессе и нашел дешманские варики. И купил сразу по 5 штук:)
Ардуина нано http://ru.aliexpress.com/item/Nano-3-0-free-USB-Cable-Free-Shipping-Dropshipping/659109175.html 151руб штучка
CAN шилд http://ru.aliexpress.com/item/5pcs-lot-MCP2515-CAN-Bus-Module-TJA1050-receiver-SPI-For-51-MCU-ARM-controller-Free-shipping/32259606078.html 200рублей штучка.

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

Спасибо, за информацию.
Похоже что у меня как раз это - шилд мёртв. Ни либы ни замены кварцев, ни смены ардуин не помогли - просто не происходит инициализация. Причем с кварцем на 8 вообще ничего не происходит, а с кварцем на 16 в мониторе порта сообщения об ошибке инициализации. Как я вычитал, инициализация должна проходить даже без подключения к шине, а то уже устал разбирать салон по 2 раза в неделю.
Думаю закажу пару шилдов, как по ссылке.
Хотя есть более интересный вариант:
http://www.hobbytronics.co.uk/leonardo-canbus
леонардо+каншилд в одном флаконе, но дороговато

xmetal
06.08.2015, 12:41
А вот тоже интересные железки от российских разработчиков http://www.canny.ru/ Специально для авто. У них там даже своя визуальная среда программирования имеется. Только ардуино китайская всеже дешевле.

olegik_ah
06.08.2015, 15:18
Как я вычитал, инициализация должна проходить даже без подключения к шине.
100% поддерживаю - без шины инит проходит. Скажу даже больше - в контроллере есть режим loopback. Нужно в либу добавить процедурку:

INT8U MCP_CAN::setLoopback(void)
{
INT8U res = MCP2515_OK;

res = mcp2515_setCANCTRL_Mode(MODE_LOOPBACK);
if(res > 0){
#if DEBUG_MODE
Serial.print("Enter setting mode fall\r\n");
#endif
}
return res;
}

и ее вызывать после инициализации шилда. Тогда можно без машинки даже отладку небольшую делать - если шлем в sendMsgBuf тут же получаем checkReceive и данные в readMsgBuf...


Хотя есть более интересный вариант:
http://www.hobbytronics.co.uk/leonardo-canbus
леонардо+каншилд в одном флаконе, но дороговато

да ну.... дорого...

olegik_ah
06.08.2015, 15:24
А вот тоже интересные железки от российских разработчиков http://www.canny.ru/ Специально для авто. У них там даже своя визуальная среда программирования имеется. Только ардуино китайская всеже дешевле.

Да ну... Если ардуина знакома - то проще на ней сделать. В их среде разработке без бутылки сложно разобраться. Особенно, когда нужно сколь-нибудь серьезную логику замутить... Схемы получаются в километр! Да и стоимость не гуманная...
Плюс еще один момент - порою не хватает мощности процессора этого канни. Был такой проектик - когда нужно было в шине 500кбит кое-какие пакетики подменить. Для этого было закуплено 2 таких устройства. Одно читает из шины, другое передает дальше. По итогу они при большой нагрузке на шину теряли много пакетов... Пришлось на ардуину переписывать.

AlexN
06.08.2015, 18:54
Да ну... Если ардуина знакома - то проще на ней сделать.

Это хорошо если знакома....

В их среде разработке без бутылки сложно разобраться.

А мне показалась проще простого. Может от того что я не программист и не пьющий :smile1:

Для этого было закуплено 2 таких устройства. Одно читает из шины, другое передает дальше.

Есть аналогичная задумка. А как они были между собой связаны?

olegik_ah
06.08.2015, 20:53
А мне показалась проще простого. Может от того что я не программист и не пьющий :smile1:
То, что не программист - это хорошо. То, что не пьющий - плохо :)

Есть аналогичная задумка. А как они были между собой связаны?
Да вот как-то примерно так http://forum.canny.ru/viewtopic.php?id=104

AlexN
06.08.2015, 22:41
Да вот как-то примерно так http://forum.canny.ru/viewtopic.php?id=104

То есть включались в разрыв CAN по такой схеме:

CAN <--> [CANNY7] <--LIN--> [CANNY7] <--> CAN

?

olegik_ah
06.08.2015, 23:25
Ну да, именно

AlexN
07.08.2015, 10:51
Почитал про LIN.

Они были связаны между собой каналом, чья скорость в двадцать пять раз ниже чем скорость CAN, в которой они должны были подменять пакеты?

CAN <--500 Кбит/сек--> [CANNY7] <-- LIN 20 Кбит/сек--> [CANNY7] <- 500 Кбит/сек -> CAN

olegik_ah
07.08.2015, 13:02
Честно говоря - привел первую попавшуюся ссылку. Порылся у себя в архивах - диаграмму для канни не могу найти. Может и не по LIN они были связаны. У канни есть много аппаратных драйверов для передачи данных (UART, LIN, I2C). Как именно были связаны те 2 контроллера - не помню. Но точно помню, что затык был не в связке. Затык был в том, что если на шине CAN 500 не ставить аппаратных фильтров (принимать все сообщения CAN), то при высокой загрузке шины CAN часть сообщений теряется, т.к. контроллер не успевает обрабатывать все сообщения из буфера.

Лучше подобные вопросы задать на форуме канни - они оперативно отвечают.

(vS)
08.08.2015, 07:08
судя по клочку схемы, это первый FX, там НЕ CAN
не веришь? разбери монитор, проще всего, или DCU, если тебе его достать проще, но я тебе как доктор - монитор достать проще )

alexfox
08.08.2015, 08:41
Я с самого начала и думал, что там не Can протокол...
Просто мне человек с форума утверждал, что с 2003 по 2009 во всех Infiniti один и тот же внутренний Can-протокол. У него чуть свежее финик и всё управляется по Can, подключение в те же точки, что и у меня на схеме.
У меня в блоке кнопок стоит: M6636B
Modulating/demodulating: PWM (Pulse Width Modulation)
• Transmission speed: 41.6 kbps

судя по клочку схемы, это первый FX, там НЕ CAN
не веришь? разбери монитор, проще всего, или DCU, если тебе его достать проще, но я тебе как доктор - монитор достать проще )

Мне вообще всё просто! У меня монитор + DCU + блок кнопок лежат дома на столе... :-))

Farman
08.08.2015, 10:25
LIN как я знаю максимум 20кб/с бывает. Я использую LIN

AlexN
08.08.2015, 11:48
Затык был в том, что если на шине CAN 500 не ставить аппаратных фильтров (принимать все сообщения CAN), то при высокой загрузке шины CAN часть сообщений теряется, т.к. контроллер не успевает обрабатывать все сообщения из буфера.



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

А если не отрывать одну половину машины от другой и не вставать посередине, то я чота и не придумаю для чего может понадобиться принимать ВСЕ сообщения и чтоб без пропусков :smile1:

(vS)
09.08.2015, 05:31
У меня в блоке кнопок стоит: M6636B
Modulating/demodulating: PWM (Pulse Width Modulation)
• Transmission speed: 41.6 kbps

Мне вообще всё просто! У меня монитор + DCU + блок кнопок лежат дома на столе... :-))

и в мониторе такой же, и в DCU - ДВА

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

alexfox
09.08.2015, 10:07
Разговаривал с YAM1966, что бы его USB HID контроллер V4 настроить на перехват кнопок по шине Infiniti, говорит, что должно получиться, но у него пока нет времени...
А так там всё по аналогии как на Лексусах/Тойотах внутренний протокол AVC-LAN, используется вход контроллера для шины IEBUS (AVC-LAN) с поддержкой PWM, нужно организовать софтовую поддержку.

и в мониторе такой же, и в DCU - ДВА

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

(vS)
09.08.2015, 12:09
да хрена вам там, а не AVC-LAN )))
хотя осцыл я туда не пихал... железа не достаточно

alexfox
09.08.2015, 13:31
да хрена вам там, а не AVC-LAN )))
хотя осцыл я туда не пихал... железа не достаточно

Ну я не говорю, что именно AVC-LAN, но что-то похожее с PWM модуляцией.
На осцилле чётко видны пачки импульсов при нажатии кнопок.
Из даташита на M6636B (Modulating/demodulating: PWM (Pulse Width Modulation).
Схемка конвертера-сниффера протокола SAE J1850:
http://pavel-pervomaysk.com/files/SAE%20J1850VPW%20converter.pdf
Хотя тоже не подойдет, SAE/J1850 VPW

alexfox
09.08.2015, 17:00
А если использовать вот такой трансивер для протокола SAE J1850 PWM:
ELM320 (OBD (PWM) TO RS232 INTERPRETER)
http://www.elmelectronics.com/DSheets/ELM320DS.pdf
Там и схемка есть, выход для RS232-порта Rx, Tx., потом дальше куда-то этот сигнал выводить...

(vS)
10.08.2015, 10:42
а где этот ELM взять?
наверное, спорно )) проще родной чип отсниффить, но не факт, что он будет прозрачным, скорее всего на адресацию завязан и чужие мессаги не будет принимать

alexfox
10.08.2015, 12:54
Купить не проблема...правда он относительно дорогой: от 900 р. до 1100р. примерно.

а где этот ELM взять?
наверное, спорно )) проще родной чип отсниффить, но не факт, что он будет прозрачным, скорее всего на адресацию завязан и чужие мессаги не будет принимать

(vS)
10.08.2015, 13:02
ссылку дай, я попробую

и адрес свой для доставки в личку )) одному скушно пробовать :dntknw:

alexfox
10.08.2015, 13:14
В МСК
http://www.elitan.ru/price/item288020
ELM320SM SO8
5 дней
1033 р. за 1шт.
по 909р. за 3шт.

(vS)
10.08.2015, 13:17
мне Москва не вариант ) мои карты россия не принимает, мне бы чонить за бугром, или у желтых или на враже$$ской стороне

на али и в наебае нету...

alexfox
10.08.2015, 13:28
http://www.elmelectronics.com/

(vS)
10.08.2015, 13:42
http://www.elmelectronics.com/orderform.html

нефигасе у них там номенклатура

тебе в дипе или в соике? пару? адрес давай

alexfox
10.08.2015, 14:48
SO8 конечно :-))
Давно дипом не пользуюсь...
Давай пару.
Адрес скину в личку.

Rage2
12.08.2015, 21:54
Рябят, а у кого есть опыт общения с ford focus 3 ?

lti1
12.08.2015, 22:17
Рябят, а у кого есть опыт общения с ford focus 3 ?Что конкретно Вас интересует?

Rage2
13.08.2015, 11:26
Первостепенно кнопки на руле. Хотя их же можно как резистивные подключить, а не через кан?

lti1
13.08.2015, 13:37
Первостепенно кнопки на руле. Хотя их же можно как резистивные подключить, а не через кан?Салонная CAN шина есть на разъеме для диагностики, скорость 125 кбит/с. Сканировал её CAN hacker, кнопок руля на ней нет.

(vS)
13.08.2015, 15:47
SO8 конечно :-))
Давно дипом не пользуюсь...
Давай пару.
Адрес скину в личку.

still wait for yours address :bye:

Raikkonen
08.11.2015, 22:51
Срочно срочно пока тема не закрыта!!! =))
Прочел все, пожалуйста, можно мне пару тройку разъяснений, и возможно поделиться опытом!
В общем какие сделал выводы прочитав все это:
1. все эти САН шилды строятся на 2 микроконтроллерах
1.а. один из них переделывает физически кан в какой-то другой
1.б. второй соединяет этот протокол с ардуино, и под этот микроконтроллер есть библиотеки, по позволяет нам общаться по кан (грубо) функциями типа "прочитать"
1.в. соответсвтенно, например этот мне не подойдет https://vk.com/photo-63602362_332741541 , под него придется писать самому кучу кода.

2. У меня арудино мега2560 и лада гранта =))) какой КАН шилд брать еще пока не решил.
3. Цель очень простая - шоб ардуино видел скорость движения. Сначала хотел прицепиться к датчику, но потом понял, что по кану будет проще и лучше, и больше возможностей...

4. Есть ли у кого опыт общения с ВАЗом по САН? на каком железе? какая скорость шины в колодке, и что на нее выходит (хотя это сам наврное найду, просто не терпится сюда написать)
5. Еще видел сообщение от olegik_ah что не каждый этот "первый" контроллер может сработать с КАН шиной итд итп.....

В общем нереально рад что нашел эту тему, потому что много тем где ни у кого ниче не работает, а тут аж несколько человек, у которых все ок рабоатет!

T_r_D
08.11.2015, 23:02
Срочно срочно пока тема не закрыта!!! =))
Прочел все, пожалуйста, можно мне пару тройку разъяснений, и возможно поделиться опытом!
В общем какие сделал выводы прочитав все это:
1. все эти САН шилды строятся на 2 микроконтроллерах
1.а. один из них переделывает физически кан в какой-то другой
1.б. второй соединяет этот протокол с ардуино, и под этот микроконтроллер есть библиотеки, по позволяет нам общаться по кан (грубо) функциями типа "прочитать"
1.в. соответсвтенно, например этот мне не подойдет https://vk.com/photo-63602362_332741541 , под него придется писать самому кучу кода.

2. У меня арудино мега2560 и лада гранта =))) какой КАН шилд брать еще пока не решил.
3. Цель очень простая - шоб ардуино видел скорость движения. Сначала хотел прицепиться к датчику, но потом понял, что по кану будет проще и лучше, и больше возможностей...

4. Есть ли у кого опыт общения с ВАЗом по САН? на каком железе? какая скорость шины в колодке, и что на нее выходит (хотя это сам наврное найду, просто не терпится сюда написать)
5. Еще видел сообщение от olegik_ah что не каждый этот "первый" контроллер может сработать с КАН шиной итд итп.....

В общем нереально рад что нашел эту тему, потому что много тем где ни у кого ниче не работает, а тут аж несколько человек, у которых все ок рабоатет!

А разве у ВАЗа есть кан?
Там не K-Line ли?

Raikkonen
08.11.2015, 23:11
А разве у ВАЗа есть кан?
Там не K-Line ли?

В новых есть кан. (гранта, приора). Только что листал всю твою тему по общению по обд2 протоколу с сидором - я правильно понимаю, что это по сути КАН шина, а обд2 это просто протокол?

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

T_r_D
09.11.2015, 10:12
В новых есть кан. (гранта, приора). Только что листал всю твою тему по общению по обд2 протоколу с сидором - я правильно понимаю, что это по сути КАН шина, а обд2 это просто протокол?

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

Да - кан это физическая шина, а обд это протокол.
А физических типов шины есть несколько видов.
Я перепаивал потому что у меня толлерант кан которая обслуживает переферию.
А узнал я это из интернета.
Если есть кан адаптер то можно подключить и перебрать все скорости.
Если данных нет, то перепаивал микруху.

GASCHE
09.11.2015, 13:16
Да - кан это физическая шина, а обд это протокол.Несколько не правильно

OBD-II (On-board diagnostics) — бортовая диагностика, стандарт разработанный в середине 90-х, предоставляет полный контроль за двигателем. Позволяет проводить мониторинг частей кузова и дополнительных устройств, а также диагностирует сеть управления автомобилем. В данном стандарте производители применяют различные протоколы соединения с автомобилем.

ISO 9141-2
ISO 14230 Keyword Protocol 2000
SAE J1850 VPW
SAE J1850 PWM
ISO 15765-4 CAN (Controller Area Network)

olegik_ah
11.11.2015, 13:48
Несколько не правильно

Поддерживаю! ОБД - это не всегда кан... Кан-ли на новых ладах - не знаю. Я по иномарочкам...

olegik_ah
11.11.2015, 14:05
В общем какие сделал выводы прочитав все это:
1. все эти САН шилды строятся на 2 микроконтроллерах
1.а. один из них переделывает физически кан в какой-то другой
1.б. второй соединяет этот протокол с ардуино, и под этот микроконтроллер есть библиотеки, по позволяет нам общаться по кан (грубо) функциями типа "прочитать"
1.в. соответсвтенно, например этот мне не подойдет https://vk.com/photo-63602362_332741541 , под него придется писать самому кучу кода.

Все верно. 2 микрухи. Одна трансивер, другая контроллер. То, что на фото - не подойдет. Даже не уверен - реально ли написать такую кучу кода, чтобы это заработало с ардуиной. Хотя если ты супер-профи с++ программер - то все реально.

Нужно искать шилды кан на которых 2 чипа и кварц. Далее скажу, что точно будет работать с ардуино (проверено на личном опыте):
1. Контроллер mcp2515
2. Трансивер - в принципе пофигу какой. На мой взгляд лучше mcp2551 или PCA82C251. Но любой tja(1040/1041/1054) тоже покатит.
3. Кварц. Для 16 МГц или 8Мгц.

Для этого набора либ для ардуины навалом в нете. Но для шилдов с 8Мгц кварцом найти либу сложнее...


3. Цель очень простая - шоб ардуино видел скорость движения. Сначала хотел прицепиться к датчику, но потом понял, что по кану будет проще и лучше, и больше возможностей...

На счет "проще" - спешу тебя обломать... Для начала нужен нормальный сниффер... Можно соорудить и из ардуины... В любом случае поймать из кана нужную информацию - это не так просто, как на первый взгляд может показаться... А то, что больше возможностей - это да!


5. Еще видел сообщение от olegik_ah что не каждый этот "первый" контроллер может сработать с КАН шиной итд итп.....

Эт ты о чем?

AlexN
12.11.2015, 13:30
3. Цель очень простая - шоб ардуино видел скорость движения. Сначала хотел прицепиться к датчику, но потом понял, что по кану будет проще и лучше, и больше возможностей...


http://www.canny.ru/c5nano

T_r_D
12.11.2015, 22:03
Все верно. 2 микрухи. Одна трансивер, другая контроллер. То, что на фото - не подойдет. Даже не уверен - реально ли написать такую кучу кода, чтобы это заработало с ардуиной. Хотя если ты супер-профи с++ программер - то все реально.

Нужно искать шилды кан на которых 2 чипа и кварц. Далее скажу, что точно будет работать с ардуино (проверено на личном опыте):
1. Контроллер mcp2515
2. Трансивер - в принципе пофигу какой. На мой взгляд лучше mcp2551 или PCA82C251. Но любой tja(1040/1041/1054) тоже покатит.
3. Кварц. Для 16 МГц или 8Мгц.

Для этого набора либ для ардуины навалом в нете. Но для шилдов с 8Мгц кварцом найти либу сложнее...


На счет "проще" - спешу тебя обломать... Для начала нужен нормальный сниффер... Можно соорудить и из ардуины... В любом случае поймать из кана нужную информацию - это не так просто, как на первый взгляд может показаться... А то, что больше возможностей - это да!


Эт ты о чем?

2. Трансиверы-то под разные шины ты приводишь. Надо сначала определится с типом шины, а потом уже с трансивером.
Самый простой способ это купить простую плату контроллера CAN и попробовать подружить её с машиной.
Нет смысла покупать дорогой шилд, проще купить ту, что я покупал. (в тему про ситр).
Перебрать все скорости и если не коннектится, то уже перепаивать трансивер. А вот это уже не дёшего.
В теме про тот же ситр кто-то писал про универсальный трансивер, но сам не проверял так что советовать не могу.
3. Библиотека есть и можно глянуть её в моей теме с ситроеном, так что ни какой разницы нет какой стоит кварц. Главное помнить какой стоит :)

И ещё раз- проще найти в инете инфу о том какая шина в машине идёт, а потом уже городить огороды.
Заказывать всё равно это всё с какого нить ибея, а значет ждать, так что заказывать проще всё разом.

olegik_ah
13.11.2015, 03:10
2. Трансиверы-то под разные шины ты приводишь. Надо сначала определится с типом шины, а потом уже с трансивером.
Да хз в чем они разные. Все они CAN. Все держат скорость до 1МБит... Кто-то умеет работать по одному проводу, кто-то нет - но это, по сути, не так важно. У меня все работают. Я не считаю себя экспертом в CAN. Могу ошибаться. Но у меня Ауди 2011 года. В шилде, который я купил изначально, стоял какой-то TJA. В процессе экспериментов я его убил еще до того, как получил лог из шины:) Но на тот момент я этого еще не знал. Думал, что дело в том, что трансивер не понимает мою шину. Порылся в нете - по найденной мною информации mcp2551 и PCA82C251 - самые универсальные (ну или распространенные...). Не утверждаю, что это правда. В результате могу сказать, что с моей машиной работает и mcp2551 и PCA82C251. TJA тоже работает, т.к. потом я для друзей покупал еще шилды в такие же машины...

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

Так и я про то же! Не понимаю, нахрена тратить 20-30 баксов на дорогой шилд. Дешевые шилды все то же самое умеют. Не читал твою тему, но я купил самые дешевые на ебее! Вот ссыль: http://ru.aliexpress.com/item/5pcs-lot-MCP2515-CAN-Bus-Module-TJA1050-receiver-SPI-For-51-MCU-ARM-controller-Free-shipping/32259606078.html
800 руб за 5 штук = 160 руб за штуку:) Доставка бесплатная. Вполне адекватная цена.

Перебрать все скорости и если не коннектится, то уже перепаивать трансивер. А вот это уже не дёшего.

Странно. Что именно не дешево? CAN трансиверы разномастные в чип и дипе в пределах 100руб. Если знать где искать - то и по 50 найти можно... А сам процесс перепайки - 5 минут, если паяльник не для кастрюль использовать:)

В теме про тот же ситр кто-то писал про универсальный трансивер, но сам не проверял так что советовать не могу.
3. Библиотека есть и можно глянуть её в моей теме с ситроеном, так что ни какой разницы нет какой стоит кварц. Главное помнить какой стоит :)

Так я и не говорю, что ее нет. Просто чаще в нете встречается либа для кварца 16МГц. Поэтому при сборке поделки важно выбрать нужную.

И ещё раз- проще найти в инете инфу о том какая шина в машине идёт, а потом уже городить огороды.
Ну уж не всегда и не для каждой машины найти что-то в нете проще... Из опыта могу сказать, что НАМНОГО проще не рыть инет в поисках того, какая из разновидностей CAN шины используется. Проще взять любой блок, подключенный к этой шине - вскрыть ему корпус и узнать какой трансивер использует производитель вашего авто. С таким трансивером и искать шилд:))) Или купить дешевый, а трансивер перепаять.
Или вообще настанет понимание, что это не кан шина:) Так у одного товарища из этой темы было:)
По крайней мере для аудюхи я затрахался инфу по крупицам собирать. По более старым есть кое-какая инфа. По свежим тачкам вообще фиг че найдешь - только методом проб и ошибок...

lti1
13.11.2015, 11:56
Срочно срочно пока тема не закрыта!!! =))
Прочел все, пожалуйста, можно мне пару тройку разъяснений, и возможно поделиться опытом!
В общем какие сделал выводы прочитав все это:
1. все эти САН шилды строятся на 2 микроконтроллерах
1.а. один из них переделывает физически кан в какой-то другой
1.б. второй соединяет этот протокол с ардуино, и под этот микроконтроллер есть библиотеки, по позволяет нам общаться по кан (грубо) функциями типа "прочитать"
1.в. соответсвтенно, например этот мне не подойдет https://vk.com/photo-63602362_332741541 , под него придется писать самому кучу кода.

2. У меня арудино мега2560 и лада гранта =))) какой КАН шилд брать еще пока не решил.
3. Цель очень простая - шоб ардуино видел скорость движения. Сначала хотел прицепиться к датчику, но потом понял, что по кану будет проще и лучше, и больше возможностей...

4. Есть ли у кого опыт общения с ВАЗом по САН? на каком железе? какая скорость шины в колодке, и что на нее выходит (хотя это сам наврное найду, просто не терпится сюда написать)
5. Еще видел сообщение от olegik_ah что не каждый этот "первый" контроллер может сработать с КАН шиной итд итп.....

В общем нереально рад что нашел эту тему, потому что много тем где ни у кого ниче не работает, а тут аж несколько человек, у которых все ок рабоатет!Если планируете искать необходимые Вам данные с помощью ардуино, тогда вам понадобится, как уже было сказано CAN Bus Sheeld, причем не особо важно с каким драйвером, у меня на MCP2551 нормально работает TJA1040 - TJA1055 на разных скоростях, далее берете программу из этого сообщения (http://pccar.ru/showthread.php?p=340652#post340652) и скетч из этого (http://pccar.ru/showthread.php?p=340659#post340659), подключаетесь к диагностической колодке, контакт 6 и 14 (взято здесь (https://www.drive2.ru/l/3567087/)):
https://e-a.d-cd.net/9e75f54s-960.jpg
Подбираете скорость работы шины, скорее всего 100 или 125 к/бит и сканируете, скорость вероятнее всего находится по тому же ID, что и обороты двигателя, то есть нужно искать ID в котором данные меняются в зависимости от оборотов двигателя, далее начинаете двигаться и наблюдаете за остальными данными в этом ID.

sergeyvolk
13.11.2015, 12:52
100 или 125 кб это же скорость кан шины комфорта, по ней разве будет передаваться обороты двигателя?

lti1
13.11.2015, 13:13
100 или 125 кб это же скорость кан шины комфорта, по ней разве будет передаваться обороты двигателя?Приборка, если получает данные по CAN, подключается к салонной шине.

Хотя..., ММС в калине подключается к 6 и 14 контактам, а это должна быть моторная шина, она должна иметь скорость 500 к/бит, странно как-то...

T_r_D
13.11.2015, 18:08
Да хз в чем они разные. Все они CAN. Все держат скорость до 1МБит... Кто-то умеет работать по одному проводу, кто-то нет - но это, по сути, не так важно.

Протоколы разные!
А поэтому трансиверы разные!
Кан комфорт не будет работать с 2551, а будет только с тжа 1054, а он сам стоит 500р за корпус. поэтому и дорого.

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

Для тех кто сомневается что по кан комфорт идут данные о оборотах и так далее- смотрите в тему про ситроен и кан.

Raikkonen
15.11.2015, 11:38
Все привет,прошу прощения, что пропал, был завал на работе. На этой неделе 100% определюсь че каво покупать итд.
Седлал вывод - надо найти поболее инфы о кан шине - будет сделанно!
Приборка получает данные по кан шине инфа 100%.
У меня у друга езь вайфай-ОБД2, как так он подходит к любой машине - вообще к любой?
Думаю самый простой варик это взять его у него и посмотреть, может он напишет какая скорость там итд итп.

Raikkonen
15.11.2015, 12:04
Приборка, если получает данные по CAN, подключается к салонной шине.

Хотя..., ММС в калине подключается к 6 и 14 контактам, а это должна быть моторная шина, она должна иметь скорость 500 к/бит, странно как-то...

=)))) думаю в автовазе достаточно и 125 кбод у них мотор не такой технологичный чтоб там был процесс за которым так быстро следить надо было

Raikkonen
15.11.2015, 12:19
http://www.canny.ru/c5nano

Спасибо за канни, но основная цель - научиться работать с ардуино. А то что цепляюсь к машине - это просто на чем потренироваться, чтобы не сильно просто было и не запредельно сложно, и доставляло удовольствие =)

Raikkonen
15.11.2015, 12:25
ЗАРАНЕЕ ИЗВИНЯЮСЬ за свою лень... но когда я в прошлый раз читал эти две темы (эту и ситроен) там был разговор о 8 и 16 герцах. Можете пожалуйста на пальцах разницу и смысл пояснить?

Raikkonen
15.11.2015, 12:55
Позвонил другу на счет ОБД - блин сказал "хз где, поищет...." Короче шоб время не терять, решил надо брать и ломать =)))) Че кота тянуть =)
В общем мысль такая, ребята, если Вы покупали http://ru.aliexpress.com/item/5pcs-lot-MCP2515-CAN-Bus-Module-TJA1050-receiver-SPI-For-51-MCU-ARM-controller-Free-shipping/32259606078.html
То может у кого-нибудь остался один из пяти??
Я б купил, оплатил отправку. =) Живу в Екатеринбурге если что.
В общем если до вторника не найдется у форумчан буду 5 шт брать и смиренно ждать =)))

T_r_D
16.11.2015, 00:17
ЗАРАНЕЕ ИЗВИНЯЮСЬ за свою лень... но когда я в прошлый раз читал эти две темы (эту и ситроен) там был разговор о 8 и 16 герцах. Можете пожалуйста на пальцах разницу и смысл пояснить?

Смысл прост.
На плате CAN стоит кварц или 8 или 16 мегагерц.
А большинство библиотек под 16 мегагерц.
У меня в теме есть ссылка на библиотеку под 8 и 16 и в скетче указывается частота.
if(CAN_OK == CAN.begin(CAN_125KBPS,MCP_8MHz))

Я заказывал с ибея одну штуку (про КАН плату), так что помочь ни чем не могу с этим.

И так же обрати внимание на выбор самой ардуины.
Если хочешь рулить громкостью и кнопками управления на планшете стандартными средствами, то выбирай то что умеет эмулировать клавиатуру.
Соответственно или Leonardo или Pro Micro.

lti1
16.11.2015, 00:28
В общем если до вторника не найдется у форумчан буду 5 шт брать и смиренно ждать =)))А зачем покупать 5 шт. если нужен один?
MCP2515 CAN Bus Module Board TJA1050 (http://ru.aliexpress.com/af/mcp2515.html?ltype=wholesale&SearchText=mcp2515&d=y&origin=n&initiative_id=AS_20151115122158&isViewCP=y&catId=0)

Raikkonen
16.11.2015, 08:22
Смысл прост.
На плате CAN стоит кварц или 8 или 16 мегагерц.
А большинство библиотек под 16 мегагерц.

Спасибо! То что это кварц я понимаю =)) я не понимаю как он влияет на работу...
Смотрю на все эти китайские платы, у всех вроде 8 Мгц.
Цель - подключиться по ОБД2 и читать скорость (возможно потом обороты еще).
Кстати, - я правильно понимаю что ОБД это широковещательный протокол (ну или "команада"), то есть мне не надо будет делать запрос, а только следить за тем, что по шине гуляет?

Raikkonen
16.11.2015, 08:25
Смотрю варианты с этими платками - обратил внимание, что есть некоторые с джампером J1, а некоторые без него. Это "терминатор"? он мне нужен, или не очень? =)))

Раскрыв глаза пошире увидел, что там выходят два контактика, и сопротивление 120 - точно терминатор (модель Т1000), и видимо просто феном нагреть и будет тебе контакт....

Raikkonen
16.11.2015, 08:49
ахахахахахахахаха
http://ru.aliexpress.com/item/MCP2515-CAN-Bus-Module-Board-TJA1050-Receiver-SPI-For-51-MCU-ARM-Controller-NEW/32522595390.html?spm=2114.031020208.3.10.cntKXE&ws_ab_test=searchweb201556_1_79_78_77_91_80,search web201644_5,searchweb201560_9
Немного неровная ножка =)))))))))))

pine
16.11.2015, 19:37
https://github.com/p1ne/CAN_BUS_Shield - тут библиотека с константами под 8 МГц. Смержил последнюю версию основной библиотеки и старую библиотеку с нужными константами (где-то выше в теме на нее ссылка проглядывала). Все работает, проверено на китайской MCP2515-платке и моей машине.

playaer
08.01.2016, 01:46
Всем привет, подскажите а что это такое http://www.aliexpress.com/item/New-SN65HVD230-CAN-bus-transceiver-communication-module-For-Arduino/32452379705.html

nicselin
15.01.2016, 14:37
Всем привет, подскажите а что это такое http://www.aliexpress.com/item/New-SN65HVD230-CAN-bus-transceiver-communication-module-For-Arduino/32452379705.html
http://html.alldatasheet.com/html-pdf/185385/TI/VP230/22/1/VP230.html

dmit
17.03.2016, 11:25
http://ru.aliexpress.com/item/MCP251...rchweb201560_9

Эта плата и получает и передает данные или только получает ?

T_r_D
17.03.2016, 12:18
dmit ошибку 404 она передаёт :)

Они все и принимают и передают. Это как изернет :)

И ещё раз- самый дешёвый вариант эта вот такая плата:
http://www.ebay.com/itm/311520457612?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

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

xmetal
17.03.2016, 12:22
Вверху страницы правильная ссылка)

T_r_D
17.03.2016, 12:29
xmetal тогда я такую же плату на ибее показал :)

devova
06.04.2016, 10:20
Здраствуйте, итак у меня на руках arduino nano и китайский шилд MCP2515 на 8Mhz.
Соєдинил вродиби правильно, заливал разниє скетчи но в каждий писал

while (CAN_OK != CAN.begin(CAN_125KBPS, MCP_8MHz))
{
Serial.println("CAN BUS Shield init fail");
Serial.println(" Init CAN BUS Shield again");
delay(100);
}
Serial.println("CAN BUS Shield init ok!");

в итоге инициализация проходит, только я могу ждать єє до 5 минут, ето нормально? видимо нет, но я не могу обяснить етот ефект

xmetal
06.04.2016, 10:46
Это не нормально. Другие скетчи работают сразу, мигалка например? Может загрузчик глючит?

devova
06.04.2016, 12:47
Єсли не сложно, можете обяснить назначения пина INT, зачем он? ето ж не SPI. я присоєдинил єво к пину 3, не некоториє пишут што нада к пину 2? может проблема в етом. К трансресиверу пока што ничиво не подключено, как я понимаю для инита и не надо?

xmetal
06.04.2016, 13:22
Когда получено сообшение из кан шины INT устанавливается в 0, оповещая, что сообщение можно считывать. На инициализацию не влияет.

Soldat6600
20.07.2016, 15:46
Подскажите пожалуйста, суть в чем, не могу считать данные с кан шины, авто ауди Q5. Вообще реально считать с ауди?
Хочу со штатной магнитолой поиграться.

lti1
20.07.2016, 20:26
Подскажите пожалуйста, суть в чем, не могу считать данные с кан шины, авто ауди Q5. Вообще реально считать с ауди?
Хочу со штатной магнитолой поиграться.В какой точке подключаетесь к CAN шине?

Soldat6600
21.07.2016, 12:00
В Ауди это кан инфотеймент, приходит к мафону, там и подключаюсь.

Soldat6600
21.07.2016, 12:10
Шилд MCP2515 модуль шины CAN Tja1050 и уно, пробовал менять кварц на 16 толку нет. Вообще нет ни каких данных.

T_r_D
21.07.2016, 13:52
какая скорость кан там?
какой тип кан там?

Менять кварц на 16 толку и не будет.

Вот эту библиотеку пробуй, она поддерживает и 8 и 16МгЦ платы.
Там в примере есть чтение.
Выстави там скорость и частоту и для начала узнай выдаётся ли сообщение ОК в терминал. Тоесть проинициализировался ли MCP2515.

Потом уже подбирать скорость.
Если не сработает, то пытаться поменять 1050 на 1054 или 1055

armlive
22.07.2016, 11:21
Вчера тоже просканировал и анализировал свою шину. Нашел кузов, двигатель, ручник, но пока в мусоре. Поморгал светом. Потом нашел это (https://github.com/Knio/carhack/blob/master/Cars/Nissan.markdown), там тоже далеко не ушел.

lti1
22.07.2016, 12:52
Вчера тоже просканировал и анализировал свою шину. Нашел кузов, двигатель, ручник, но пока в мусоре. Поморгал светом. Потом нашел это (https://github.com/Knio/carhack/blob/master/Cars/Nissan.markdown), там тоже далеко не ушел.Если ардуиной ищете, эта программа (http://pccar.ru/showthread.php?p=340652#post340652) может облегчить труд.

armlive
22.07.2016, 13:08
Если ардуиной ищете, эта программа (http://pccar.ru/showthread.php?p=340652#post340652) может облегчить труд.

CAN-BUS-TOOL эта, а то ссылка не рабочая уже?
Я тут тоже находил (http://www.canhack.org/board/viewtopic.php?t=1041) но так и не заработало ничего can-232.cpp выкидывает ошибку о не декларированной переменной

lti1
22.07.2016, 13:17
CAN-BUS-TOOL эта, а то ссылка не рабочая уже?
Я тут тоже находил (http://www.canhack.org/board/viewtopic.php?t=1041) но так и не заработало ничего can-232.cpp выкидывает ошибку о не декларированной переменнойЯ же в сообщение файл с архивом прикрепил, у меня работало на ура.

armlive
22.07.2016, 13:24
Я же в сообщение файл с архивом прикрепил, у меня работало на ура.
Спасибо попробую, я думал может что там еще было

Soldat6600
22.07.2016, 17:56
MCP2515 роинициализировался и пишет в терминале ОК. Скорость передачи данных 500 Кб. Разобрал мафон, там стоит tle6254-3g трансивер. А какой скетч использовать для чтения пакета данных?

Soldat6600
22.07.2016, 22:20
В мониторе порта пишет CAN BUS Shield init OK, почемуто нет никаких данных. А есть схемка на 1054?

lti1
22.07.2016, 22:23
Soldat6600, Вы уверены, что 500 кбит/сек - правильная скорость?

Soldat6600
22.07.2016, 22:32
уверен, сейчас пробовал подцепиться к другой кан шине так называемой Кан Комфорт там 100% 500 кбит. то же самое тишина. Может шилд не рабочий?

T_r_D
23.07.2016, 02:26
Он не уверен, а я уверен что:The TLE6254-3G is a fault tolerant low speed CAN Transceiver works as the interface between the CAN protocol controller and the physical CAN bus-lines. It is optimized for low-speed data transmission (up to 125kBaud

Тоесть это ft-can.
И 1050 его читать не будет.
И что скорость не 500,а 125

И уверен в том что люди не хотят сами задать вопрос гуглю.

Soldat6600
23.07.2016, 19:47
Дело не в этом хотят не хотят, в SSP CAN Ауди Q5 написано что скорость шин кан комфорт и инфотеймент 500 кб/с, но похоже только на рестайлинговых моделях, у меня до рестайл. Но все же получилось получить данные по обеим шинам, скорость 100 кбит. Но скетч который скинул lti1 так и не заработал как только не пытался.
Помогите пж. с отправкой этих данных в саму магнитоллу, хочу её домой забрать и дома разбираться. Откопал коды с мульти руля. За любую помощь буду весьма благодарен. Вот скетчь которым считывал.

#include <mcp_can.h>
#include <SPI.h>

long unsigned int rxId;
unsigned char len = 0;
unsigned char rxBuf[8];

MCP_CAN CAN0(10);

void setup()
{
Serial.begin(9600);
if(CAN0.begin(CAN_500KBPS) == CAN_OK)
{
Serial.println("can init ok!!");
}
else
{
Serial.println("Can init fail!!");
}

}

void loop()
{
CAN0.readMsgBuf(&len, rxBuf);
rxId = CAN0.getCanId();

Serial.print("ID: ");
Serial.print(rxId, HEX);
Serial.print(" Data: ");
for(int i = 0; i<len; i++) // Print each byte of the data
{
if(rxBuf[i] < 0x10) // If data byte is less than 0x10, add a leading zero
{
Serial.print("0");
}
Serial.print(rxBuf[i], HEX);
Serial.print(" ");
}
Serial.println();
}

armlive
23.07.2016, 23:00
Я же в сообщение файл с архивом прикрепил, у меня работало на ура.

Что то эта программа у меня не работает, вернее работает даже без ардуино))) какие-то данные меняет там сама, откуда она их берет, но точно несть от ардуино.
Центральным зомком что то не получается управлять, дворниками пожалуйста

T_r_D
24.07.2016, 06:23
Солдат - в программе есть пример скетча.
Тебе оттуда нужно формат сообщения взять.

Что завелись это хорошо, но у тебя ФТ кан, а читаешь ты микрухой для обычного кана, так что есть варианты того что ловятся не все сообщения

GASCHE
24.07.2016, 07:31
но у тебя ФТ канА можно поподробнее, "ФТ кан" это что?

Soldat6600
24.07.2016, 11:43
Пакет данных я получаю вот в таком формате:
ID: 42B Data: 13 01 01 21 00 00 0F 03
ID: 1A2 Data: A0 0F 8A FF 4A FF
ID: 663 Data: 60 14 00 07 00 8F 00 00
ID: 439 Data: 0B 01 1E 09 00 00 00 06
ID: 42B Data: 13 01 01 21 00 00 0F 03
ID: 433 Data: 19 01 01 01 02 00 40 00
ID: 439 Data: 0B 01 1E 09 00 00 00 06
ID: 663 Data: 60 14 00 07 00 8F 00 00
ID: 3C0 Data: E3 07 27 00
ID: 433 Data: 19 01 01 01 02 00 40 00
ID: 439 Data: 0B 01 1E 09 00 00 00 06
ID: 1A2 Data: A0 0F 8A FF 4A FF
ID: 663 Data: 60 14 00 07 00 8F 00 00
ID: 439 Data: 0B 01 1E 09 00 00 00 06
ID: 1A2 Data: A0 0F 8A FF 4A FF
ID: 67B Data: F8 FF 00 00 08 08 11 05
ID: 1A2 Data: A0 0F 8A FF 4A FF
ID: 663 Data: 60 14 00 07 00 8F 00 00
ID: 491 Data: A1 0F 8A FF 4A FF
ID: 433 Data: 19 01 01 01 02 00 40 00
ID: 663 Data: 60 14 00 07 00 8F 00 00
ID: 66D Data: E0 FF 00 00 00 00 00 02
ID: 5F0 Data: 90 00 64 09 00
ID: 433 Data: 19 01 01 01 02 00 40 00
Как его отправить? чтото у меня совсем не получается его отправить. Пробовал и с монитора порта отправить, и в коде вбивать,есть какой нибудь пример отправки чтобы хотябы было понимание? В ардуине я новичек.

T_r_D
24.07.2016, 11:46
Протокол такой не совсем совместимый с фаст кан.
Яж тебе в предидущем сообщении дал цитату из мануала в котором ясно указано что шина:
The TLE6254-3G is a fault tolerant (тоесть ФТ или FT).
Поэтому и написал что скорость 125, но не написал что 125 для этого типа максимум, но ты и сам нашёл правильную.
А tja1050 это обычная быстрая шина.

У меня на столе связка магнитола+дисплей+1050 заводилась очень криво. Тоесть из реальных 30 ID в шине было видно 5.

Твой выход перепаять 1050 на 1054 или 1055. Ну или на свой страх и риск.
Для этого идеально подходит платка переходника SOP14>DIP14 ну или 16- просто лишние выводы останутся на плате.
На платку трансивер, платка трансивером вниз на штыри MCP2515 которые параллельно разъёму кан на винтиках.

Отправка
unsigned char stmp[8] = {0, 1, 2, 3, 4, 5, 6, 7}; ЭТО ДАТА
CAN0.sendMsgBuf(0x00, 0, 8, stmp); это отправка в адрес 00. и длина пакета 8 байт
тоесть твои ID надо перевести в хекс
Вместо CAN0. надо подставить то название, с котором у тебя проинициализирован MCP

Soldat6600
24.07.2016, 11:51
Нашел как кодируется время)) Практическим путем мне удалось определить только лишь данные которые передаются часами, т.е. показания времени.
т.е. прочитав блок ID: 62F Data: 44 51 09 1C 08 Я отследил, что значения в тот момент равные 09 1С были равны текущему показанию времени 09:28.

Soldat6600
24.07.2016, 11:59
Есть у меня 1054 штук 10) Анет готовой схемки подключения? В даташите были некие не понятные нюансы подключения к MCP2515. Скинь пожалуйста если есть.

Soldat6600
24.07.2016, 12:44
Нашел схемкуhttp://www.mikrocontroller.net/topic/136356

T_r_D
24.07.2016, 20:12
Soldat6600
Норм схема.
Нюансов там ноль.
Вот только смотри не накосяч с сопротивлением резисторов.
Посмотри что стоит в твоих устройствах и поставь такие же.
Для тестов на столе они иногда вообще не нужны, а иногда на оборот.
Иногда приходится общий минус кинуть чтоб заработало.

olegik_ah
24.07.2016, 23:27
Протоколы разные!
А поэтому трансиверы разные!
Кан комфорт не будет работать с 2551, а будет только с тжа 1054, а он сам стоит 500р за корпус. поэтому и дорого.

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

Для тех кто сомневается что по кан комфорт идут данные о оборотах и так далее- смотрите в тему про ситроен и кан.
У****! Я знал, что это рано или поздно произойдет и кто-то мои слова подвердит:)
Предыстория такая, что я одному челу в этой теме советовал что трансивер с дешевого шилда с алиэкспресса прекрасно работал как с FT Can (fault tolerance - тот, что при обрыве одного из проводов может работать), так и с быстрым CAN. И при этом я попробовал еще несколько трансиверов на этом шилде перепаивать - и тоже все работало. В ответ получил сообщение - цитату:) Не стал спорить и переубеждать. А вот и нашелся пруф:)
У меня тоже ауди, но a5 - но это пофиг и a5 и q5 почти одинаковы.
В общем никаких пропусков пакетов не было как на инфотеймент шине (ft), так и на комфорт, так и на моторной.
Только скорость у ауди на инфотеймент не 125, а 100!!!
Поделку давно собрал и нареканий на нее нет.

olegik_ah
24.07.2016, 23:38
Пакет данных я получаю вот в таком формате:
Как его отправить? чтото у меня совсем не получается его отправить. Пробовал и с монитора порта отправить, и в коде вбивать,есть какой нибудь пример отправки чтобы хотябы было понимание? В ардуине я новичек.
В общем с отправкой наверняка разберешься. Только учти, скорость не 125, а 100!!! Возможно проблема в этом.
Но есть еще одна хитрость у VAG груп. Дело в том, что почти (обращаю внимание на "почти") все, что летает в CAN у VAG завернуто еще в некий VW Transport Protocol 2.0 (у наших с тобой тачек), а у более старых тачек в VW Transport Protocol 1.6.
Поэтому если тупо что-то в кан отправить - то реакции от машины не будет.
Этот транспорт протокол нужен по одной простой причине. Can в классике не подразумевает надежную доставку данных до адресата, т.к. шлются широковещательные пакеты. Типа кто-то отправил, кто-то другой (а может быть и несколько) блоков услышали. При этом один из блоков мог быть чем-то занят и пропустить пакет... Что-то может заглючить. А вот с оберткой в этот транспорт протокол все пакеты нумеруются и отправляются подтверждения о получении и готовность блоков к приемке данных. В общем много слов - самое подробное описание, найденное мною вот здесь:
https://jazdw.net/tp20
Удачи в ковырянии Ауди:) Не многие владельцы Ауди на это решаются:)
PS: здесь появляюсь редко. Ели есть конкретные вопросы по Ауди - то в личку.

armlive
25.07.2016, 12:34
В общем разобрался я с вот этой темой (http://www.canhack.org/board/viewtopic.php?t=1041) все снифет этой прогой CANHacker v.2.00.01,работает на 1.6.7, только все остальные библиотеки по CAN нужно удалить.
И вопрос, у меня перестала работать кнопка центрального замка в салоне, с ключа работает, мог я что-то перепрограммировать ? Что то я сомневаюсь.

lti1
25.07.2016, 13:13
В общем разобрался я с вот этой темой (http://www.canhack.org/board/viewtopic.php?t=1041) все снифет этой прогой CANHacker v.2.00.01,работает на 1.6.7, только все остальные библиотеки по CAN нужно удалить.Крайне нестабильно работает с ардуиной эта подпрограмма, не хватает скорости, возможны пропуски пакетов, по сравнения с can hacker.
И вопрос, у меня перестала работать кнопка центрального замка в салоне, с ключа работает, мог я что-то перепрограммировать ? Что то я сомневаюсь.У меня периодически похожее бывает на FF3, потом само проходит. В крайнем случае сбросьте клемму АКБ.

armlive
25.07.2016, 13:19
Крайне нестабильно работает с ардуиной эта подпрограмма, не хватает скорости, возможны пропуски пакетов, по сравнения с can hacker.
Тут согласен, скорости не хватает, но ту запустить не получилось.

У меня периодически похожее бывает на FF3, потом само проходит. В крайнем случае сбросьте клемму АКБ.
Все разобрался, сам тупанул, щупом продавил клемму, не было контакта.
Еще вопрос, у кого нибудь получилось управлять центральным замком?
Просто интересно, раз сторонние сигнализации управляют, значит можно. но вот те параметры что меняются, при посылке дают нулевой результат.
Коды бы посылаемые сигналкой бы снифануть

T_r_D
26.07.2016, 19:40
armlive а ты уверен что ЦЗ сам на этой шине, а то что меняется это не информационное сообщение?

armlive
26.07.2016, 22:46
armlive а ты уверен что ЦЗ сам на этой шине, а то что меняется это не информационное сообщение?
По схеме да, она по схеме (http://electroshemi.ru/publ/nissan/nissan_kashkaj/6-1-0-320) одна, да и в инструкции к сигнализации указывают эту колодку , а здесь (http://www.alarmtrade.ru/prog/Pandora_DXL_5000_3700_3500_3210_Statusy_Komandy_%2 82012-03-16%29.pdf) на девятой странице код 2315 старше 07 года без кейлес точки стоят, а у кода 2311 нет, что за коды эти.
Вот ещё очень интересная и познавательная штука, для многих. (http://zkpq.ca/)

lti1
26.07.2016, 23:15
По схеме да, она по схеме (http://electroshemi.ru/publ/nissan/nissan_kashkaj/6-1-0-320) одна, да и в инструкции к сигнализации указывают эту колодку , а здесь (http://www.alarmtrade.ru/prog/Pandora_DXL_5000_3700_3500_3210_Statusy_Komandy_%2 82012-03-16%29.pdf) на девятой странице код 2315 старше 07 года без кейлес точки стоят, а у кода 2311 нет, что за коды эти.Это код по которому сигнализация понимает с какой машиной обменивается данными.
Мне к стати удалось управлять замками дверей на FF3 через CAN, но как то немного криво, при блокировке срабатывает два раза подряд, а с разблокировкой всё ок.

armlive
26.07.2016, 23:18
Это код по которому сигнализация понимает с какой машиной обменивается данными.
Мне к стати удалось управлять замками дверей на FF3 через CAN, но как то немного криво, при блокировке срабатывает два раза подряд, а с разблокировкой всё ок.
Думал, ладно, к кнопкам подключусь в салоне, а они не работают если закрыть с ключа..... засада полная

armlive
27.07.2016, 14:36
Много информации для NISSAN по ID, PID собранные забугорными кулибинами. Подходит к большинству моделей

armlive
28.07.2016, 19:03
В общем у меня спортивный интерес появился купил я сигнализацию с Кан шиной буду пытать.
Что то вообще тишина.... Модуль сконфигурировал на компе, а в мониторе тишина хммм
Надо идти в машину подключать смотреть

armlive
28.07.2016, 22:06
Ну есть тут кто может мне объяснить?
В машине при подключении к CAN все работает, по мимо тех, что были в мониторе

ID DLC Data Period Count Comment
215 6 FF 30 FF 00 FF FF 24 2833
216 1 40 20 2878
280 8 01 32 AA 00 00 00 3F 40 20 2879
2DE 8 00 00 00 04 B0 00 0A 32 10 5747
355 7 00 00 00 00 00 FF 1C 40 1438
358 8 01 02 80 00 00 03 00 00 100 583
35D 8 00 03 00 00 00 00 00 00 100 582
5C5 8 80 00 E7 68 00 0C 00 00 100 576
60D 8 00 02 18 00 00 00 00 00 101 551
625 6 02 00 C4 0E 00 9B 101 576
682 1 00 0 1

Появляются две новых строчки

745 8 02 10 81 FF FF FF FF FF 451 7
765 8 02 50 81 FF FF FF FF FF 438 7

Но они опять ни чем не управляют.
Вот лог постановки и снятия.
самое интересное, что ардуино не видит тех команд, что посылает блок сигнализации, почему????
CAN_10KBPS, CAN_20KBPS, CAN_50KBPS, CAN_100KBPS, CAN_125KBPS, CAN_250KBPS, CAN_500KBPS, CAN_500KBPS,
CAN_1000KBPS, CAN_83K3BPS
Все проверил. Ну бред какой то, не может же он зашифрованный быть.

armlive
29.07.2016, 00:11
Наконец получилось считать с сигналки, оказалось у модуля MCP2515 нет сопротивления 120ом, как пишут китайцы блин, поставил сопротивление и принимаю и отправляю удачно.
Завтра буду пробовать в машину слать.

T_r_D
29.07.2016, 14:22
Наконец получилось считать с сигналки, оказалось у модуля MCP2515 нет сопротивления 120ом, как пишут китайцы блин, поставил сопротивление и принимаю и отправляю удачно.
Завтра буду пробовать в машину слать.

оно там перемычкой включается.
И посмотри что у тебя в нормальных модулях, может там совсем и не 120 ом стоит.
В ситроенах такая лафа не прокатывает. Как только ошибаешься с сопротивлением резисторов, то получаешь потери пакетов и крайне не стабильную работу.
тоже касается провода ответвления от шины.
Так что вам крупно повезло. :)

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

Можно и так конечно разобраться, но дольше.

armlive
29.07.2016, 16:09
оно там перемычкой включается.
И посмотри что у тебя в нормальных модулях, может там совсем и не 120 ом стоит.
В ситроенах такая лафа не прокатывает. Как только ошибаешься с сопротивлением резисторов, то получаешь потери пакетов и крайне не стабильную работу.
тоже касается провода ответвления от шины.
Так что вам крупно повезло. :)

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

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

Soldat6600
31.07.2016, 12:37
Ребята помогите пожалуйста, проблема с отправкой данных. Та же самая что и с 1050. Сейчас перепаял на 1054. Данные принимает на ура, на передавать не хочет, заливаю пример отправки, в терминале пишет "Can init ok" и всё. не каких больше данных. Пробовал подключать к машине, и без машины, ставил перемычку на резистор 120ом всё без толку. Может дадите тёплый совет.

Soldat6600
31.07.2016, 13:10
http://pccar.ru/attachment.php?attachmentid=44389&stc=1&d=1469954733

armlive
31.07.2016, 14:07
Ребята помогите пожалуйста, проблема с отправкой данных. Та же самая что и с 1050. Сейчас перепаял на 1054. Данные принимает на ура, на передавать не хочет, заливаю пример отправки, в терминале пишет "Can init ok" и всё. не каких больше данных. Пробовал подключать к машине, и без машины, ставил перемычку на резистор 120ом всё без толку. Может дадите тёплый совет.
А какие ты хочешь данные увидеть?
Там их не будет! Это только отправка.
Чтобы принимать и отправлять воспользуйся этим:

// demo: CAN-BUS Shield, receive data
#include <mcp_can.h>
#include <SPI.h>
long unsigned int rxId;
unsigned char len = 0;
unsigned char rxBuf[8];
long unsigned time = 0;
MCP_CAN CAN0(10); // Set CS to pin 10
unsigned char stmp[8] = {0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00};
unsigned char stmp1[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00};



void setup()
{
Serial.begin(115200);
CAN0.begin(CAN_500KBPS, MCP_8MHz); // init can bus : baudrate = 500k
pinMode(2, INPUT); // Setting pin 2 for /INT input
Serial.println("MCP2515 Library Receive Example...");
}

void loop()
{
if (!digitalRead(2)) // If pin 2 is low, read receive buffer
{
CAN0.readMsgBuf(&len, rxBuf); // Read data: len = data length, buf = data byte(s)
rxId = CAN0.getCanId(); // Get message ID
Serial.print("ID: ");
Serial.print(rxId, HEX);
Serial.print(" Data: ");

for (int i = 0; i < len; i++) // Print each byte of the data
{
if (rxBuf[i] < 0x10) // If data byte is less than 0x10, add a leading zero
{
Serial.print("0");
}
Serial.print(rxBuf[i], HEX);
Serial.print(" ");
}
Serial.println();
}
if (millis() - time >= 5000) {
// send data: id = 0x00, standrad flame, data len = 8, stmp: data buf
CAN0.sendMsgBuf(0x00, 0, 8, stmp);
delay(500); // send data per 100ms
CAN0.sendMsgBuf(0x745, 0, 8, stmp1);
time = millis();
}
}

Soldat6600
31.07.2016, 14:22
спасибо armlive все работает. Вчера снял показания с магнитоллы Q5 с включенным зажиганием и без. В машине если не включить зажигание мафон тухнет, а если включить работает всегда. Снял мафон + дисплей все подключил дома , и попробовал отправлять данные, очень долго мучался, каждые 30 минут вырубается, примерно через 3-4 часа такой работы он и вовсе перестает воспроизводить треки, говорит мол "включи зажигание я больше работать не буду".
И вот посылал я на него различные данные и смотрел как он будет на это реагировать, нашел много чего интересного. Нашел начало кодировки Vin номера авто, послав его несколько раз на мафон он заблокировался (включил защиту компонентов). продолжение Vin номера я не нашел. Чтобы мафон работал на столе без машины обязательно ему нужен его Vin номер или достаточно показать зажигание? Кто нибудь разбирался в такого рода вещах? как мне заставить его работать на столе?

Soldat6600
01.08.2016, 13:35
все данные зашифрованны в кан шине, и зажигание и Vin намер автомобиля.

xmetal
01.08.2016, 14:31
У фольцвагена Vin номер разбит на 3 части и отправляется с одного ID с периодичностью 200 миллисек, может быть у ауди так же. Зажигание с периодичностью 100 миллисек. Пробовал магнитоле отправлять зажигание постоянно, а не один раз?

Soldat6600
01.08.2016, 15:26
В Ауди так же

Soldat6600
01.08.2016, 15:33
У фольцвагена Vin номер разбит на 3 части и отправляется с одного ID с периодичностью 200 миллисек, может быть у ауди так же. Зажигание с периодичностью 100 миллисек. Пробовал магнитоле отправлять зажигание постоянно, а не один раз?
В Ауди так же, я пока что нашел только начало Vin номера, он находится под 3с0
с периодичностью 200 миллисекунд и постоянно меняется с прибавлением на одно значение. А до зажигания пока не нашел. Может знаеш под каким ID он находится? К стати VW Tiguan это копия Ауди Q3, один в один.

xmetal
01.08.2016, 15:45
Хмм, у меня vin не меняется и передается в открытом виде. Зажигание в VW: ID 2C3, длина сообщения: 1, данные: 0x10 - ключ вынут, 0x01 - ключ в положении 0, 0x07 - АСС, 0x0B - зажигание.

xmetal
01.08.2016, 16:01
Посмотрел еще раз сообщения с vin, меняется первый байт: 00, 01, 02. Это порядковый номер частей vin.

Soldat6600
01.08.2016, 16:45
Хмм, у меня vin не меняется и передается в открытом виде. Зажигание в VW: ID 2C3, длина сообщения: 1, данные: 0x10 - ключ вынут, 0x01 - ключ в положении 0, 0x07 - АСС, 0x0B - зажигание.

У меня Vin Id 3c0 а сообщение EE 0A 27 00, E8 0C 27 00, E9 0D 27 00, EA 0E 27 00, EB 0F 27 00. Както так, если зациклить это на дисплее появляется начало Vin номера WAU. Может быть такое что продолжение номера по другому адресу? Попробую дальше поковыряю, может чего найду. А ты где зажигание считал?

xmetal
01.08.2016, 17:16
Что-то я не понял про вин, ну да ладно.
А ты где зажигание считал?На разъеме магнитолы.

Вин номер у VW выглядит так, повторяется циклично:
65F 00 00 00 00 00 xx xx xx
65F 01 xx xx xx xx xx xx xx
65F 02 xx xx xx xx xx xx xx
xx- символы vin в ascii формате

T_r_D
02.08.2016, 19:18
Soldat6600 суров ты с платой под 1054 :)
вот так переходники выглядят.
Встают на пины к которым ты припаял провода кверхтормашками.

А магнитола заблокировалась потому что тайминг сообщений не соблюдаешь скорее всего.
Канхакером сними лог и им же крути.

http://g03.a.alicdn.com/kf/HTB1XmLBJXXXXXbcXVXXq6xXFXXXH/10pcs-LOT-SOP20-turn-DIP20-font-b-SOJ-b-font-SOL-QFN16-turn-DIP20-1-27MM.jpg

Gоlf
04.12.2016, 02:44
Народ, как думаете, через CAN-шину можно запустить "автономное отопление" на VW Golf 7 ?

У меня заводская автономка с радио пультом на 1км. Но пульт через пару железобетонных домов не пробивает до стоянки. По этому решил сделать запуск автономной отопительной системы с мобильного телефона. С ардуиной (https://duino.ru/) и GSM-модулем (https://duino.ru/SIM800L-GSM-modem-s-vneshnei-antennoi.html) работал много, так что тут проблем нет, а вот можно ли управлять автономкой на Golf7 по CAN-шине - не знаю. Более того, у Golf7 целых три кэн-шины на 100 и 500к/бит, так что не представляю к какой подключаться и где? (хотя вроде у них общий шлюз есть, и тогда получается что через какую бы линию ты ни послал команду - шлюз её пропустит на тот CAN-bas на котором сидит устройство принимающее эти команды?)

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

Lehas
04.12.2016, 10:16
Запускать конечно можно, сам подуль телестарта через каншину и запускает вебасту, которая тоже висит на каншине.

Gоlf
05.12.2016, 04:56
А на какой CAN-шине надо находиться чтобы услышать (прослушать) пакеты "телестарта" и где к нему лучше подключиться?

Кстати вначале темы несколько раз поднимался вопрос по поводу подключения двух CAN-модулей для создания фильтра сообщений (очевидно чтобы подменять или не пропускать какие-то сообщения). Нашёл довольно удобный и не дорогой модуль стразу c двумя CAN-входами и встроенным STM32 с частотой 72MHz (в 5 раз быстрей ардуины). Мне кажется просто идеально для шлюзов/фильтров, и всего за 30$.
http://ali.ski/bUCUs

http://i.imgur.com/eFlKoiK.png

Lehas
05.12.2016, 10:33
Похоже обманул, телестарт с отопителем соединен по w-bus. смотрю golf 09г.в.
а уже сам котел подключен по can к шине машины.

Gоlf
05.12.2016, 14:46
Я когда-то тоже слышал что у Webasto свой протокол общения.
Но с кнопкой автономки в салоне он наверно всё же через CAN-шину общается?
И даже если НЕТ, то наверно ещё остаётся возможность при звонке из дома в машину запускать автономку как по таймеру (ардуина запрашивает системное время, а потом отправляет с истеме настройки для автономки типа та должна включиться через 1 минуту, как будто я это в меню установил).
Или проще изучить протокол w-bus? Я его описания не нашёл, хотя нашёл несколько фотографий, где видно что там всего 1 провод (хотя рядом ещё какой-то KEY).
http://i.imgur.com/5MXQaux.jpg

Lehas
05.12.2016, 15:09
С климата точно по кану запускается.

cherkasoff
05.12.2016, 16:54
Нашёл довольно удобный и не дорогой модуль стразу c двумя CAN-входами и встроенным STM32 с частотой 72MHz (в 5 раз быстрей ардуины). Мне кажется просто идеально для шлюзов/фильтров, и всего за 30$.
А драйвера и среду разработки которая работает нормально в windows 7/10 вы для STM знаете? А то у меня лежит плата на таком чипе, но ничем запрограммировать я её не могу.

lti1
05.12.2016, 17:37
А драйвера и среду разработки которая работает нормально в windows 7/10 вы для STM знаете? А то у меня лежит плата на таком чипе, но ничем запрограммировать я её не могу.
Привет!
Давненько не заходил...
http://pccar.ru/showthread.php?p=371066#post371066
http://pccar.ru/showthread.php?p=371154#post371154
https://geektimes.ru/post/255534/

cherkasoff
05.12.2016, 20:21
Привет!
Давненько не заходил...
http://pccar.ru/showthread.php?p=371066#post371066
http://pccar.ru/showthread.php?p=371154#post371154
https://geektimes.ru/post/255534/
Спасибо, почитаю!
Не заходил потому что был не самый простой период жизни, да и роль писикара выполняла китайская башка. А тут у неё тач сдох, решил заглянуть, может быть нового чего придумали :big:

Gоlf
05.12.2016, 20:56
А я тоже вначале подсел на Ардуину, потом перешёл на SТM32, но несколько раз столкнулся с тем что сторонние проекты не компилируются, и я перескочил на NodeMCU (это та же ардуина, но скорость ещё выше - 80MHz, памяти целых 4Мб и главное - встроенный WiFi модуль, хотя есть и минус - только 1 аналоговый выход).

Baikan4ik
17.12.2016, 14:14
Добрый день. Пролистал достаточно тем про общение по CAN, некоторые сталкивались с подобной ситуацией. Имеется кан-шина комфорта, в ней передаются данные по климату и всем кнопкам "торпеды". Шилд - seeedstudio, мк - arduino uno r3 на Atmega16U2(не ch340g). Подключается это конструкция параллельно шине, т.е. в разрез. Данные все получаю, считываю, отлично обрабатываются и выводятся на nexus 7. Все как бы в шоколаде. НО, шилд постоянно зависает, помогает только резет ардуины. Время до зависания не постоянное, даже не могу понять от чего зависит. И зависает именно шилд,а не ардуино или мое приложение для планшета, ибо на ардуине висят еще рулевые резистивные кнопки, так они обрабатываются в это время и выполняется соответствующий им функционал на планшете. Библиотека кан используется от seeedstudio.

Читал про резистор, который есть и в шилде, и во всех блоках кан в машине. Резистор в шилде не удалял, так с ним изначально заработало и решил, что все будет ОК. Подскажите, на что нужно обратить внимание, может кто-то столкнулся и решил проблему?

Gоlf
19.12.2016, 21:16
C учётом того сколько в сети сообщений типа - "Купил два CAN-шилда, один работает, а через второй ничего не идёт", кто сказал что у вас не дефектная плата? Может питание больше даёте, она нагревается и перестаёт работать?

Baikan4ik
19.12.2016, 21:56
Вроде как нашлась причина...и ее я не рассматривал вообще, пока не начал все "творение" внимательно разглядывать. В usb-хаб, от которого питается и ардуино (т.о. ни перегрева, ни нехватки питания (под вопросом) не может быть в принципе + отсутствие скачков напряжения) был вставлен еще и WiFi-донгл с симкой (у меня нексус без LTE, поэтому использую донгл для доступа к сети). Как только из хаба убираю его, шилд работает стабильно. Но стоит вставить обратно, как внезапно зависает. Сначала думал, что как-то наводки от WiFi влияют, но сейчас этот же донгл стоит рядом, но питание через прикуриватель. И все работает. Для меня это странно...

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

ssssmileeee
26.01.2017, 16:55
Привет!
Кто-нибудь пробовал шилд CJMCU-2551 (https://ru.aliexpress.com/item/Free-Shipping-MCP2551-high-speed-CAN-protocol-controller-bus-interface-module/32473879548.html) на MCP2551?

Он будет работать с низкоскоростной шиной (125кб/с) и ардуино?

lti1
26.01.2017, 17:02
Привет!
Кто-нибудь пробовал шилд CJMCU-2551 (https://ru.aliexpress.com/item/Free-Shipping-MCP2551-high-speed-CAN-protocol-controller-bus-interface-module/32473879548.html) на MCP2551?

Он будет работать с низкоскоростной шиной (125кб/с) и ардуино?
Не будет.
Нужен такой: https://duino.ru/CAN-BUS-Shield.html

Baikan4ik
13.02.2017, 11:22
доброго дня всем) В машине стоит ардуина с кан-шилдом от Seedstudio или как-то так. Подключено к шине комфорта, т.е. управляю и климатом, и всеми кнопками торпеды. С этим вопросов нет. Проблема в следующем. При изменении настроек климат-контроля посылается определенный пакет, успешно обрабатывается, но в том случае, когда шилд активный. Возникает ситуация: при выключении двигателя климат тоже отключается и шилд успеват поймать пакет с этой информацией, но при старте двигателя до момента подачи питания на usb хаб проходит порядка секунды и пакет с данными, что климат включен, не перехватывается ардуиной и в памяти хранится информация о выключенном состоянии климата.
Думал, что подключив постоянное внешнее питания к ардуино, решится проблема, но нет. И шилд, и ардуино во включенном состоянии, горят диоды, о том, что питание подается, но сам шилд данные кан-шины не перехватывает, пока на usb-входе не появится сигнал, что хаб подключен или какой-то другой сигнал. В общем, как только хаб включается, то и шилд начинает обрабатывать поступающие данные.

Вопрос, как сделать, чтобы шилд все время пока подключено внешнее питание, обрабатывал поступающие пакеты? Может внешние 5в замкнуть на +5в usb входа? или какие-то другие манипуляции? Иначе весь смысл внешнего питания теряется,к сожалению

Lehas
13.02.2017, 11:57
посмотри здесь:
http://atroshin.ru/ru/content/avtomaticheskaya-perezagruzka-arduino-pri-podklyuchenii-terminala

Baikan4ik
13.02.2017, 12:31
посмотри здесь:
http://atroshin.ru/ru/content/avtomaticheskaya-perezagruzka-arduino-pri-podklyuchenii-terminala

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

Попробую запитать 5в USB входа, отключив внешнее питание. МК автоматически выбирает источник питания, скорее всего при отсутствии питания на usb входе, не функциониют и ICSP пины, нужные для шилда. Вечером проверю

Baikan4ik
15.02.2017, 09:16
Не стал огород городить, снова номинал выхода БП настраивать. Решил проблему софтово. В моем случае перехватываю пакет с событием выключения климата кнопкой, то есть когда сам человек отключил его, а не БК

randy
26.02.2017, 14:10
Я ещё не волшебник и т. д.
Собрал такую этажерку
http://www.pccar.ru/attachment.php?attachmentid=46845&stc=1&d=1488103254
и первые результаты
http://www.pccar.ru/attachment.php?attachmentid=46846&stc=1&d=1488103254
из которых, например, видно, что мой стандарт OBD - EOBD,
а обороты - 649.
Галочка в первой строке означает, что в этой строке стрелками будет переключаться отображаемый PID.
По мере осмысления и наведения порядка буду делиться инфой.

kvazik
16.03.2017, 20:10
всем привет оживлю тему.. у кого получилось считать данный с кэна ауди (а4-а5-ку5 2008-2011гг) там у них всё одинаково..

какие шилды использовали? я на стадии закупки компонентов..

vasilij_c
17.03.2017, 17:13
а6 2007г.
mcp2515_can

ghans
19.03.2017, 00:40
Touareg 2012. Вот этот шилд http://wiki.seeed.cc/CAN-BUS_Shield_V1.2

купить CAN-BUS (https://duino.ru/CAN-BUS-Shield.html)

demtro
05.04.2017, 10:27
Может кто поправить библиотеку на работу со скоростью 33kbps?

TomichSPb
10.04.2017, 23:15
Доброго времени суток, подскажите пожалуйста, как подключить этот шилд к рено сценик rx4 2001года при том, что в этой машине нет can шины, только K-line?
Хочу установить приборку для подключения которой нужна кан шина...

ghans
12.11.2017, 09:30
Добрый день всем. Столкнулся с такой проблемой.
Мне нужно, чтобы ардуинка засыпала сама, когда нет активности по CAN шине и потом сама просыпалась, когда активность появляется.
Проблема в том, что прерывание по кан шине ардуинку не будит. По другим прерываниям просыпаемся нормально, а по шине нет. Есть где что то почитать по этой теме?

xmetal
13.11.2017, 17:44
Проблема в том, что прерывание по кан шине ардуинку не будит. По другим прерываниям просыпаемся нормально, а по шине нет. Есть где что то почитать по этой теме?а кто будит ардуину по кан прерыванию, mcp2515?

ghans
14.11.2017, 23:07
Как я понимаю, да.
Вот эта железка (http://www.hobbytronics.co.uk/leonardo-canbus)
Вот схема http://www.hobbytronics.co.uk/datasheets/ht/leonardo-can-bus-100.pdf

xmetal
15.11.2017, 12:55
Должно просыпаться по низкому уровню INT mcp2515.


void test()
{
detachInterrupt(4);
}

настройки в setup()
pinMode(7, INPUT_PULLUP);
attachInterrupt (4, test, LOW);

а сама mcp2515 не спит?

ghans
15.11.2017, 22:01
Вроде, делал так. Но еще раз попробую....

Скорее всего засыпает mcp2515, ибо вся железка в спящем режиме с тремя портами, подтянутыми к VCC жрёт всего около 4 mA.
Нарыл русскоязычное описание mcp 2515. http://microsin.net/adminstuff/hardware/mcp2515-stand-alone-can-controller-with-spi-interface.html
Видимо, придется напрямую работать с регистрами CANINTE/CANITF, а, значит, курочить библиотеку... :shok:

xmetal
15.11.2017, 23:09
Сама 2515 не засыпает. Для доступа к регистрам есть в библиотеке функции
INT8U mcp2515_readRegister(const INT8U address);
void mcp2515_setRegister(const INT8U address, register const INT8U value);
и еще вот эта, управление режимами
INT8U mcp2515_setCANCTRL_Mode(const INT8U newmode);
они не доступны извне, их нужно из приват перенести в паблик.
Когда 2515 выходит из сна устанавливается режим только прослушивания, нужно переводить в нормальный режим. У меня по другому сделано, Can трансивер выводит из сна ардуину, а ардуино будит 2515 и переводит Can трансивер в нормальный режим.

ghans
21.11.2017, 21:51
Нашёл на магнитоле + 5в, который появляется при активности на шине и решил наплевать на ковыряние регистров. Тупо поставил прерывание на появление RISING на пине SLA.

P.S. Твоя прога у меня снова глючит. Вылетает при выборе порта. Не помнишь, как мы с ней справились в прошлый раз?

xmetal
21.11.2017, 22:36
Я тогда подправил прогу и она стала сама сбрасывать ардуино при выбор порта. Может ты старую используешь?

civil-zz
24.11.2017, 16:18
Заинтересовался недавно микроконтроллерами, и, т.к. моргать диодами и опрашивать датчики надоело тут же, то в качестве упражнения по изучению Arduino и C решил собрать что-то для автомобиля (своего Ford Focus 2), а именно - с работой с CAN. Просто получать и отображать данные было бы слишком просто, а процесс перепрошивки блоков — наоборот, слишком громоздко, да и не думаю, что с моим нулевым опытом, получилось бы все упихнуть в ардуину, поэтому решил сделать устройство для прошивки ключей - по объему задачи как раз.

Собственно, использовал как раз сабж - CAN Shield (https://duino.ru/CAN-BUS-Shield.html)1.2 на MCP2515. Плюс еще SD Shield для хранения нужных файлов и LCD Keypad Shield (https://duino.ru/LCD-Shield-Arduino.html) для экрана и кнопок. Этажерка, конечно, вышла, знатная)))

Видео, как все работает (почему-то видео, если его вставить сюда, не работает, поэтому ссылкой):

https://youtu.be/_6MOT5jQ94o

elik745i
29.01.2018, 12:25
Заинтересовался недавно микроконтроллерами, и, т.к. моргать диодами и опрашивать датчики надоело тут же, то в качестве упражнения по изучению Arduino и C решил собрать что-то для автомобиля (своего Ford Focus 2), а именно - с работой с CAN. Просто получать и отображать данные было бы слишком просто, а процесс перепрошивки блоков — наоборот, слишком громоздко, да и не думаю, что с моим нулевым опытом, получилось бы все упихнуть в ардуину, поэтому решил сделать устройство для прошивки ключей - по объему задачи как раз.

Собственно, использовал как раз сабж - CAN Shield (https://duino.ru/CAN-BUS-Shield.html)1.2 на MCP2515. Плюс еще SD Shield для хранения нужных файлов и LCD Keypad Shield (https://duino.ru/LCD-Shield-Arduino.html) для экрана и кнопок. Этажерка, конечно, вышла, знатная)))

Видео, как все работает (почему-то видео, если его вставить сюда, не работает, поэтому ссылкой):

https://youtu.be/_6MOT5jQ94o]

Интересная штука!

elik745i
29.01.2018, 12:29
Спрошу тут мож кто поможет советом:

Задача не тривиальная, нудно всего лишь замутить автостарт на кукурузнике. Можно через КАН шину заводить авто?

Скажем связка GSM модуль (https://duino.ru/SIM800L-GSM-modem.html) + Ардуина (https://duino.ru/arduino.html) + MCP2515 (https://duino.ru/CAN-BUS-Shield.html).

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

randy
20.02.2018, 13:34
Спрошу тут мож кто поможет советом:

Задача не тривиальная, нудно всего лишь замутить автостарт на кукурузнике. Можно через КАН шину заводить авто?

Скажем связка GSM модуль (https://duino.ru/SIM800L-GSM-modem.html) + Ардуина (https://duino.ru/arduino.html) + MCP2515 (https://duino.ru/CAN-BUS-Shield.html).

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

Если охранка такая, что её можно обойти Ардуинкой, то на помойку такую охранку. Да и зажигание и стартер по CAN не включаются. Автозапуск по другому делается.

elik745i
21.02.2018, 00:32
Если охранка такая, что её можно обойти Ардуинкой, то на помойку такую охранку. Да и зажигание и стартер по CAN не включаются. Автозапуск по другому делается.
Дуиной и не такое можно сделать, у меня вебсервер умного дома на ней висит дома ))) да хоть пентиумом, просто поинтересовался...
Родную обходят по кан шине, точнее дверь открывают, а далее прописывают ключ и увозят, думаю может как то автоматизировать и на базе техники этой не ключ прописать а отменить иммоб, типа отменить охранку при закрытых дверях, далее подать команду на автозавод, а при открытии родным ключем либо попытке открыть дверь без ключа (подачи команды на открытие), вернуть настройки обратно...либо заглушить, или разрешить поехать.....что то типа того... Думаю пока, чесно говоря на уровне идеи пока...

ПыСы не нравится мне идея с обходчиками, дорогие они, да и иногда нужно ключик родной прятать в торпедо, что не есть гуд

T_r_D
21.02.2018, 01:33
Не у всех зажигание включается через силовые цепи. У современных машин или через КАН или через блок управления.

Но это не суть. Это обойти проще всего.
А вот что делать с иммобилайзером?

Код иммо считать можно выпаяв ПЗУ из мозгов, а код завода где брать? Там шифровка состоит из двух этих составляющих.

Если метку из ключа оставлять в машине, то это только на радость угоньщику.

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

Но это как раз обходится при помощи ардуины или стм свободно.

Так что нужно решить проблему только с иммо.

А про хватит ли ардуины, скорее да чем нет.
Она конечно из за того, что нет возможности как в СТМ аппаратно фильтровать траффик по маскам/id теряет пакеты, но думаю справится.

randy
21.02.2018, 14:18
Спорить не буду, схему ТЛК200 не знаю. Я так думаю, это надо посмотреть на форуме Тойоты - как там сигу с автозапуском подключают. А современные сиги по КАН в том числе и иммо обходят (На самом деле не обходят, а имитируют присутствие ключа).


Она конечно из за того, что нет возможности как в СТМ аппаратно фильтровать траффик по маскам/id
Чегойто, Вы Ардуину прямо к КАН подключаете? Я подключал через Shield на MCP 2515, а она имеет аппаратные фильты.

elik745i
21.02.2018, 21:40
Спорить не буду, схему ТЛК200 не знаю. Я так думаю, это надо посмотреть на форуме Тойоты - как там сигу с автозапуском подключают. А современные сиги по КАН в том числе и иммо обходят (На самом деле не обходят, а имитируют присутствие ключа).

Чегойто, Вы Ардуину прямо к КАН подключаете? Я подключал через Shield на MCP 2515, а она имеет аппаратные фильты.
Заказал шилд копеешный, он еще не пришел, да наверное большинство через 2515 подключает, или аналоги....Не думаю, что напрямую вообще вариант....

Да тут вообще вопрос не по тойоту, думаю сделать универсальный кан автозаводчик. Обход с иммитацией - идея!

elik745i
21.02.2018, 21:46
Не у всех зажигание включается через силовые цепи. У современных машин или через КАН или через блок управления.

Но это не суть. Это обойти проще всего.
А вот что делать с иммобилайзером?

Код иммо считать можно выпаяв ПЗУ из мозгов, а код завода где брать? Там шифровка состоит из двух этих составляющих.

Если метку из ключа оставлять в машине, то это только на радость угоньщику.

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

Но это как раз обходится при помощи ардуины или стм свободно.

Так что нужно решить проблему только с иммо.

А про хватит ли ардуины, скорее да чем нет.
Она конечно из за того, что нет возможности как в СТМ аппаратно фильтровать траффик по маскам/id теряет пакеты, но думаю справится.

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

T_r_D
21.02.2018, 23:33
randy Отвечаю. :)
Понятно что ты через отдельный контроллер работаешь с кан в случае ардуины, но давай всётаки сравним.

Сколько у 2515 есть фильтров? По-моему 12 или 6 29 битных.
Много этого или мало, решать вам, а мне в своё время не хватило.
У СТМ 56 фильтров для 11 битных пакетов.

У 2515 два буфера, у СТМ 3.

В случае с 2515 это лишний внешний корпус который что-то да кушает.

Ну и самое главное цена/качество.
У СТМ больше и скорости и больше аппаратно интегрированно в него, а по цене дешевле ардуины уже.

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

Подведу некий итог.
У меня в машине, в данный момент живёт планшет на котором софтина самописная которая показывает данные за место штатного БК, вместо которого планшет встал, и интерфейс магнитолы. Плюс ловит нажатие кнопок. Питанием управляет вторая ардуина.
Все данные текут через кан, связка ардуино нано+мцп.
В принципе всё работает, но нажатие кнопок руля иногда пропускает.

Связка работает уже более двух лет и заглючила только один раз.

По поводу эмуляции иммобилайзера посредством отправки сообщений напрямую в КАН- писал выше!
нужно два кода:
Первый это ключь иммобилайзера, его можно выдернуть из микросхемы памяти блока управления.
Второй это код ЗАВОДА (manufacture code) который лежит в зашифрованном виде и ни один завод по доброй воле его не отдаст ибо будет скомпрометирована целая линейка моделей со схожим иммобилайзером.
Без этого нельзя отправлять ответы на запросы от блока управления.
Тоесть нельзя будет их дешифровывать чтоб осмысленно отвечать.

Знаете как достать коды завода к своей машине?
Нет проблем сделать обходчик!
А если нет, то только класть сам чип (RFID метку)

Обходчики работают пока одним только способом- родная метка в корпусе обходчика.
Есть продвижения у старлайна по без ключевой обходке, но только на те модели, для которых удалось выудить (а скорее украсть) у производителя код производителя.
Да, безусловно, можно взять коробку сваренную из стали тройки (или чего покруче), запихать туда метку обмотав проводом-антенной, поставить реле чтоб этот провод размыкала и туда же запихать контроллер, который будет включать это реле на время запуска.
Даже подскажу извратный вариант- заводить будем со штатного брелка!
Нажал на кнопку закрытия в течении 10 секунд, машина завелась, ну или на любую другую...
Тоесть контроллер поймал код штатной кнопки по сети кан, посчитал время её нажатия и включил реле которое сделало обход иммо.
Далее уже хоть реле, хоть командами по шине заводим машину.
Далее если в КАНЕ происходит какая-то гадость типа открытия двери, повышения оборотов, страгивания с места машины, или чего угодно, то реле выключается, а машина глушится.

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

randy
22.02.2018, 11:51
Обходчики, не требующие присуствия ключа в авто по ходу именно тек и работают...нет?
Именно так. Добавлю, что продвинутые обходчики активируются цифровым сигналом. А продвинутые сигнализации имеют встроенный обходчик, и именно по CAN.

randy
22.02.2018, 11:55
randy Отвечаю. :)
...У СТМ больше и скорости и больше аппаратно ...
Зря столько писал. Я знаю, что СТМ круче. Просто я начинал с полного 0-ля, и первое, что попалось на глаза для работы с КАН - Ардуина. Мне по моим хотелкам пока хватает.

randy
22.02.2018, 12:17
По поводу эмуляции иммобилайзера посредством отправки сообщений напрямую в КАН- писал выше!
нужно два кода:
Первый это ключь иммобилайзера, его можно выдернуть из микросхемы памяти блока управления.
Второй это код ЗАВОДА (manufacture code) который лежит в зашифрованном виде и ни один завод по доброй воле его не отдаст ибо будет скомпрометирована целая линейка моделей со схожим иммобилайзером.
Без этого нельзя отправлять ответы на запросы от блока управления.
Тоесть нельзя будет их дешифровывать чтоб осмысленно отвечать.

Я таких не знаю, но спорить не буду.


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

Нет, они вылавливают не код производителя, а код ключа (метки). При установке такого обходчика производится "обучение" родному ключу. И да, возможно только те модели, которые смогли перехватить-расшифровать (но их очень много).
Причем эту технологию они купили (украли) у Fortin. Который у меня и стоит.

randy
22.02.2018, 12:24
А ещё не забываем о системах бесключевого доступа, когда пуск двигателя производится кнопкой и только в присутствии транспондера. Я эту тему не изучал, но и такие системы обходят. Я говорю, тут нужно конкретно по каждому авто смотреть.

T_r_D
22.02.2018, 18:09
randy код метки есть в памяти ЭБУ.
Можете сами поискать по просторам сети эти данные, они есть для многих концернов и моделей(имею в виду положение этого кода в прошивке чтоб его найти).
Но это только часть кода. Короче там алгоритм манчестеровский. Кому интересно- посмотрите как это работает.
В принципе да, много чего уже сломано, но видимо не для коммерчиского использования как в ситуации со старлайном.
Но тогда опять же вопрос- как это узнать?

А по поводу что не знаете- почитать про иммо и станет всё ясно про пересылку и кодирование. Я и сам в тонкости не вникал, но поверхностно пролистал. А чтоб вникнуть в тонкости там надо быть с протоколами шифрования знакомым не по наслышке. Точно не мой вариант.

Запуск с метки ключа или карты- разницы нет. Смысл шифра там одинаков.

И я тоже начинал с полного 0 по микроконтроллерам, поскольку лет 15 электроники прошли для меня мимо, а последний момент, когда я ей до этого занимался был ознаменован выпуском 1533 серии русских микросхем в общий доступ. В общем времена спектрумов и АОНов на z80.

И начал я тоже с дуины, поэтому и написал что стоит и работает и какие баги есть.

А по итогу- пока нет второго куска кода сэмулировать в КАН не выйдет.
Прошить метку и замотать в антенну да- не вопрос, а вот аппаратного взлома нет к сожалению. Иначе всё было бы очень просто. Хотя у угонщиков эти прошивалки есть- значет возможно.

Если у кого есть какая доп инфа- делитесь :) Я тоже свой цинтромон хочу научить заводиться без метки иммо в антенне.

А про СТМ- проще уже с него начинать чем мучить умирающию атмелу. CUBEMX это очень упростил.

randy
23.02.2018, 11:10
А по поводу что не знаете- почитать про иммо и станет всё ясно про пересылку и кодирование.Да мне не надо.


А по итогу- пока нет второго куска кода сэмулировать в КАН не выйдет.
Прошить метку и замотать в антенну да- не вопрос, а вот аппаратного взлома нет к сожалению. Иначе всё было бы очень просто. Хотя у угонщиков эти прошивалки есть- значет возможно.

У Fortin же вышло! У меня стоит бесключевой (и безметочный) обходчик. Правда, он подключается к специальному проводу от иммобилайзера к ЭБУ. Т.е. если по КАН - там другой алгоритм?


CUBEMX это очень упростил.Посмотрю на досуге

Paziy
19.03.2018, 21:03
Ребят, дайте совет по железу. Планируется бортовик, к нему прикрутить шилды приемопередатчиков 433 MHz, для шлагбаумов ибо зоопарк брелков уже бесит, сюда же хочется управление частью оборудования и по кану и аналогом, и в дальнейшем прикрутить еще сенсорный дисплей какой-нибудь, видеорегистратор с распознаванием номеров и сделать навигацию, Wi-Fi и GSM. Что закупать, ардуину, стм или Малинкообразное что-то или комбинировать все это? Короче что взять? Я понимаю, что конкретики мало написал, но пока, что так. Вы если бы строили что-то подобное, расширяемое, или если бы просто о чем-то таком мечтали, чтобы взяли себе?

(vS)
20.03.2018, 14:32
какой дисплей - 29" ?
аналоговое оборудовние, сколько? 100500 ?!
видеорегистратор с распознованием номеров, серьезно? как минимум - новая малина

Paziy
20.03.2018, 20:52
какой дисплей - 29" ?
аналоговое оборудовние, сколько? 100500 ?!
видеорегистратор с распознованием номеров, серьезно? как минимум - новая малина

Ну не 29" конечно где-нибудь около 7" вполне достаточно будет, да и 100500 аналогов многовато, это с прицепом ездать придется))) Если вы говорите как минимум малина, то что было бы в идеале так чтоб еще с хорошим запасом ресурса, надежности и большой кучей вариантов шилдов или каких-то других возможностей расширений для подлкючения? Raspberry Pi 3 Model B+, khadas vim2, BeagleBone Black, Odroid XU4, x86, x64 или дождаться старта продаж Odroid-N1 (правда до мая-июня далековато и к тому моменту уже хочется что-то иметь)? Мне бы понять только что взять за базу. Нужен кан, либо в штате либо подключаемый шилдом. Делаться это все будет на за один раз, а постепенно.
Сейчас первостепенно шилдами или в шате интересует наличие канбус, 433MHZ, управление парой-тройкой аналоговых кнопок, вайфай чтоб при подключении к дружественной (своей точке) сливать инфу о поездке и датчиках по вафле, потом когда-нибудь уже прицепить камеру (может даже 4K), сделать видеорегистратор с распознаванием, GPS, подцепить GSM шилд и сливать все на свой сервер в вебе, заморочиться с медиа.

sirota
20.03.2018, 21:06
сделать видеорегистратор с распознаванием

Ну насчет видео регистратора не знаю(наврятли), но на винде есть давно...тестил одну бесплатную прожку.

YP5ZxY04KZs

прицепить камеру (может даже 4K), сделать видеорегистратор с распознаванием, GPS, подцепить GSM шилд и сливать все на свой сервер в вебе, заморочиться с медиа.

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

Paziy
20.03.2018, 23:43
Ну насчет видео регистратора не знаю(наврятли), но на винде есть давно...тестил одну бесплатную прожку.

YP5ZxY04KZs



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

Paziy
23.03.2018, 20:09
Может быть у кого-нибудь еще мнения есть или кто может подсказать где еще можно почитать/спросить чтобы определится?

T_r_D
26.03.2018, 18:30
Может быть у кого-нибудь еще мнения есть или кто может подсказать где еще можно почитать/спросить чтобы определится?

Ты для себя сначала определись.
Ардуина (https://duino.ru/arduino.html) или СТМ (https://duino.ru/maple-mini-na-kontrollere-stm32-cortex-m3-.html) это всего лишь микроконтроллеры.
Они не предназначены для вывода карт GPS и так далее.
Максимум что можно на них сотворить, так это мостик между машиной и планшетом/компьютером.
Как совсем максимум- сделать БК с норм дисплеем (это уже стм).

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

Распбери эту проблему не решит- очень геморно там запускать и навигацию и плеера разные...

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

Опять же учти что у СТМ (кроме 105 серии и совсем дорогих) нет возможности одновременной работы USB и CAN. Так что туда ещё потребуется как минимум UART<>USB конвертер ну и микросхема CAN трансивера (tja1040, 1050, 1054 от шины зависит).
Или блютус/wi-fi модуль вместо UART<>USB.

Paziy
27.03.2018, 21:03
Ты для себя сначала определись.
Ардуина (https://duino.ru/arduino.html) или СТМ (https://duino.ru/maple-mini-na-kontrollere-stm32-cortex-m3-.html) это всего лишь микроконтроллеры.
Они не предназначены для вывода карт GPS и так далее.
Максимум что можно на них сотворить, так это мостик между машиной и планшетом/компьютером.
Как совсем максимум- сделать БК с норм дисплеем (это уже стм).

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

Распбери эту проблему не решит- очень геморно там запускать и навигацию и плеера разные...

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

Опять же учти что у СТМ (кроме 105 серии и совсем дорогих) нет возможности одновременной работы USB и CAN. Так что туда ещё потребуется как минимум UART<>USB конвертер ну и микросхема CAN трансивера (tja1040, 1050, 1054 от шины зависит).
Или блютус/wi-fi модуль вместо UART<>USB.

Это был очень полезный и продуктивный совет которого я и ждал. Огромное спасибо! :read2: :good:

Misha2066
20.09.2018, 16:29
Приветствую всех!
Автомобиль Nissan Murano Z51 в комплектации с двумя матричными монохромными дисплеями для климата и магнитолы. Климат и штатная магнитола общаются по can-шине со своими дисплеями, каждое устройство со своим.
Есть цель -- заменить это безобразие на Андроид-девайс и отображать на его экране показания климата и штатной магнитолы.
Последовательность действий видится следующей:
1. Считать пакеты в can-шине при нажатии и отображении на дисплеях соответствующих кнопок при помощи связки Ардуино+кан-шилд.
2. Сделать некое устройство (скорее всего на той же Ардуине), которое формировало видеосигнал при поступлении соответствующего пакета.
3. Ввести сформированный видео сигнал в Андроид-девайс.

Буду признателен за любую информацию в этом направлении.

T_r_D
21.09.2018, 12:37
Первый пункт более или менее правильный, а остальные это слова человека который ни чего не понимает в данной теме.
На андроид устройстве должен быть самописный интерфейс который будет что-то отображать при поступлении каких либо команд от микроконтроллера. Да и вообще микроконтроллером можно ни чего не делать- пришёл пакет, переправили на андроид, а там дальше обрабатываем.

Да и с пакетами не всё так просто. Скорее всего дисплеи формируют какое-то подтверждение или ответ.

Да и для начала надо узнать что за CAN шина. HS, FT?

Misha2066
22.09.2018, 18:58
Да и с пакетами не всё так просто. Скорее всего дисплеи формируют какое-то подтверждение или ответ.
И как это можно узнать? Документации никакой не нашел.

Да и для начала надо узнать что за CAN шина. HS, FT?
Если подключаться непосредственно на контакты CAN самого блока (климата или магнитолы), то скорее всего будет та шина которая нужна.

T_r_D
23.09.2018, 20:48
А какая шина нужна? :)
В Ситроенах салонная шина FT, у шкоды HS.

А узнать что идёт в шине можно только после того, как туда залезешь, перед этим узнав какой тип шины и её скорость.
А от типа шины будет зависеть тип CAN трансивера.

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

Ну и третий способ, он доступен вообще избранным :)
Подключить анализатор логический и сразу узнать и тип шины и её скорость.

По поводу что куда и откуда идёт.
Сначала цепляемся к шине и пытаемся разобраться что там к чему.
Скорее всего будут найдены все кнопки, температуры и лампочки.
С пакетами сообщений может быть сложнее, но до этого ещё надо дойти...
Есть всякие гадские ID в которых есть вяло меняющиеся информация и всякие "фичи" в самих дисплеях.
Но до этого тоже надо дойти :)
По первой проще анализировать компом, а чтоб понимать что куда идёт нужно спаять на STM32 простой бридж с возможностью фильтрации и отображением всего этого на дисплей.
Я собирал такой бридж на STM32F105 и OLED дисплее мелком. С первого входа пришедшие ID забивались в лист и по этому листу можно было перемещаться двумя кнопочками, а третий блокировать прохождение данного ID с первого на второй вход, со второго на первый пакеты пролетали без каких либо обработок. Если требовалось отфильтровать пакет с другой стороны, то просто устройство переворачивалось.

Да и вообще- паять надо сразу на STM всё...
И не пугаться того что у той же 103 серии нельзя одновременно работать с CAN и USB. Это обходится переходником UART<>USB.
Ну чтоб к планшету цепляться.
Но зато получаешь нормальную скорость, ни каких шилдов, просто микросхему трансивера CAN дешёвую, а если у тебя FT шина, то микросхему на шилде ардуины всё равно перепаивать придётся.

ganson
23.09.2018, 22:20
Здравствуйте. Прошу прощения за ламерские вопросы, Arduino nano неделя как в руках, в написании программ - 0. Хочу сделать управление не заводской магнитолой с руля ( CAN ). Скетч , человека который это делал , пытаюсь подправить под свою шину. Изначально написано для посылок - ID + data 1 байт. У меня посылки - ID + data 4-е байта. Как не правлю под четыре байта - либо ошибка, либо принимает только первый.
Вот кусок

void can()
{
if (mcp2515.readMessage(&canMsg) == MCP2515::ERROR_OK) {
switch(canMsg.can_id & 0x5FF) {

case 0x5c1: // кнопки
if(key != canMsg.data[0]) {
switch(canMsg.data[0]) {
case 00: // Unpress (All)
switch(key) {
case 6: // Unpress Vol Up
Serial.println("Unpress Vol Up");
digitalWrite(vol_up, LOW);
break;
case 7: // Unpress Vol Down
Serial.println("Unpress Vol Down");
digitalWrite(vol_down, LOW);
break;
case 2: // Unpress Next
Serial.println("Unpress Next");
digitalWrite(next, LOW);
break;
case 3: // Unpress Prev
Serial.println("Unpress Prev");
digitalWrite(prev, LOW);
break;
case 0x1a: // Unpress SRC
Serial.println("Unpress SRC");
digitalWrite(sourse, LOW);
break;
case 0x2b: // Unpress Mute
Serial.println("Unpress Mute");
digitalWrite(mute, LOW);
break;
}
break;
case 6: // Press Vol Up
Serial.println("Press Vol Up");
digitalWrite(vol_up, HIGH);
break;
case 7: // Press Vol Down
Serial.println("Press Vol Down");
digitalWrite(vol_down, HIGH);
break;
case 2: // Press Next
Serial.println("Press Next");
digitalWrite(next, HIGH);
break;
case 3: // Press Prev
Serial.println("Press Prev");
digitalWrite(prev, HIGH);
break;
case 0x1a: // Press SRC
Serial.println("Press SRC");
digitalWrite(sourse, HIGH);
break;
case 0x2b: // Press Mute
Serial.println("Press Mute");
digitalWrite(mute, HIGH);
break;
}
key = canMsg.data[0];
}
break;

break;
}
}
}

У меня ID - 32A, ничего не нажато - 02 00 00 00, + 02 10 00 00, - 02 20 00 00, > 02 40 00 00, < 02 80 00 00, up 02 01 00 00, dn 02 02 00 00.
Как написать , что бы arduino видела все четыре байта?

T_r_D
24.09.2018, 12:38
void can()
{
if (mcp2515.readMessage(&canMsg) == MCP2515::ERROR_OK) {
If (canMsg.can_id = 0x32A) {
If (canMsg.data[1] = 0x10) {нажато +}
}

И так далее
Или через switch:
switch(canMsg.data[1]) {
case 0x20:
плюс
break;

}

ganson
24.09.2018, 19:47
T_r_D, спасибо!!! (canMsg.data[1]), прописал вторые, меняющиеся байты и всё ок.
И вопросик так, для развития. А если бы менялись не один, а два байта?

T_r_D
24.09.2018, 22:43
Ну сравнивать нужно было бы сразу два.
If (canMsg.data[1] = 0x10 && canMsg.data[0] = 0x02) {

Только не вторые, а первые :)
Яж тебе на это и указываю что счёт начинается не с 1, а с 0 :)

ganson
25.09.2018, 01:18
Вот, навоял. Реагирует на изменения двух байт
void can()
{
if (mcp2515.readMessage(&canMsg) == MCP2515::ERROR_OK) {
if (canMsg.can_id == 0x32A) {
if (canMsg.data[1] == 0x02 && canMsg.data[2] == 0x10) {
Serial.println("Press Vol Up");
digitalWrite(vol_up, HIGH);
}
else{
Serial.println("Unpress Vol Up");
digitalWrite(vol_up, LOW);
}
if (canMsg.data[1] == 0x03 && canMsg.data[2] == 0x20) {
Serial.println("Press Vol Down");
digitalWrite(vol_down, HIGH);
}
else{
Serial.println("Unpress Vol Down");
digitalWrite(vol_down, LOW);
}


}
}
}
На = в дате ругалась, пока не написал ==. И при id = 32A отключало порты от любого сообщения в шине. А если id==32A, то отключает от сообщения с id 32A и датой отличной от прописанной на порты. Правильно вроде получилось написать ?

T_r_D
25.09.2018, 17:26
Да, всё ок.
Яж с телефона пишу, синтаксис не особо проверяю, просто общий смысл доношу.
Да и Arduino IDE не запускал 100 лет.
Я STM32 (https://duino.ru/maple-mini-na-kontrollere-stm32-cortex-m3-.html) в СubeMx и IAR пилю.

И ни чего ни кто не отключает. :)
Сообщение если пришло, то оно хранится в буфере. А вот что с ним делать решать тебе.

Ты задал условие что если id отличается от 0х32А, то внутрь условия не заходить, а внутри этого условия ещё условия которые проверяют содержимое пришедшего пакета.

PS. Кстати из за того, что в Ардуино нельзя задать нормальные фильтры аппаратные на CAN, то бедной атмеге с 12 мегагерцами приходится жрать всё то, что валится из CAN и переваривать это.
Черевато пропусками пакетов. И я даже скажу с уверенностью и проверкой опытным путём что они пропадают! У меня в машине до сих пор Ардуино (https://duino.ru/category/arduino/) трудится, уже лет 5 наверное... Ни как на stm не поменяю.
И очень короткие нажатия на кнопки она теряет...

ganson
25.09.2018, 23:14
Ещё раз спасибо за помощь, завтра в машине уже проверю. STM понравился, делал как то диктофон на нём. Не дорогой, запустилось с первого тычка, отлично работает. Но я больше "паяльщик" и ремонтник, в программах - в ардуино чужой скетч мозгов не хватило поправить. Открыл похожий проект на STM, посмотреть на предмет поправить под себя, посмотрел и закрыл...

T_r_D
26.09.2018, 02:11
Ну не знаю...
Для стм и обвес проще, всего одна микруха трансиверы и если в фильтры не лезть, то только тайминги для can посчитать правильно в кубе...
А вот в коде будет примерно тоже количество строк, но процедура будет вызываться только по приходу пакета. А если настроить фильтры аппаратные, так вообще красота.

Но если скорость не нужна и нужна простота кода и доступность библиотек разных, то тут Ардуино более подходит...
А если есть силы и желание разобраться, то СТМ окупит затраты с лихвой.

НСО154
01.10.2018, 10:39
И очень короткие нажатия на кнопки она теряет...
Скетч твой можно посмотреть, тоже столкнулся с такой проблемой.
Но у меня скорее всего проблемка из за функции "delay", "рубит" работу контроллера, и естественно теряет данные, которые продолжают течь по com.

T_r_D
01.10.2018, 11:26
Да такой же как и на этой странице выше.
Делеев нету и в коде их быть не должно!
Совсем не должно!
Нужно пользоваться таймером.

НСО154
01.10.2018, 11:31
Да такой же как и на этой странице выше.
Делеев нету и в коде их быть не должно!
Совсем не должно!
Нужно пользоваться таймером.
Ну вот и развеял мои сомнения, перепишу.

T_r_D
02.10.2018, 00:24
По слову millis ищи примеры.

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

НСО154
02.10.2018, 08:15
Функция Millis решила вопрос, данные стабильно считываются, все ок)
Пишут есть ещё лучше библиотеки https://smartmodules.ru/timerone-arduino, что меньше кода-это факт, а на сколько лучше...надо тестить.

T_r_D
03.10.2018, 01:09
Ни на сколько.
Просто удобнее.
Но если там есть хоть какие глюки, то они будут и у тебя в проекте.
И за все удобства придётся платить скоростью и памятью.

Да и можно вообще без библиотек всяких просто читая параметры регистров таймера атмеги.
В общем этим библиотеки и занимаются...