ARDUINO в качестве бортового компьютера для автомобиля.

injener
Сержант
Сообщения: 105
Зарегистрирован: 23.10.2016{, 09:42}
Репутация: 2

ARDUINO в качестве бортового компьютера для автомобиля.

#161

Сообщение injener » 04.03.2018{, 08:06}

Predator75, Вот как раз вы меня не поняли! Я вот ни сколечки не сомневаюсь в вас! Я о другом... В прочем не важно. Главное итог. :victory:

Отправлено спустя 21 минуту 19 секунд:
Mining, Не сброшу. Тут ардуино, а у меня для СТМ. В нете полно проектов под ардуино. да и тут я давал сылки на подобное... К сожалению на флпрог полноценно мне не удалось собрать. Много хлама и жуткие тормоза в обработке и выводе на дисплей... Где то валялись блоки прямой инициализации и кое что по мелочи, но это вы и сами соберете, даже лучше чем у меня. Темболее Predator75 использует ардуину как просто передатчик, остальное малина сделает. Так что мои писульки для него не актуальны. Да и работать он как я понял будет через ОБД протокол, а там все проще, готовые команды. Я же использовал прямой доступ что существенно усложняло задачу, но и многие функции были доступны нежели через ОБД протокол. К примеру KWP2000 может в прямом запросе показывать номер включенной скорости или давать точные прогнозы расхода (чуть более 5 точных прогнозов для разных режимов...) ну еще не мало приятных плюшек. В общем нафиг! Мозг свернуть можно!

Аватара пользователя
o_l_e_g64
Рядовой
Сообщения: 12
Зарегистрирован: 04.01.2018{, 16:58}
Репутация: 0

ARDUINO в качестве бортового компьютера для автомобиля.

#162

Сообщение o_l_e_g64 » 12.03.2018{, 16:48}

здраствуйте знатоки. может это вам чем поможет, вы звиняйте ежель что да как. :victory:
бортовой_комп_(CODE).ubi
(649.93 КБ) 142 скачивания
Отправлено спустя 2 минуты 48 секунд:
сам жду этого блока, под названием бортовой компьютер, с нетерпением, по теории мне кажется можно создать его, самое простое мне кажется, брать напрямую показания с датчиков.

Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03.02.2017{, 12:23}
Репутация: 56

ARDUINO в качестве бортового компьютера для автомобиля.

#163

Сообщение AVGN » 12.03.2018{, 17:00}

o_l_e_g64, что за блок? Вы его сами сделали? Надо описание как применять.
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн

Аватара пользователя
o_l_e_g64
Рядовой
Сообщения: 12
Зарегистрирован: 04.01.2018{, 16:58}
Репутация: 0

ARDUINO в качестве бортового компьютера для автомобиля.

#164

Сообщение o_l_e_g64 » 12.03.2018{, 17:15}

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

Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03.02.2017{, 12:23}
Репутация: 56

ARDUINO в качестве бортового компьютера для автомобиля.

#165

Сообщение AVGN » 12.03.2018{, 18:37}

o_l_e_g64 писал(а):
12.03.2018{, 17:15}
просто его скачал
откуда? Кто автор?
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн

Аватара пользователя
Golan
Капитан
Сообщения: 827
Зарегистрирован: 26.11.2017{, 23:18}
Репутация: 77
Откуда: Деревня, 98 домов в Мордовии
Имя: Владимир
Контактная информация:

ARDUINO в качестве бортового компьютера для автомобиля.

#166

Сообщение Golan » 12.03.2018{, 20:44}

Я бы не доверил ардуинке машину, конечно если тщательно тесты погонять, то может быть, а так, мало ли что в дороге, ардуинка возьмет и передумает что нибудь.
А где скачали, кто дал наводочку?
Добро не ценится в современном мире, люди от него наглеют!

Аватара пользователя
dekorator
Лейтенант
Сообщения: 427
Зарегистрирован: 06.09.2015{, 09:39}
Репутация: 7
Откуда: Баку

ARDUINO в качестве бортового компьютера для автомобиля.

#167

Сообщение dekorator » 13.03.2018{, 02:20}

Нашел на одном форуме.
Fast init 5 Baud (в строке 10 заменяем 0х11 на свой адрес и пересчитываем контрольную сумму)
СпойлерПоказать
#include <SoftwareSerial.h>
SoftwareSerial mySerial(12, 13); //R,T
#define TX 13
int mode;
int dotdelay = 1000;
int timeout = 10100;
int timeold;
int messagelength = 1;
//0x11 меняем на свой адрес
byte message1[1] = {0x81}; byte message2[1] = {0x11}; byte message3[1] = {0xF1}; byte message4[1] = {0x81}; byte message5[1] = {0x04};
void setup() {
Serial.begin(115200);
pinMode(TX, OUTPUT);

}

void loop() {
fastinit();
sendrequest();
recievedata();
}
//FAST INIT 5baud--------------------------------------
void fastinit(){
if (!mode) {
Serial.println("starting comunication (fastinit)");
digitalWrite (TX, HIGH); // makes K-line high 3
delay(360); // wait for K-line to be clear 3
digitalWrite (TX, LOW); // makes K-line low 3
delay(25);
digitalWrite (TX, HIGH); // makes K-line high 3
delay(25); //last delay before first message
mySerial.begin(10400); // baud rate of the OBD
Serial.println("starting serial comunication");
mode++;
}
}
void sendrequest(){
sendrequest1();
delay(5);
sendrequest2();
delay(5);
sendrequest3();
delay(5);
sendrequest4();
delay(5);
sendrequest5();
delay(5);
delay(50);
Serial.println("");
}
//PAQUETE SEND INIT-----------------------------------------------------------
void sendrequest1() {
for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
mySerial.write(message1);
Serial.print(message1,HEX);
}
}
void sendrequest2() {
for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
mySerial.write(message2);
Serial.print(message2,HEX);
}
}
void sendrequest3() {
for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
mySerial.write(message3);
Serial.print(message3,HEX);
}
}
void sendrequest4() {
for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
mySerial.write(message4);
Serial.print(message4,HEX);
}
}
void sendrequest5() {
for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
mySerial.write(message5);
Serial.print(message5,HEX);
}
}
//RESEBIR DATA---------------------------------------------------
void recievedata() {
int i = 0;
int dataok = 0;
Serial.println(" waiting for data");
while (!dataok) {
int time = millis();
if ((timeold + timeout) < time) {
timeold = time;
Serial.println(" TIMEOUT");
mode = 0;
mySerial.end();
return;
}
if (mySerial.available()) {
byte inByte = mySerial.read();
Serial.print("");
Serial.println(inByte,HEX);
}
if (Serial.available()) {
byte inByte = Serial.read();
mySerial.print("");
mySerial.print(inByte,HEX);
}
}
}


Отправлено спустя 4 минуты 45 секунд:
Если одна из инициализаций сработала, то пробуем увидеть температуру
Fast init 5baud + present + температура
СпойлерПоказать
#include <SoftwareSerial.h>
SoftwareSerial mySerial(12, 13); //R,T
#define TX 13
int mode;
//variables
int dotdelay = 1000;
int timeout = 1000;
int timeold;
int messagelength = 1;
int messagelength2 = 5;
int messagelength3 = 6;
//в трех нижних строках сообщений 0x11 меняем на свой адрес и пересчитываем контрольную сумму
byte message1[1] = {0x81}; byte message2[1] = {0x11}; byte message3[1] = {0xF1}; byte message4[1] = {0x81}; byte message5[1] = {0x04};
byte message6[6] = {0x82,0x11,0xF1,0x01,0x05,0x8A};
byte message7[5] = {0x81,0x11,0xF1,0x3E,0xC1};
void setup() {
Serial.begin(115200);
pinMode(TX, OUTPUT);

}

void loop() {
fastinit();
sendrequest1();
delay(5);
sendrequest2();
delay(5);
sendrequest3();
delay(5);
sendrequest4();
delay(5);
sendrequest5();
delay(5);
delay(50);
Serial.println("");

recievedata();

}

void fastinit(){
if (!mode) {
Serial.println("starting comunication (fastinit)");
digitalWrite (TX, HIGH); // makes K-line high 3
delay(360); // wait for K-line to be clear 3
digitalWrite (TX, LOW); // makes K-line low 3
delay(25);
digitalWrite (TX, HIGH); // makes K-line high 3
delay(25); //last delay before first message
mySerial.begin(10400); // baud rate of the OBD
Serial.println("starting serial comunication");
mode++;
}
}
//-----------------------------------------------------------
void sendrequest1() {
for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
mySerial.write(message1[i]);
Serial.print(message1[i],HEX);
}
}
void sendrequest2() {
for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
mySerial.write(message2[i]);
Serial.print(message2[i],HEX);
}
}
void sendrequest3() {
for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
mySerial.write(message3[i]);
Serial.print(message3[i],HEX);
}
}
void sendrequest4() {
for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
mySerial.write(message4[i]);
Serial.print(message4[i],HEX);
}
}
void sendrequest5() {
for (int i = 0; ((i < messagelength) & (mode == 1)); i++) {
mySerial.write(message5[i]);
Serial.print(message5[i],HEX);
}
}
//---------------------------------------------------------------------
void pids() {
for (int i = 0; ((i < messagelength3 ) & (mode == 1)); i++) {
mySerial.write(message6[i]);
Serial.print(message6[i],HEX);
}
}
void present() {
for (int i = 0; ((i < messagelength2) & (mode == 1)); i++) {
mySerial.write(message7[i]);
Serial.print(message7[i],HEX);
}
}

void recievedata() {
present();
delay(55);
Serial.println("");
int i = 0;
int dataok = 0;
Serial.println(" waiting for data");
while (!dataok) {
int time = millis();
if ((timeold + timeout) < time) {
timeold = time;
Serial.println(" TIMEOUT");

pids();
delay(55);
Serial.println("");
recievedata();
return;
}
if (mySerial.available()) {
byte inByte = mySerial.read();
Serial.print("");
Serial.print(inByte,HEX);
}
}
}

aban2005
Рядовой
Сообщения: 4
Зарегистрирован: 09.03.2017{, 07:29}
Репутация: 0
Откуда: Куйбышево Ростовская область РФ
Имя: Владимир

ARDUINO в качестве бортового компьютера для автомобиля.

#168

Сообщение aban2005 » 13.03.2018{, 09:25}

Доброго времени суток!
Есть библиотека https://github.com/stanleyhuangyc/ArduinoOBD, и много разных тем например https://www.drive2.ru/l/5235661/, http://compcar.ru/forum/showthread.php?t=4992.
Честно сказать сам не пробовал, но руки чешутся.
Архив библиотеки, прикрепил, вдруг поможет.
С Уважением!
Вложения
OBD2.rar
(10.82 КБ) 111 скачиваний

Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03.02.2017{, 12:23}
Репутация: 56

ARDUINO в качестве бортового компьютера для автомобиля.

#169

Сообщение AVGN » 13.03.2018{, 17:18}

Golan писал(а):
12.03.2018{, 20:44}
Я бы не доверил ардуинке машину
Это же не управление, а всего лишь дополнительная индикация.

dekorator, скетчи здесь мало кто воспринимает, поэтому и пользуем FlProg

aban2005, и что эта библиотека делает?
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн

Аватара пользователя
Dev1
Майор
Сообщения: 1026
Зарегистрирован: 12.07.2016{, 18:04}
Репутация: 59
Откуда: Гондурас

ARDUINO в качестве бортового компьютера для автомобиля.

#170

Сообщение Dev1 » 13.03.2018{, 17:58}

AVGN писал(а):
13.03.2018{, 17:18}
aban2005, и что эта библиотека делает?
СпойлерПоказать
About the library
Most commonly use PIDs are defined in OBD library as followings.

Engine

PID_RPM – Engine RPM (rpm)
PID_ENGINE_LOAD – Calculated engine load (%)
PID_COOLANT_TEMP – Engine coolant temperature (°C)
PID_ENGINE_LOAD – Calculated Engine load (%)
PID_ABSOLUTE_ENGINE_LOAD – Absolute Engine load (%)
PID_TIMING_ADVANCE – Ignition timing advance (°)
PID_ENGINE_OIL_TEMP – Engine oil temperature (°C)
PID_ENGINE_TORQUE_PERCENTAGE – Engine torque percentage (%)
PID_ENGINE_REF_TORQUE – Engine reference torque (Nm)
Intake/Exhaust

PID_INTAKE_TEMP – Intake temperature (°C)
PID_INTAKE_PRESSURE – Intake manifold absolute pressure (kPa)
PID_MAF_FLOW – MAF flow pressure (grams/s)
PID_BAROMETRIC – Barometric pressure (kPa)
Speed/Time

PID_SPEED – Vehicle speed (km/h)
PID_RUNTIME – Engine running time (second)
PID_DISTANCE – Vehicle running distance (km)
Driver

PID_THROTTLE – Throttle position (%)
PID_AMBIENT_TEMP – Ambient temperature (°C)
Electric Systems

PID_CONTROL_MODULE_VOLTAGE – vehicle control module voltage (V)
PID_HYBRID_BATTERY_PERCENTAGE – Hybrid battery pack remaining life (%)
Additional defines can be added to access other OBD-II PIDs.

Directory Descriptions
libraries - all Arduino libraries needed for OBD-II adapter and kits

samples - several simple sketches for testing purpose

nanologger - OBD-II data logger working with 128x64 monochrome OLED display (for Arduino Nano)

megalogger - OBD-II and GPS data logger based on 320x240 TFT LCD display (for Arduino MEGA)

megaloggerHD - OBD-II and GPS data logger based on 480x320 TFT LCD display (for Arduino MEGA)

tester - a testing sketch for OBD-II communication and capability

utilites - useful utility source code for development
Win10-64 FLProg v7.5.2 Portable :fie:

aban2005
Рядовой
Сообщения: 4
Зарегистрирован: 09.03.2017{, 07:29}
Репутация: 0
Откуда: Куйбышево Ростовская область РФ
Имя: Владимир

ARDUINO в качестве бортового компьютера для автомобиля.

#171

Сообщение aban2005 » 13.03.2018{, 18:28}

Доброго времени суток!
AVGN писал(а):
13.03.2018{, 17:18}
aban2005, и что эта библиотека делает?
Ну Dev1 уже ответил.
С Уважением!

Аватара пользователя
dekorator
Лейтенант
Сообщения: 427
Зарегистрирован: 06.09.2015{, 09:39}
Репутация: 7
Откуда: Баку

ARDUINO в качестве бортового компьютера для автомобиля.

#172

Сообщение dekorator » 13.03.2018{, 20:26}

AVGN. Скетчи я выложил чтобы прежде чем делать на их основе блоки для Flprog, injener проверил их на своем авто на предмет точного определения протокола. Я знаю что скетчи воспринимают не все, они как раз и предназначены для тех"не всех", тех кто вдруг захочет помочь.
Injener писал что мол про инициализацию протокола обмена, инфы мало. Как раз из скетчей можно почерпнуть инфу.

Отправлено спустя 4 минуты 36 секунд:
А библиотека что выложил aban2005, работает с ЕЛМ
или с такими:
Freematics OBD-II UART Adapter
Freematics OBD-II I2C Adapter
OBD-II Telematics Mega Kit

injener
Сержант
Сообщения: 105
Зарегистрирован: 23.10.2016{, 09:42}
Репутация: 2

ARDUINO в качестве бортового компьютера для автомобиля.

#173

Сообщение injener » 13.03.2018{, 20:39}

dekorator, Не надо сердиться. Я высказал свое мнение на основе полученных результатов по своей просьбе о помощи...
Вот вроде блок инициализации начала работы... точно не скажу, но помоему из рабочих версий... Что попадется в том хламе после восстановления сброшу тут.

Отправлено спустя 3 минуты 21 секунду:
o_l_e_g64, Это климат, а не бортовик. Уже где то видел или могу ошибаться... Но судя по всему рабочая схемка!
Вложения
INIT2_(CODE).ubi
(9.37 КБ) 100 скачиваний

Аватара пользователя
o_l_e_g64
Рядовой
Сообщения: 12
Зарегистрирован: 04.01.2018{, 16:58}
Репутация: 0

ARDUINO в качестве бортового компьютера для автомобиля.

#174

Сообщение o_l_e_g64 » 14.03.2018{, 06:48}

injener, ежель удасца дать ему жизни, просьба, выложите его пожалуйста в блоки пользователей, слепил бы себе на авто такое.

Отправлено спустя 2 минуты 4 секунды:
AVGN писал(а):
12.03.2018{, 17:00}
o_l_e_g64, что за блок? Вы его сами сделали? Надо описание как применять.
нет скачал его здесь https://vk.com/away.php?to=https%3A%2F% ... h2&cc_key=

Аватара пользователя
dekorator
Лейтенант
Сообщения: 427
Зарегистрирован: 06.09.2015{, 09:39}
Репутация: 7
Откуда: Баку

ARDUINO в качестве бортового компьютера для автомобиля.

#175

Сообщение dekorator » 14.03.2018{, 21:34}

injener писал(а):
13.03.2018{, 20:42}
Вот вроде блок инициализации начала работы
Блок может и рабочий. Судя по коду это - ISO 14230-4 KWP 10.4 Kbaud Fast init.

injener
Сержант
Сообщения: 105
Зарегистрирован: 23.10.2016{, 09:42}
Репутация: 2

ARDUINO в качестве бортового компьютера для автомобиля.

#176

Сообщение injener » 15.03.2018{, 19:58}

dekorator, Почти. Подходит ко всей линейки KWP со скоростью 10.4 Kbaud. один как то упомянул что вроде и на других скоростях работает. но я сомневаюсь... Хотя кто знает про скрытые фишки разборов...?!?!

injener
Сержант
Сообщения: 105
Зарегистрирован: 23.10.2016{, 09:42}
Репутация: 2

ARDUINO в качестве бортового компьютера для автомобиля.

#177

Сообщение injener » 16.03.2018{, 07:58}

o_l_e_g64, Какие то данные я смог получить, но все так медленно и с дикими пропусками... Поютому я решил отказаться от ФЛПрог в этой поделке... Много хлама и нет возможности управлять временем работы ядра... В точности я не смог расчитать время работы запросов что бы они не мешали друг другу... Да и накладка со сбоем такта из за чего получался допуск +150/250мс что очень жутко воровало время... Прикиньте, 20 тактов с поправкой в +150мс, это уже 3000мс теряем в запросах... а ручками чистить это для психов. Может найду готовый кусок где я смог получить некоторые параметры и обработать вывев на дисплей... Выложу, сами убедитесь потом что это фуфел. А в дуе я чот так и не смог задействовать второй такт, видно или что то не так делал или знаний не хватило... но то что на дуе я не смог даже запустить это меня взбесило. Запрос делает, а дальше висняк.

Аватара пользователя
dekorator
Лейтенант
Сообщения: 427
Зарегистрирован: 06.09.2015{, 09:39}
Репутация: 7
Откуда: Баку

ARDUINO в качестве бортового компьютера для автомобиля.

#178

Сообщение dekorator » 16.03.2018{, 23:08}

injener писал(а):
15.03.2018{, 19:58}
Подходит ко всей линейки KWP со скоростью 10.4 Kbaud
Не может он подходить ко всей линейке KWP. Тут надо добавить "почти подходит". Можно посмотреть в "вики" что такое Fast init и Fast init 5 Baud! На счёт Flprog. Не знаю из за чего у Вас там дикие пропуски, но судя по личному опыту, большая часть не удач связанных с некорректной работой задуманного, от невнимательности, неправильного подхода и недостаточной подготовки и знаний. Я сейчас адаптирую один проект Б.К. под свою машину. В ней был установлен свой Б.К. но на японском и не работал без штатной магнитолы. Протокол MUT. На данный момент уже работает и выводится часть данных ( моментальный расход в час, скорость, расход литров на 100 км, обороты, напряжение, температура двигателя ) на 4.3 дюймовый сенсорный TFT LCD + ардуино мега 2560. Часть делал на FLp штатными блоками, в основном связи между блоками и мелкие расчёты ну а основное это пользовательские блоки - инициализация, связь, индикация на TFT. По началу были "дикие пропуски" :yes: Уже думал на малинку переходить -))

gavik
Рядовой
Сообщения: 18
Зарегистрирован: 04.09.2017{, 14:51}
Репутация: 0
Имя: Андрей
Контактная информация:

ARDUINO в качестве бортового компьютера для автомобиля.

#179

Сообщение gavik » 02.04.2018{, 14:29}

o_l_e_g64 писал(а):
12.03.2018{, 16:50}
здраствуйте знатоки. может это вам чем поможет, вы звиняйте ежель что да как.
бортовой_комп_(CODE).ubi
AVGN писал(а):
12.03.2018{, 17:00}
o_l_e_g64, что за блок? Вы его сами сделали? Надо описание как применять.
эммм...это мой блок.точнее попытка сделать его на основе кода,но он никак не работал.

injener
Сержант
Сообщения: 105
Зарегистрирован: 23.10.2016{, 09:42}
Репутация: 2

ARDUINO в качестве бортового компьютера для автомобиля.

#180

Сообщение injener » 18.11.2018{, 10:10}

dekorator писал(а):
16.03.2018{, 23:08}
)
Ну как разработка БК?

Ответить

Вернуться в «Проекты различных устройств на Arduino»