PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Для новичков (http://pccar.ru/forumdisplay.php?f=170)
-   -   Прошу помощи с кан шиной (http://pccar.ru/showthread.php?t=25862)

demtro 28.04.2017 13:23

Прошу помощи с кан шиной
 
Вложений: 1
адаптер собран по схеме от ув. lti1 подключен к ардуино нано, залит следующий скетч:
PHP код:

#include <SPI.h>
#include <mcp2515.h>

struct can_frame canMsg;
MCP2515 mcp2515(10);

void setup() {
Serial.begin(115200);
SPI.begin();

mcp2515.reset();
mcp2515.setBitrate(CAN_33KBPS);
mcp2515.setNormalMode();

Serial.println("------- CAN Read ----------");
Serial.println("ID DLC DATA");
}

void loop() {

if (
mcp2515.readMessage(&canMsg) == MCP2515::ERROR_OK
{
if (
canMsg.can_id 0x10438040HEX//фильтр по ID, при необходимости раскомментировать
{  //фильтр по ID, при необходимости раскомментировать
Serial.print("[");
Serial.print((canMsg.can_id 0x1FFFFFFF), HEX);
Serial.print("] [");
Serial.print(canMsg.can_dlcHEX);
Serial.print("] ");

for (
int i 0i<canMsg.can_dlci++) {
Serial.print(canMsg.data[i], HEX);
Serial.print(" ");

}
Serial.println();
}
}


машина шевроле круз 2013 года шина GMLAN низкоскооростная работает на частоте 33.3kbps данные с ардуины идут. В интернете нашел значения кнопок руля:
Если вдруг кому интересны пакеты кнопок на руле в Cruze:
10 43 80 40 00 — Unpress (All)
10 43 80 40 01 — Vol Up
10 43 80 40 02 — Vol Down
10 43 80 40 03 — Next
10 43 80 40 04 — Prev
10 43 80 40 05 — SRC
10 43 80 40 07 — Mute
Но не могу понять как теперь сделать из всего этого адаптер кнопок руля для планшета, буду очень благодарен за помощь. Так же в этой шине есть данные о температуре за бортом, в последствии очень хотелось бы найти и их.
Кое как разобрался с фильтром по адресу (возможно не совсем правильно) пример получаемых данных приложил в архиве.

lti1 28.04.2017 17:20

По какому ID должны прилетать значения кнопок?

demtro 28.04.2017 17:52

На сколько я понял это id 10 43 80 40

lti1 29.04.2017 13:22

Попробуй этот скетч, что будет происходить при нажатии на разный кнопки.
PHP код:

#include <SPI.h>
#include <mcp2515.h>

struct can_frame canMsg;
MCP2515 mcp2515(10);

void setup() {
    
Serial.begin(115200);
    
SPI.begin();

    
mcp2515.reset();
    
mcp2515.setBitrate(CAN_33KBPS);
    
mcp2515.setNormalMode();

    
Serial.println("------- CAN Read ----------");
    
Serial.println("ID DLC DATA");


void loop() {
    if (
mcp2515.readMessage(&canMsg) == MCP2515::ERROR_OK) {
        if (
canMsg.can_id == 0x10438040//фильтр по ID, при необходимости раскомментировать
        
{  //фильтр по ID, при необходимости раскомментировать
            
Serial.print("[");
            
Serial.print((canMsg.can_id 0x1FFFFFFF), HEX);
            
Serial.print("] ");
            
Serial.println(canMsg.data[0] & 0x07HEX); 
        }
    }



дмитрий 77 29.04.2017 23:32

Есть альтернатива https://play.google.com/store/apps/d..._bus_interface

blogsylar 01.05.2017 11:40

Цитата:

Сообщение от дмитрий 77 (Сообщение 386976)

Далеко не на всех машинах работает, увы

demtro 01.05.2017 20:10

Вложений: 1
данные пошли в таком виде

lti1 01.05.2017 20:22

Если кнопки не нажимать последняя цифра всегда = 0?
PHP код:

[10438040


demtro 01.05.2017 21:47

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

lti1 01.05.2017 21:57

Где Вы взяли информацию, что необходимо читать ID 0x10438040?

YAM1966 01.05.2017 22:27

Все правильно, по ID 0x10438040 с DLC = 1 идут данные о нажатии кнопок.
Пока кнопка нажата - передается ее код, все кнопки отжаты - передается 0

Коды есть тут для OPEL ASTRA.

demtro 01.05.2017 22:34

Тут находил эту информацию ссыль
Но как-то странно, кнопки телефона у меня нет, а 6 появляется в данных

demtro 03.05.2017 17:39

Вложений: 1
Совместными усилиями с lti1 (точнее это полностью его заслуга) данные кнопок пошли с таким скетчем:
PHP код:

#include <can.h>
#include <SPI.h> 
#include <mcp2515.h> 

struct can_frame canMsg
MCP2515 mcp2515(10); 

void setup() { 
Serial.begin(115200); 
SPI.begin(); 

mcp2515.reset(); 
mcp2515.setBitrate(CAN_33KBPS); 
mcp2515.setNormalMode(); 

Serial.println("------- CAN Read ----------"); 
Serial.println("ID DLC DATA"); 


void loop() { 

if (
mcp2515.readMessage(&canMsg) == MCP2515::ERROR_OK)  

if ((
canMsg.can_id 0x1FFFFFFF) == 0x10438040)   //фильтр по ID, при необходимости раскомментировать   
{  //фильтр по ID, при необходимости раскомментировать 
Serial.print("["); 
Serial.print((canMsg.can_id 0x1FFFFFFF), HEX); 
Serial.print("] ["); 
Serial.print(canMsg.can_dlcHEX); 
Serial.print("] "); 

for (
int i 0i<canMsg.can_dlci++) { 
Serial.print(canMsg.data[i], HEX); 
Serial.print(" "); 


Serial.println(); 




Библиотеку работающую на скорости 33kbps прикладываю.
Осталось только понять как организовать из этого адаптер для кнопок руля для планшета (или в моем случае управление цифровым потенциометром mcp41100 на котором у меня сидит управление магнитолой Sony.


Часовой пояс GMT +4, время: 01:50.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot