K-CAN Проект

Чип тунинг, Standalone и piggyback електроники.

Модератор: bum_bum

Потребител
Аватар
Мнения: 31
Регистриран на: 5.04.2016
Пол: Мъж
Кара: BMW 120d e87
Детайли за колата: BMW 120d e87 163hp

K-CAN Проект

Мнение от shadowx » 05 Апр 2016, 16:36

Здравейте,
Първо да се извиня, ако темата не е на точното място... и също така ако има подобна тема.. не намерих :/


Накратко, идеята е да интегирам едно RaspberryPi[1] в колата, като разбира се да е закачено към K-CAN bus-а.
Връзката е посредством Arduino Uno R3[2] + Sparkfun CAN Bus shield[3], закачен към K-CAN twisted pair-а от панела на климатроника (по-лесно достъпен е, няма смисъл да се сваля CD-то)
Все още съм в доста начален стадий, за момента съм успял да разчета около 50-60% от съобщенията (базирайки се основно на информацията от loopybunny[4]).
Интересно ми е дали има и други занимавали (с интерес) се с подобни проекти, за малко обмяна на опит и идеи :)

На краткото клипче се вижда четене на информация от K-CAN bus-а в реално време.
https://www.youtube.com/watch?v=Tx_ebYV8Ecc

Не побликувам кода , защото още е в доста testing и unstable :) но ако някой е заинтригувам , може да ми PM.


[1] - http://raspberrypi.org/
[2] - https://www.arduino.cc/en/Main/ArduinoBoardUno
[3] - https://www.sparkfun.com/products/13262
[4] - http://www.festival.loopybunny.co.uk/CarPC/k_can.html

Потребител
Аватар
Мнения: 31
Регистриран на: 5.04.2016
Пол: Мъж
Кара: BMW 120d e87
Детайли за колата: BMW 120d e87 163hp

Re: K-CAN Проект

Мнение от shadowx » 09 Май 2016, 14:27

Ето малък ъпдейт да покажа прогрес :)

https://www.youtube.com/watch?v=1MNILtmyWL0

Потребител
Аватар
Мнения: 31
Регистриран на: 5.04.2016
Пол: Мъж
Кара: BMW 120d e87
Детайли за колата: BMW 120d e87 163hp

Re: K-CAN Проект

Мнение от shadowx » 13 Май 2016, 14:19

Тук е в движение и по-добре фокусирано :)
https://www.youtube.com/watch?v=ZWnCkEMYea4

Размишлявам над евентуални приложения на проектчето, освен очеизвадното мултимейдни такова... тук трябва някой по-разбиращ да се изкаже, но мисля ,че спокойно може да бъде използвано като:

1 . Допълнителна CAN "security" система.... (пр. при запалване, очаква дадено събитие ..например три натискания на даден бутон, иначе 60секунди след запалването гаси двигателя, пуска аварийни светлини, и тнт и тнт..... започва брутален флууд на P-CAN bus-а с високо приоритетни IDта с цел да се попречи на нормална комуникация , следователно и нормално функциониране на колата)
2. Емулация на липсващи "екстри" ... например Cruise Control ... ако разбирал правилно, той реално се свежда до препрограмиране не SZL модула и плуене на съобщения през (500ms?...мързи ме да проверя през колко бяха за него) емулиращи наличието му... така теореритчно би могло изцяло софтуерно да се емулира присътвието и работата на модула.
3. Trip log .... тук вероятно ще е по-интересно ако се логва информацията от PT-CAN bus-а не К-CAN ...но дори и само с наличната в k-can , пак може да се направят доста интересни статистики... (скорост, обороти, разход на гориво, генериран въртящ момент, налично гориво, позиция на педала на газта и тнт и тнт.)....скоро мисля и GPS модул да добавя.

anyway .... все още обаче не съм намерил решение на най-сериозния ми проблем... а именно температурата в колата, след като е престояла лятото на слънце няколко часа .... повечето SoC по документация могат да работят нормално при температура до 65 градуса... което ми се струва опасно близо до достижимите в колата температури.... та бихте ли препоръчали по-студени места в колата, където могат да се поставят Arduino и Raspberry Pi...

кандидат ентусиаст
Аватар
Мнения: 104
Регистриран на: 26.12.2010
Пол: Мъж
Кара: BMW ///М3 SMG
Мечтае да кара: BMW M3 CSL, M3 GTR, M3 GTS
Детайли за колата: Направо не върви, но уж завива :)

Re: K-CAN Проект

Мнение от TeroRider » 18 Май 2016, 9:50

Това е супер интересно! Евала колега :bchug:

старши ентусиаст
Аватар
Мнения: 1857
Регистриран на: 20.10.2010
Местоположение: София
Пол: Мъж
Кара: BigBlockV8 и чат-пат SmallBlockV8
Мечтае да кара: бангия с предно
Детайли за колата: ;)
Big: Hemi 370 cu. in.
Small: S62B50 с жокери

Re: K-CAN Проект

Мнение от Nickelback » 18 Май 2016, 10:01

Аз се абонирам за темата. В комбинация с расберито става мнооого sophisticated решение и определено ме кефи. Много по-добре от само "тъпо" ардуино :yes: Развръзва ръцете много и дава зелена светлина за развихряне на фантазията :D

Sent from my LG-H815 using Tapatalk
Изображение Изображение

"За тЕя пари има Е-шеесе" - форумна пословица.
Лето две и седемнаесто.

младши ентусиаст
Аватар
Мнения: 258
Регистриран на: 2.10.2008
Местоположение: Хасково
Пол: Мъж
Кара: Е60

Re: K-CAN Проект

Мнение от nayden » 18 Май 2016, 11:06

И аз работя по подобно нещо с кан шината на БМВ ... За съжаление много малко време ми остава за това . Ще се включа като имам някъв напредък .

старши ентусиаст
Аватар
Мнения: 1857
Регистриран на: 20.10.2010
Местоположение: София
Пол: Мъж
Кара: BigBlockV8 и чат-пат SmallBlockV8
Мечтае да кара: бангия с предно
Детайли за колата: ;)
Big: Hemi 370 cu. in.
Small: S62B50 с жокери

Re: K-CAN Проект

Мнение от Nickelback » 18 Май 2016, 21:14

shadowx написа:Тук е в движение и по-добре фокусирано :)
https://www.youtube.com/watch?v=ZWnCkEMYea4

Размишлявам над евентуални приложения на проектчето, освен очеизвадното мултимейдни такова... тук трябва някой по-разбиращ да се изкаже, но мисля ,че спокойно може да бъде използвано като:

1 . Допълнителна CAN "security" система.... (пр. при запалване, очаква дадено събитие ..например три натискания на даден бутон, иначе 60секунди след запалването гаси двигателя, пуска аварийни светлини, и тнт и тнт..... започва брутален флууд на P-CAN bus-а с високо приоритетни IDта с цел да се попречи на нормална комуникация , следователно и нормално функциониране на колата)
2. Емулация на липсващи "екстри" ... например Cruise Control ... ако разбирал правилно, той реално се свежда до препрограмиране не SZL модула и плуене на съобщения през (500ms?...мързи ме да проверя през колко бяха за него) емулиращи наличието му... така теореритчно би могло изцяло софтуерно да се емулира присътвието и работата на модула.
3. Trip log .... тук вероятно ще е по-интересно ако се логва информацията от PT-CAN bus-а не К-CAN ...но дори и само с наличната в k-can , пак може да се направят доста интересни статистики... (скорост, обороти, разход на гориво, генериран въртящ момент, налично гориво, позиция на педала на газта и тнт и тнт.)....скоро мисля и GPS модул да добавя.

anyway .... все още обаче не съм намерил решение на най-сериозния ми проблем... а именно температурата в колата, след като е престояла лятото на слънце няколко часа .... повечето SoC по документация могат да работят нормално при температура до 65 градуса... което ми се струва опасно близо до достижимите в колата температури.... та бихте ли препоръчали по-студени места в колата, където могат да се поставят Arduino и Raspberry Pi...


Хубави идеи :) :yes:

Иначе за температурата не пречи да пробваш преди да го мислиш :) Аз лично силно се съмнявам в масовите китайски навигации чайниците да са ползвали automotive grade чипове :roll: Пък си работят :) Вариант ти е да смениш хардуера с нещо с такъв grade, но не вярвам да искаш да сменяш така приятната платформа :) Например аз скоро взех SAM V71 Xplained Ultra (-40 - +105 degC), например), за други неща де, но той си е automotive grade и не се плаши от температури. Само пример. Друг вариант ти е активно охлаждане - нещо с вентилатор, Пелтие елементи и т.н, ама пак не вярвам да ти се занимава. Та нека дойде лятото, пробвай, пък тогава го мисли :)

Иначе като идея освен GPS-a, може да помислиш да му закачиш и един 3G модем и става the ultimate :twisted:
Изображение Изображение

"За тЕя пари има Е-шеесе" - форумна пословица.
Лето две и седемнаесто.

Потребител
Аватар
Мнения: 31
Регистриран на: 5.04.2016
Пол: Мъж
Кара: BMW 120d e87
Детайли за колата: BMW 120d e87 163hp

Re: K-CAN Проект

Мнение от shadowx » 20 Май 2016, 8:46

Nickelback написа:Аз се абонирам за темата. В комбинация с расберито става мнооого sophisticated решение и определено ме кефи. Много по-добре от само "тъпо" ардуино :yes: Развръзва ръцете много и дава зелена светлина за развихряне на фантазията :D

Sent from my LG-H815 using Tapatalk


Ами попринцип мисля да са разделени... основната функция на ардуиното е конвертор за CAN <> USB за да може информацията да стигне до Raspberry -то.
Но същевременно допълнителните функции на тема сигурност (реле на OBD Can линията) и евентуален K-Can Флууд ако не се въведе даден "код" след запалване, са по-скоро неща който трябва да са изцяло отговорност на арудиното, дори RPi-то да е изключено (от една страна, му отнема време да зареди а немислимо да е винаги работещо, от друга - ако крадат колата то не би било активно...) Всякакъв вид по-сложна функционалност обаче ще бъде изцяло работа на малинката (Портоколата по-скоро, защото очаквам скоро да ми дойде Orange Pi PC).

Nickelback написа:Хубави идеи :) :yes:

Иначе за температурата не пречи да пробваш преди да го мислиш :) Аз лично силно се съмнявам в масовите китайски навигации чайниците да са ползвали automotive grade чипове :roll: Пък си работят :) Вариант ти е да смениш хардуера с нещо с такъв grade, но не вярвам да искаш да сменяш така приятната платформа :) Например аз скоро взех SAM V71 Xplained Ultra (-40 - +105 degC), например), за други неща де, но той си е automotive grade и не се плаши от температури. Само пример. Друг вариант ти е активно охлаждане - нещо с вентилатор, Пелтие елементи и т.н, ама пак не вярвам да ти се занимава. Та нека дойде лятото, пробвай, пък тогава го мисли :)

Иначе като идея освен GPS-a, може да помислиш да му закачиш и един 3G модем и става the ultimate :twisted:


Има логика,че китайците ползват същите SoC за повечето техника.... вероятно ще се разчита на CPU throttle за да се пази. ...но все пак, лятото температури от рода на 60 градуса С са съвсем достижими в колата....
При нормални обстоятелства процесора като тръгне си слага 20тина градуса.... задължително ще сложа активно охалжане, но то реално би дало смислен резултат след като температурата на въздуха в купето падне...
Както и да е ...прав си ..трябва да се пробва и ще стане ясно.... евентуално мисля при boot да downclock-вам процесора и след зареждане само ако температурата е под даден минумум - да му разрешавам нормални честоти на работа.
Относно GPS + 3G ...да и аз го мисля, даже си взех USB 3G modem... Още не съм решил обаче дали е по-добре 3G и GPS-а да са вързани към Ардуиното вместо RPi-то (или дали ще мога да пратя SMS през модема без да включвам ардуиното).

Иначе добавих и ympd + контрол от мултимедията на волана....но понеже все още слувам целия трафик, имам около 60-65% успеваемост на бутоните за смяна на песен :/ .... явно скоро ще трябва да започна да филтрирам съобщенията за които слушам :/


ympd - https://github.com/notandy/ympd (Standalone MPD Web GUI written in C, utilizing Websockets and Bootstrap/JS)


п.с. тези дни ще взема да драсна едно обяснение за различните съобщения които съм успял да "разчета" (ИД, и значение на "разчетените" байтове)

Обратно на темата с охлаждането... мисля скоро да ида да ми принтират една кутия ....че в момента ....
Изображение xD

А и забравих да попитам, (не разбирам особено от електроника :S) какво реле ми трябва за да контролирам потока по OBD CAN шината от ардуиното ? (двупосочна комуникация...няма да може с NPN транзистор само :S)

старши ентусиаст
Аватар
Мнения: 1857
Регистриран на: 20.10.2010
Местоположение: София
Пол: Мъж
Кара: BigBlockV8 и чат-пат SmallBlockV8
Мечтае да кара: бангия с предно
Детайли за колата: ;)
Big: Hemi 370 cu. in.
Small: S62B50 с жокери

Re: K-CAN Проект

Мнение от Nickelback » 21 Май 2016, 11:07

Браво, определено знаеш какво правиш и адмирации за ентусиазма :yes: Много се кефя на такива хора, които се обосновават защо и как, цитирайки конкретни наблюдения, факти, и най-вече, демострират подход, без празни теории и общи приказки като за децата, и без да са въздух под налягане :bchug: Че сме имали такива случаи из форума...

shadowx написа:...Още не съм решил обаче дали е по-добре 3G и GPS-а да са вързани към Ардуиното вместо RPi-то (или дали ще мога да пратя SMS през модема без да включвам ардуиното).


В правилната посока го мислиш, според мен :yes: Power moding is always an issue :mhihi:
Иначе много си зависи от модема. Аз съм работил с такива (апликейшън процесора представлява едното ядро от SoC-а, а другото е dedicated за baseband-а), при които дори, ако да кажем, на апликейшън ядрото си зависнал да чакаш на сокет и си влязал в sleep, и след известно време, ако на модемското ядро се появи някаква мрежова активност (има предварително установен datacall), то модемското ядро набива прекъсване на апликейшън ядрото и го вади от sleep и ти си обработваш уеб заявката както прецениш. При теб няма такъв сценарии, понеже модема ти е съвсем отделен на USB, но просто искам да кажа, че си е специфично за модема и трябва да се види дали се поддържа, и да се пробва...

shadowx написа:п.с. тези дни ще взема да драсна едно обяснение за различните съобщения които съм успял да "разчета" (ИД, и значение на "разчетените" байтове)


Това ще е супер полезно за бъдещи ентусиасти, евала :yes:

shadowx написа:А и забравих да попитам, (не разбирам особено от електроника :S) какво реле ми трябва за да контролирам потока по OBD CAN шината от ардуиното ? (двупосочна комуникация...няма да може с NPN транзистор само :S)


С NPN транзистор няма да стане, както и с MOSFET аналогов ключ, заради дуплекс комуникацията, както каза :roll:
Вариант е да ползваш CAN transceiver чип, който да разрешаваш/забраняваш.
Ако все пак се спреш на реле (предполагам вече си го мислил), но гледай да е някое с двойка контакти (DPST, да кажем), за да е едничко, и да комутираш CANH и CANL заедно:

Изображение

Не забравяй да сложиш диод на намотката и търси реле с ниско контактно съпротивление да не повлиява на терминиращия импеданс, въпреки че се съмнявам ;)


ПС: Да ти пусна една муха като вържеш модема... Играл ли си си с протоколи като MQTT, OMA LWM2M или подобни? :D
Изображение Изображение

"За тЕя пари има Е-шеесе" - форумна пословица.
Лето две и седемнаесто.

Потребител
Аватар
Мнения: 31
Регистриран на: 5.04.2016
Пол: Мъж
Кара: BMW 120d e87
Детайли за колата: BMW 120d e87 163hp

Re: K-CAN Проект

Мнение от shadowx » 21 Май 2016, 12:05

Както обещах ето малко информация относно съобщенията по K-CAN шината на e87
Код: Избери целия код
ID: 0x130
  byte0 - статус на двигателя
    0x00 00000000 - Изключен (Off)         
    0x40 01000000 - Изключен (Ключ наличен)
            (Може би свързано с имобилайзера?)
    0x41 01000001 - Изключен (Ключ позиция 1)
    0x45 01000101 - Работещ/Готов за работа
    0x55 01010101 - В процес на запалване? Стартер?
  byte1 - Key status (Double check!!!)
    0x00 - Ключът е открит        00000000
    0x40 - Ключът не е открит     01000000
  byte2 -
    Горни 4 бита - Педал на съединител
    Долните 4 бита - Те, както и byte3
      изглежда са свързани със запалването.
      Повече информация на :
        http://www.loopybunny.co.uk/CarPC/can/130.html

ID: 0x1B4
  bytes 1,0 - Скорост (мили в час)
    Формула: ((byte1 - 0xC) * 256) + byte0 / 16
    (Резултата е мили/час... умножете по 1.61 за км/час)
  byte5 - Статус на ръчната спирачка
    0x32 00110010 - Да
    0x30 00110000 - Не

ID: 0x1D0
  byte0 - Температура на охладителна течност (вода/антифриз)
    Формула: byte0 - 48
    (Резултата е в градуси в целзий)

ID: 0x1D6 - Бутони на волана
  byte0=0xC0, byte1=0xD   Voice button
  byte0=0xC0, byte1=0x1C  Rotate air button
  byte0=0xC0, byte1=0x4C  Change disk button
  byte0=0xC1, byte1=0xC   Telephone button
  byte0=0xC4, byte1=0xC   Volume down
  byte0=0xC8, byte1=0xC   Volume up
  byte0=0xD0, byte1=0xC   Down button (Arrows)
  byte0=0xE0, byte1=0xC   Up button (Arrows)


ID: 0x1EE - Лост за мигачи/фарове
  byte0
    0x00 00000000 - Нормална позиция
    0x01 00000001 - 1ва позиция нагоре (еднократно примигване на десен мигач)
    0x02 00000010 - 2ра позиция нагоре (постоянно мигащ десен мигач)
    0x04 00000100 - 1ва позиция надолу (еднократно премигване на ляв мигач)
    0x08 00001000 - 2ра позиция надолу (постоянно мигащ ляв мигач)
    0x10 00010000 - Позиция към шофьора (дълги светлини)
    0x20 00100000 - Присветкане с дълги светлини
    # bc = 0x40 || 0x80 ? up/down = ?

ID: 0x24B - Аларма за отворена врата (при движение)
  byte0=0x00 - Няма отворени врати
    (Дали само 1 бит се използва или има за
      всяка врата отделен както при ID 0x2FC ?)

ID: 0x21A - Габарити,къси,халогени
  Тук трябва да разглеждате съобщенията в бинарен вид.
  byte0
    00000000 - Всички светлини са изключени
    10000000 - Стопове (спирачки)
    01000000 - Задни халогени
    00100000 - Предни халогени
    00000100 - Габарити
    00000010 - Интериорни светлини? (табло??)
    00000001 - Къси
    Съответно ако са пуснати габарити и къси например:
      00000101 ..и тнт...:)
  byte1
    (TODO! Трябва да е за интериорните светлини? Табло?)

ID: 0x328 - Дата на производсво / Последно откачане на акумолатора
  bytes 3,2,1,0 - Дата на производство
    Пример:
      ID 0x238 Len: 6 Data: 16 83 A2 04 DE 11
      byte3,2,1,0 = 0x04A28316 = 77759254 (време в секунди!)
       77759254 = 899 дни (Сегашна дата - това време = дата на прозиводство)
  bytes 5,4 - Последно откачане на акумулатора
    Пример:
      ID 0x238 Len: 6 Data: 16 83 A2 04 DE 11
      byte5,4 = 0x11DE = 4574 (време в дни от 01/01/2000)
      (Дни + 01/01/2000 = последно откачане на акумулатора)

ID: 0x246 - Реотан на задно стъкло
  byte0
    0x3F 00111111 - Изключен
    0x7F 01111111 - Включен
  (TODO: В това съобщение вероятно има още информация
    свързана с контрола на климатика?)

ID: 0x2A6 - Лост за чистачки
  byte0
    0x00 00000000 - Нормална позиция
    0x01 00000001 - Прекъснато движение
    0x02 00000010 - Нормална скорост (1ва позиция нагоре)
    0x03 00000011 - Бърза скорост (2ра позиция нагоре)
    0x08 00001000 - Единично движение (1ва позиция надолу)
    0x10 00010000 - Пръскане на течност (2ра позиция надолу)
    0x40 01000000 - Задна чистачка (1ва позиция назад)
    0x81 10000001 - Пръскане на течност /отзад/ (2ва позиция назад)
  byte1 -
      Скорост на чистачките (прекъснато движение)
      0xF8 11111000 Скорост 1
      0xF9 11111001 Скорост 2
      0xFA 11111010 Скорост 3
      0xFB 11111011 Скорост 4

ID: 0x2CA - Външна температура
  byte0 - Външна температура
    Формула: (byte0 - 80) / 2

ID: 0x2E6 - Климатик
  byte5 - Скорост на вентилатора
    (От 0 до 7)
  byte7 - Температура (шофьорска страна)
    Формула: byte7 / 2

ID: 0x2EA - Климатик
  byte7 - Температура (пасажер)
    Формула: byte7 / 2

ID: 0x366 - Външна температура / Прогноза за оставащи километри с наличното гориво
  byte0 - Външна температура
    Формула: (byte0 - 80) / 2
  byte2,1 - Прогноза за оставащи километри с наличното гориво
    Формула: (byte2,1) / 16
    Пример:
      ID 0x366 Len: 4 Data: 78 50 14 FC
      byte2,1 = 0x1450 = 325 (мили ...умножете по 1.61 за км)

ID: 0x330 - Одометър, Средно ниво на горивото
  byte2,1,0 - Одометър
    Пример:
      ID 0x300 Len: 8 Data: 95 0A 01 2D 29 2F 9C 34
      0x010A95 = 68245 км

ID: 0x34F - Ръчна спирачка
  byte0
    0xFE 11111110 - Да
    0xFD 11111101 - Не

ID: 0x32E - Вътрешна светлина и температура
  byte3 - Вътрешна температура
    Формула: (byte3 / 10) + 6
  byte4 - Сензор за светлина


ID: 0x362 - Среден разход / Средна скорост
  byte1(долни 4 бита) + byte0  - Средна скорост
  byte2 + byte1(горни 4 бита)  - Среден разход
  Пример:
    ID: 0x362 Len: 7 Data: A2 71 1E FF FF FF EA
    (byte2 + byte1(4 up bits)) / 10
    -> 0x1E7 / 10 = 479/10 = 47.9 mpg

    (byte1(4down bits) + byte0) / 10
    -> 0x1A2 = 418 / 10 = 41.8 mph
      (*1.61 = км/ч)

ID: 0x380 - VIN Номер
  hex2ascii = VIN

ID: 0x0E6 - Заключване на предна лява врата
ID: 0x0E2 - Заключване на предна дясна врата
ID: 0x0EE - Заключване на задна лява врата
ID: 0x0EA - Заключване на задна дясна врата
  byte0
    0x81 10000001 - Вратата е отключена (затворена?)
    0x82 10000010 - Вратата е заключена
    0x83 10000011 - Вратата е заключена и алармата е пусната (deadlock?)
  byte3  (0xFC Сменя се м/у 0xFD)

ID: 0x3B0 - Задна скорост
  byte0
    0xFD 11111101 - Не
    0xFE 11111110 - Да

ID: 0x3B6 - Преден ляв прозорец
ID: 0x3B8 - Преден дясен прозорец
ID: 0x3B7 - Заден ляв прозорец
ID: 0x3B9 - Заден дясен прозорец
  byte0 - Позиция (От 0/вдигнат/ до 95/свален/)
  byte1 - Позиция /относителна/ (Провери!!)

ID: 0x2F8 - Дата/час
  http://www.loopybunny.co.uk/CarPC/can/2F8.html

ID: 0x1F6  - Индикация на светлини
  # http://www.loopybunny.co.uk/CarPC/can/1F6.html
  (Пинг-понг информация с таблото?
    Дали byte1 не е on/off ? Да проверя timestamps!)
  byte0=0x91 10010001 - Ляв мигач
    Пращат се поредица от две съобщения с това ID:
      0x91 0xF2 10010001 11110010
      0x91 0xF1 10010001 11110001
  byte0=0xA1 10100001 - Десен мигач
      0xA1 0xF2 10100001 11110010
      0xA1 0xF1 10100001 11110001
  byte0=0xB1 10110001 - Двата мигача
      0xB1 0xF2 10100001 11110010
      0xB1 0xF1 10100001 11110001

ID: 0x394 - Вдига аларма за колан на таблото
  byte3 0x28 00101000
ID: 0x581 - Премахва аларма за колан на таблото
  byte3 0x29 00101001

ID: 0xA8 - Съединител, Спирачки
  byte5 - Съединител
    0xF0 11110000 - Не
    0xF1 11110001 - Да
  byte7 - Спирачки.
    0x00 - ? (Над 20 може да се счита за "натиснат" педала?)
  е83 има информация за въртящ момент в реално време в това съобщение
  Още информация на : http://www.loopybunny.co.uk/CarPC/can/0A8.html

ID: 0xAA - RPMs, Позиция на педала за газта
  bytes 5,4 - Обороти
    Пример:
      ID 0x0AA Len: 8 Data: 5F 59 FF 00 34 0D 80 99
      byte5,4 = 0x0D34 = 3380 / 4 = 845 rpm
  byte3,2 - Позиция на педала за газта
    Пример:
      ID 0x0AA Len: 8 Data: 5F 59 FF 00 34 0D 80 99
      byte3,2 = 0x00FF = 255 (Не натиснат)
      byte3,2 = 0xFE28 = 65064 (Натиснат до долу)
      (Лично аз ги разделям на 256 така крайната
        стойност е м/у 0 и 254 (0x00 - 0xFE))
  byte7 - http://www.loopybunny.co.uk/CarPC/can/0AA.html

ID: 0xC8 (0xC4 също)- Позиция на волана
  byte1,0 - Абсолютна позиция на волана
    Пример:
      ID 0xC8 Len: 6 Data: DD 07 FC 00 00 FF
      byte1,0 0x07DD = 2013
        2013 / 23 = 87 грауда (по чесовниковата стелка)
      При въртене в обратна на чесовниковата посоката:
        ID 0xC8 Len: 6 Data: 1E F8 FC 00 00 FF
        byte1,0 0xF81E = 63518
          (63518-65535) / 23 = -87 (граудса обратно
                              на чесовниковата стелка)
  byte4,3 - Инкрементиращи стойности за отместванто
    на волана спрямо последното отчинате
          (Отрицалтени стойности ако е в обрана посока)

ID: 0xCE - Индивидуална скорост на всяко колело
  byte1,0 / 24 = mph
  byte3,2 / 24 = mph
  byte5,4 / 24 = mph
  byte7,6 / 24 = mph


Nickelback написа:
Не забравяй да сложиш диод на намотката и търси реле с ниско контактно съпротивление да не повлиява на терминиращия импеданс, въпреки че се съмнявам ;)

ПС: Да ти пусна една муха като вържеш модема... Играл ли си си с протоколи като MQTT, OMA LWM2M или подобни? :D

Благодаря за информацията за релето :)
Отнотно протоколите, мисля,че не схванах каква е идеята ти ? please do tell :)

Ето и линк (реших,че е по-добре да не запълвам темата с код) към сегашната версия на "библиотека" която ползвам за парсване на съобщенията
http://pastebin.com/xXzPXhUF

старши ентусиаст
Аватар
Мнения: 12066
Регистриран на: 22.07.2003
Местоположение: София
Пол: Мъж
Кара: турбо бмв

Re: K-CAN Проект

Мнение от bum_bum » 21 Май 2016, 13:23

Колега, три мнения като ги пускаш едно след друго ги събирай в едно а не в три отделни.
Изображение

старши ентусиаст
Аватар
Мнения: 1857
Регистриран на: 20.10.2010
Местоположение: София
Пол: Мъж
Кара: BigBlockV8 и чат-пат SmallBlockV8
Мечтае да кара: бангия с предно
Детайли за колата: ;)
Big: Hemi 370 cu. in.
Small: S62B50 с жокери

Re: K-CAN Проект

Мнение от Nickelback » 21 Май 2016, 13:49

shadowx написа:Отнотно протоколите, мисля,че не схванах каква е идеята ти ? please do tell :)


Ааа конкретна идея нямам, само пускам мухата :ok: Например алармиране за настъпили определени събития - около/в колата, проследяване на колата, ако си я дал на жената, в реално време... а бе, каквото се сетиш :D

http://www.slideshare.net/JoeSpeed/conn ... -joe-speed


Изображение Изображение

"За тЕя пари има Е-шеесе" - форумна пословица.
Лето две и седемнаесто.

Потребител
Аватар
Мнения: 31
Регистриран на: 5.04.2016
Пол: Мъж
Кара: BMW 120d e87
Детайли за колата: BMW 120d e87 163hp

Re: K-CAN Проект

Мнение от shadowx » 21 Май 2016, 15:21

Аха ! Рзбирам....
В извесна степен това което казваш мисля да го имплементна.
т.е. GPS модула ще е закачен към SparkFun Can Bus Shield-а на Arudino-то (има слот за gps модул) и мисля да го накарам да се представя за вградения OEM GPS-а (нямам навигация в колата , но предполагам,че GPS кординатите се съобщават в K-CAN шината и просто трябва да използвам оргиналните ID и синтаксис)... самата интерпретация на данните ще става в Rasberry Pi-то разбира се...
Даже мисля,че е редно RPi-то да има постоянно отворен OpenVPN тунел към мой сървър ...така ще имам обратна връзка с колата винаги (като е запалена/като е на контакт...зависи в крайния варянт кога ще е пуснато RPi-то)

Относно протоколите... с OpenVPN-а леко засегнах тази тема... но ако говориш за репортите за кординатите на GPS-а специално, там едно edin XOR на данните и чисти udp-та .... възможно най-малки ... да се пести трафик и излишно време (излишно време > tcp).
И като казах XOR ...за допълнително секюрити мисля, да правя един XOR на ардуиното за нещата които праща ....
Не,че става особено сложно , но все пак ако примеме,че някой добие достъп до него,.... ще е допълнителна пречка преди да успее да прати каквото и да е... плус може като цяло да се фитлрира и range от ID-та , с цел само необходимите неща да могат да бъдат пращани...
п.с. относно протоколите ... :) попринцип съм мрежов/линукс админ ...та :)

п.с.: Съжелявам ,че бяха 3 post-а...идеята беше да са два (исках да разделя описанието от писанията ми)... но нали съм заек и чакам одобрение на всеки поуст..... та нямаше как да го редактирам и да добавя .

старши ентусиаст
Аватар
Мнения: 1857
Регистриран на: 20.10.2010
Местоположение: София
Пол: Мъж
Кара: BigBlockV8 и чат-пат SmallBlockV8
Мечтае да кара: бангия с предно
Детайли за колата: ;)
Big: Hemi 370 cu. in.
Small: S62B50 с жокери

Re: K-CAN Проект

Мнение от Nickelback » 21 Май 2016, 18:52

Именно заради редуцирания трафик и вграденото секюрити те насочвам към MQTT... Струва ми се, че не съм те заинтригувал и не си прочел :dunno: Най-вече - publish/subscribe е, има topics, keep alive, "lasт will", retained messages и си опростяваш нещата много. Само си вдигни един MQTT брокер на някой твой сървър и пей сърце. Но ако държиш от ентусиазъм да си правиш нещо подобно сам, няма лошо :bchug:
Изображение Изображение

"За тЕя пари има Е-шеесе" - форумна пословица.
Лето две и седемнаесто.

Потребител
Аватар
Мнения: 31
Регистриран на: 5.04.2016
Пол: Мъж
Кара: BMW 120d e87
Детайли за колата: BMW 120d e87 163hp

Re: K-CAN Проект

Мнение от shadowx » 24 Май 2016, 14:13

Ами, поне към момента не виждам нужда от подобни протоколи..... скоро време - who knowz :)

Иначе вчера ми остана малко време да слушам трафик, ето наблюденията:
Код: Избери целия код
ID: 0x2F0 - Неизвестно
  # Праща се: При запален двигател
  # Честота:  ?
  # Стойност: (винаги?) F7 FC
  byte0: 0xF7 (247) 1111 0111
  byte1: 0xFC (252) 1111 1100

ID: 0x23A - Неизвестно
  # Праща се: При запален двигател
  # Честота:  ?
  byte0: 0x0 (винаги?)
  byte1: 0x30/0x33 (48/51)
          0011 0000 / 0011 0011
  byte2: 0x0,0x01,0x4
          0000 0000, 0000 0001, 0000 0100
  byte3: 0x5A/0x6A  (90/106)
          0101 1010 / 0110 1010
  # Лог:
  # ID: 23A [4] 0 30 4 5A
  # ID: 23A [4] 0 30 1 6A
  # ID: 23A [4] 0 30 1 6A
  # ID: 23A [4] 0 33 0 5A
  # ID: 23A [4] 0 30 4 5A
  # ID: 23A [4] 0 33 0 5A
  # ID: 23A [4] 0 30 0 5A


ID: 0x2F4 - Неизвестно (Сензор?)
  # Праща се: При запален двигател
  # Честота:  ?
  # Стойност: (винаги?) CF FF FF FF
  byte0:   0xCF (207) 1100 1111
  byte1-3: 0xFF (255) 1111 1111


ID: 0x2F6* - Аларма за отворена врата (Като 0x24B ?)
  # Праща се: При контакт/запален двигател
  # Честота:  (event driven?)
  byte0:
    0x00 ( 0) 1100 1111    (Статус - ОК)
    0x54 (84) 0101 0100    (Аларма за отворена врата)
  byte1: 0xF5 (245) 1111 0101

ID: 0x2FA - Неизвестно
  # Праща се: При контакт/запален двигател
  # Честота: ?
  byte0: 0xFC/0xFC (252/253)
        1111 1100 / 1111 1101
  byte1:
    0x8  - (8)   0000 1000
    0x6C - (108) 0110 1100
    0x6D - (109) 0110 1101
    0xFC - (252) 1111 1100
    0xFD - (253) 1111 1101
  byte2-4: 0xFF

ID: 0x311 - Неизвестно
  # Праща се: При запален двигател
  # Честота:  ?
  # Стойност: (винаги?) 0x0 0xFD
  byte0: 0x0
  byte1: 0xFD (253) 1111 1101

ID: 0x335 - Неизвестно
  # Праща се: При контакт/запален двигател
  # Ако колата не е запалена, b2,b4,b6,b7 имат стойност 0
  # b3 има стойност 1, b5 има стойнсот 7F.
  # Честота: 1секунда
  byte0: 0x0  (винаги?)
  byte1: 0xC-0xED
    Горните 4 бите се инкрементват от 0x0 до 0xE (0xF?)
    Долните 4 бите винаги са 0xC (12) 1100
  byte2: 0x53 - 0x73  (83 - 115)
  byte3: 0x40 - 0x54 (64 - 84)
  byte4: 0x33 - 0x45 (51 - 69)
  byte5: 0x6A - 0x93 (106 - 147)
  byte6: 0x64 - 0x91 (100 - 145)
  byte7: 0x3A - 0x64 (58 - 100)

ID: 0x367 - Неизвестно
  # Праща се: На контакт/запален двигател
  # Честота:  ?
  byte0:
    Горните 4 бита варират м/у 1 и 6
         0001 - 0110
    Долните 4 бита са винаги 6?
         0110
  byte1: 0x1 - 0x11 (1-17)
         0000 0001 - 0001 0001
  byte2: 0x0 (винаги?)
  byte3: 0x7,0x18,0x1C,0x23,0x80
         0x07   (7) - 0000 0111
         0x18  (24) - 0001 1000
         0x1C  (28) - 0001 1100
         0x23  (35) - 0010 0011
         0x80 (128) - 1000 0000
  byte4: 0x11,0x12,0xFF
         0x11  (17) - 0001 0001
         0x12  (18) - 0001 0010
         0xFF (255) - 1111 1111
  byte5: 0x63,0x66,0x6F,0x73,0xF6
           99  102  111  115  246
         0x63  (99) - 0110 0011
         0x66 (102) - 0110 0110
         0x6F (111) - 0110 1111
         0x73 (115) - 0111 0011
         0xF6 (246) - 1111 0110
  byte6: 0xD0 (208) - 1101 0000 (Винаги?)

ID: 0x35C - Неизвестно
  # Праща се: (При събитие?)
  # Честота:  ?
  # Data: [4] FF F0 FF A0 (Винаги?)
  #  FF 1111 1111
  #  F0 1111 0000
  #  FF 1111 1111
  #  A0 1010 0000

ID: 0x3B3 - Неизвестно
  # Праща се:
  # Честота:  ?
  #
  # На контакт:
  #   ID: 3B3 [6] 11 0 0 0 0 f0
  # При запален двигател/в движение:
  byte0: 11 (17) 0001 0001 (Винаги?)
  byte1: 0x00 - 0xC8 (0 - 200) (????)
  byte2: 0x00/0xFF   (0 - 255) (????)
  byte3:
      0x00  - 0   0000 0000
      0x03  - 3   0000 0011
      0xF7  - 247 1111 0111
  byte4: 0x00 (Винаги?)
  byte5: 0xF0 (Винаги?)


ID: 0x3BD - Неизвестно
  # Праща се: Запален двигател/в движение
  # Честота:  ?
  byte0: 0xFC/0xFD (252/253)
        1111 1100 - 1111 1101
  byte1: 0xFF  (Винаги?)


ID: 0x3BE - Неизвестно
  # Праща се:
  # Честота:  ?
  #  На контакт: (FE FF Винаги?)
  # (повечето време събщението е FE FF)
  # Нещо активно само в даден момент?
  byte0: 0xAF,0xB1,0xB2,0xB3,0xFE
        0xAF (175) - 1010 1111
        0xB1 (177) - 1011 0001
        0xB2 (178) - 1011 0010
        0xB3 (179) - 1011 0011
        0xFE (254) - 1111 1110
  byte1: 0xF0/0xFF (240 - 255)
        1111 0000 / 1111 1111


ID: 0xD7* - Неизвестно
  # Праща се: На контакт/запален двигател
  # Честота:  През една/няколко секунда(и)
  byte0: 0x0 - 0xFE (FF?) Counter!
  byte1: 0xFF (255) 1111 11111 (Винаги?)




И за цвят , снимка от сегашния варянт (хардуер) на проекта:
Изображение

Следваща

Назад към Електроника

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани

Последни теми
Facebook