Страница 15 из 20 ПерваяПервая ... 591011121314151617181920 ПоследняяПоследняя
Показано с 141 по 150 из 200

Тема: BMW I-Bus K-Bus

  1. #141
    Пользователь
    Регистрация
    25.10.2010
    Сообщений
    33
    Вес репутации
    172

    По умолчанию Re: BMW I-Bus K-Bus

    Цитата Сообщение от delach Посмотреть сообщение
    Можешь код выложить?
    Код:
    #include <SoftwareSerial.h>
    //#include <NewSoftSerial.h>
    #include <MsTimer2.h>
    
    
    #define DELAY_ON 1000 //delay before switch-on event
    #define DELAY_OFF 10000 //delay before switch-off event
    #define DELAY_SWITCH 0 //delay before switch event
    #define RELAY_PORT 9
    #define POWER_5V_PIN 5
    #define IGN_LED 13
    
    #define RX_PIN 4
    #define TX_PIN 3
    //NewSoftSerial IBUS(RX_PIN, TX_PIN);
    SoftwareSerial IBUS(RX_PIN, TX_PIN, true);
    
    struct pktTemplate {
      unsigned char src;
      unsigned char dst;
      unsigned char msglen;
      unsigned char msg[256];
    };
    
    #define RAD 	0x68 	//Radio
    #define IKE 	0x80 	//Instrument cluster electronics
    #define GLO 	0xBF 	//Global, broadcast address
    #define BMBT 	0xF0 	//On-board monitor operating part
    
    
    static struct pktTemplate buttonMODETempl = {BMBT, RAD, 2, {0x48, 0x23}}; // BUTTON_MODE_PRESS
    
    int recvPacket(unsigned char *msg, int size) 
    {
      static unsigned char buf[256];
      static int cnt = 0;
      int avail = 0;
      while ((avail = IBUS.available()) > 0) {
      // get the new byte: 
        buf[cnt++] = (unsigned char)IBUS.read();
        Serial.println(buf[cnt-1],HEX); 
    
        // parsing code here
        // return cnt;
          if (cnt > 256) { // VERY BIG PACKAGE. NEED ERASE DATA.
            memmove((void*)&buf[0], (void*)&buf[127], 128);
            cnt = 128;
          }
      }
      
      return 0;
    }
    
    void setup() {
      pinMode(POWER_5V_PIN, OUTPUT); // initialize +5V power pin for adapter
      pinMode(RELAY_PORT, OUTPUT); // initialize +5V power pin for relay
      digitalWrite(POWER_5V_PIN, HIGH); // Enable +5V power for adapter
      
      Serial.begin(9600);
      IBUS.begin(9600);
    }
    
    void loop() {
    
      unsigned char msg[256];
      int read;
      if ((read = recvPacket(msg, 256)) > 0) {
    //......  some code
      }  
    }

    Я заметил только во время сборки монитора что некоторые пакеты читаются неправильно. Незнаю как бороться с этим вот вывод от MID
    C0 0D 0E BC E0 42
    C0 0D 8E BE E0 0F
    C0 0D 8E BB E0 FF
    C0 0D 0E BC E0 42
    C0 0D 8E BE E0 0F
    C0 0D 8E BB E0 FF

    Это конечно же полная лажа, должны быть приблизительно такие пакеты:
    C0 03 68 01 AA
    C0 03 80 01 42
    C0 03 C8 01 0A

    Можно конечно парсить заведомо неправильную интерпритацию пакетов, но хотелось бы иначе. Если честно, я даже не знаю что делать с этим. Интересно то, что до этого я тестировал с монитором и его пакеты почти все читаются правильно, а вот любой другой девайс - такая вот шняга.
    Последний раз редактировалось darkduke; 03.04.2012 в 13:30.

  2. #142
    Пользователь
    Регистрация
    25.10.2010
    Сообщений
    33
    Вес репутации
    172

    По умолчанию Re: BMW I-Bus K-Bus

    В общем сделал выводы, что SoftwareSerial не годиться для чтения шины. Слишком она медленная и я так понил пакеты пропадают. Но при помощи обычной сериалки я так же не могу ничего прочитать т.к. я чиаю пакеты в инверсивной логиге. Можно ли как то переключить сериалку на другую логику по аналогии с SoftwareSerial ?

    Так же есть еще вопросик: Допустим есть усройство которое пишет в шину, допустим я получил доступ к чипу устройства где есть RX TX пины. Если я подсоединяюсь к TX, то я ловлю все что пишет усройство в шину. Если я подсоединяюсь к RX, то получаю все что приходит к устройству. Можно ли как то подключиться сразу к RX и TX, чтобы читать их обоих?
    Последний раз редактировалось darkduke; 06.04.2012 в 01:06.

  3. #143
    Пользователь
    Регистрация
    25.10.2010
    Сообщений
    33
    Вес репутации
    172

    По умолчанию Re: BMW I-Bus K-Bus

    Ребят, кто нибудь слышал про такой вот трансивер: TJA1020. Вроде где то прочитал, что его можно использовать для чтения шины. Вот даташит: http://www.e-lab.de/downloads/DOCs/TJA1020.pdf Кто нибудь сталкивался с подобным чипом?

  4. #144
    Пользователь
    Регистрация
    25.10.2010
    Сообщений
    33
    Вес репутации
    172

    По умолчанию Re: BMW I-Bus K-Bus

    В общем проблема решена, все мои разные схемы (а спаял я их около 7 разных вариантов которые находил в интернете ) не заработали. Это просто были неправильные пчелы и они делали соответственно неправильный мед. Для правильного меда была куплена специальная пчела за 110 рублей MC33290, это kline трансивер и спаяна, следующим образом:
    1 - VBAT (+12в)
    3 - GRD (ну это понятно куда)
    4 - ISO (IBUS)
    5 - TX ( к TX на ардуино)
    6 - RX (к RX на ардуино)
    8 - EN (сюда +5в, я посадил включение на отдельный пин, на arduino)

    Чтение производилось из сериального порта, SoftSerial использовал для отладочного вывода. Теперь все работает без нареканий.

  5. #145
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,376
    Вес репутации
    10

    По умолчанию Re: BMW I-Bus K-Bus

    Схему покажешь?

  6. #146
    Пользователь
    Регистрация
    25.10.2010
    Сообщений
    33
    Вес репутации
    172

    По умолчанию Re: BMW I-Bus K-Bus

    Цитата Сообщение от Chip Посмотреть сообщение
    Схему покажешь?
    Вот собственно такая вот простая схема, чип и ардуинка. Возможно, как то можно, изощрится и защитить ее, но у меня +5В и +12В стабилизированные, поэтому я не знаю нужно ли тут еще какую нибудь защиту.


    Так же тут нет защиты от коллизий, использую данную схему исключительно для чтения. На D2 ардуино включает +5V и активирует чип.
    Так же подключение TX пина тоже не нужно для чтения, я у себя отключил, однако он полезен если хочешь отладить конкретный девайс у себя на столе))))
    P.S. для записи еще 7 пин нуна запитать на +5в, но я опять же этого не делал т.к. только читаю шину.
    Последний раз редактировалось darkduke; 23.04.2012 в 13:12.

  7. #147
    Пользователь Аватар для MadToha
    Регистрация
    16.04.2012
    Сообщений
    39
    Вес репутации
    155

    По умолчанию Re: BMW I-Bus K-Bus

    Пацаны, а есть нормальный пример кода эмуляции cd-changer'а? А то у меня эмуляция работает, но слышно щелчки в колонках, такое впечатление, что при запросе статуса ченджера.. Мож че не так делаю..

  8. #148
    Новичок
    Регистрация
    10.12.2012
    Сообщений
    18
    Вес репутации
    143

    По умолчанию Re: BMW I-Bus K-Bus

    Подниму тему.
    Купил адаптер на TH3122 Реслера. Но у него в наличии были только USB.
    Ардуино+ USB-Shield - ума не хватает запрограммировать

    Подпаялся напрямую к TH3122 выводам RX/TX.

    Воткнул, загрузил скетч вот отсюда (первое сообщение)
    http://compcar.ru/forum/showthread.php?t=5204

    Вроде данные читает. Но... Не верные.
    Т.е. первый байт видит всегда корректно. Дальше - нет.
    Хотя читает всегда одинаково посылки. Т.е. не случайный мусор - а просто не верные.

    Вопрос. Можно ли TH3122 напрямую к Ардуино включать? Или всеж надо лепить МАХ232+ТН3122?

    Ну и небольшой вклад для продолжающих копать тему.
    http://en4cer.co.uk/bmw-carputers/fo...topic.php?t=13

    Да, еще попутно вопрос.
    В скетче коды описаны
    + button press 50 23 3C ED 32 11 FB 1
    - button press 50 23 3C ED 32 10 1E 2

    > BUTTON PRESS 50 23 3C ED 3B 01 06 11
    > BUTTON HOLD 50 23 3C ED 3B 11 B3 12
    > BUTTON RELEASE 50 23 3C ED 3B 21 33 13

    < BUTTON PRESS 50 23 3C ED 3B 08 0F 21
    < BUTTON HOLD 50 23 3C ED 3B 18 FB 22
    < BUTTON RELEASE 50 23 3C ED 3B 28 7B 23

    VOICE BUTTON PRESS 50 23 3C F9 3B 80 27 31
    VOICE BUTTON HOLD 50 23 3C F9 3B 90 BB 32
    VOICE BUTTON RELEASE 50 23 3C F9 3B A0 3B 33

    Откуда они взялись? Они же не верные. Или это просто для примера?

  9. #149
    Пользователь Аватар для MadToha
    Регистрация
    16.04.2012
    Сообщений
    39
    Вес репутации
    155

    По умолчанию Re: BMW I-Bus K-Bus

    Моя проблема со щелчками во время эмуляции ченджера решилась тем, что я подключил оба канала аудио

    Кстати, вот адрес моего проекта, пока там редирект на гитхаб http://imbmw.net/ - исходники .NET MF, разводка платы, всё там Темка на е46 клубе тут

    SDL2000, TH3122 подключается напрямую к МК, ибо МК работает с TTL уровнями, а MAX232 только для подключения к COM-порту компа. Проверь что с правильными параметрами открываешь serial port, может поэтому у тебя данные херятся. А чем тебе команды перечисленные не нравятся? Вроде как это команды кнопок на мониторе. Может тебе просто нужны кнопки на руле?

  10. #150
    Новичок
    Регистрация
    10.12.2012
    Сообщений
    18
    Вес репутации
    143

    По умолчанию Re: BMW I-Bus K-Bus

    Цитата Сообщение от MadToha Посмотреть сообщение
    SDL2000, TH3122 подключается напрямую к МК, ибо МК работает с TTL уровнями, а MAX232 только для подключения к COM-порту компа. Проверь что с правильными параметрами открываешь serial port, может поэтому у тебя данные херятся. А чем тебе команды перечисленные не нравятся? Вроде как это команды кнопок на мониторе. Может тебе просто нужны кнопки на руле?
    Уже разобрался. Подключаю к Меге, не используя NewSoftSerial - все Ок.

    А команды... Вроде как те, которые начинаются с 50 - это от руля команды. Хотя это наименьшая из проблем

Страница 15 из 20 ПерваяПервая ... 591011121314151617181920 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 9 (пользователей: 0 , гостей: 9)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •