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

injener
Сержант
Сообщения: 105
Зарегистрирован: 23 окт 2016, 09:42

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

Сообщение injener »

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

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

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

Сообщение o_l_e_g64 »

здраствуйте знатоки. может это вам чем поможет, вы звиняйте ежель что да как. :victory:
бортовой_комп_(CODE).ubi
Отправлено спустя 2 минуты 48 секунд:
сам жду этого блока, под названием бортовой компьютер, с нетерпением, по теории мне кажется можно создать его, самое простое мне кажется, брать напрямую показания с датчиков.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03 фев 2017, 12:23

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

Сообщение AVGN »

[ref]o_l_e_g64[/ref], что за блок? Вы его сами сделали? Надо описание как применять.
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн
Аватара пользователя
o_l_e_g64
Рядовой
Сообщения: 12
Зарегистрирован: 04 янв 2018, 16:58

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

Сообщение o_l_e_g64 »

да нет, к сожалению, сам я такое сваять не смогу, уж не обессудьте, просто его скачал. тоже интересуюсь этой темой.
Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03 фев 2017, 12:23

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

Сообщение AVGN »

o_l_e_g64 писал(а): 12 мар 2018, 17:15просто его скачал
откуда? Кто автор?
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн
Аватара пользователя
Golan
Капитан
Сообщения: 827
Зарегистрирован: 26 ноя 2017, 23:18
Откуда: Деревня, 98 домов в Мордовии
Имя: Владимир
Контактная информация:

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

Сообщение Golan »

Я бы не доверил ардуинке машину, конечно если тщательно тесты погонять, то может быть, а так, мало ли что в дороге, ардуинка возьмет и передумает что нибудь.
А где скачали, кто дал наводочку?
Добро не ценится в современном мире, люди от него наглеют!
Аватара пользователя
dekorator
Лейтенант
Сообщения: 427
Зарегистрирован: 06 сен 2015, 09:39
Откуда: Баку

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

Сообщение dekorator »

Нашел на одном форуме.
Fast init 5 Baud (в строке 10 заменяем 0х11 на свой адрес и пересчитываем контрольную сумму)
[spoiler]
#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);
}
}
}
[/spoiler]

Отправлено спустя 4 минуты 45 секунд:
Если одна из инициализаций сработала, то пробуем увидеть температуру
Fast init 5baud + present + температура
[spoiler]
#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);
}
}
}
[/spoiler]
aban2005
Рядовой
Сообщения: 4
Зарегистрирован: 09 мар 2017, 07:29
Откуда: Куйбышево Ростовская область РФ
Имя: Владимир

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

Сообщение aban2005 »

Доброго времени суток!
Есть библиотека https://github.com/stanleyhuangyc/ArduinoOBD, и много разных тем например https://www.drive2.ru/l/5235661/, http://compcar.ru/forum/showthread.php?t=4992.
Честно сказать сам не пробовал, но руки чешутся.
Архив библиотеки, прикрепил, вдруг поможет.
С Уважением!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
AVGN
Капитан
Сообщения: 727
Зарегистрирован: 03 фев 2017, 12:23

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

Сообщение AVGN »

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

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

[ref]aban2005[/ref], и что эта библиотека делает?
Если вы не можете объяснить это просто – значит, вы сами не понимаете этого до конца.
☆Альберт Эйнштейн
Аватара пользователя
Dev1
Майор
Сообщения: 1045
Зарегистрирован: 12 июл 2016, 18:04
Откуда: Гондурас
Поблагодарили: 3 раза

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

Сообщение Dev1 »

AVGN писал(а): 13 мар 2018, 17:18aban2005, и что эта библиотека делает?
[spoiler]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[/spoiler]
Win10-64 FLProg v8.2.3 Portable IDE 1.8.19, 2,x,x :shok:
aban2005
Рядовой
Сообщения: 4
Зарегистрирован: 09 мар 2017, 07:29
Откуда: Куйбышево Ростовская область РФ
Имя: Владимир

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

Сообщение aban2005 »

Доброго времени суток!
AVGN писал(а): 13 мар 2018, 17:18aban2005, и что эта библиотека делает?
Ну Dev1 уже ответил.
С Уважением!
Аватара пользователя
dekorator
Лейтенант
Сообщения: 427
Зарегистрирован: 06 сен 2015, 09:39
Откуда: Баку

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

Сообщение dekorator »

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 окт 2016, 09:42

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

Сообщение injener »

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

Отправлено спустя 3 минуты 21 секунду:
[ref]o_l_e_g64[/ref], Это климат, а не бортовик. Уже где то видел или могу ошибаться... Но судя по всему рабочая схемка!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
o_l_e_g64
Рядовой
Сообщения: 12
Зарегистрирован: 04 янв 2018, 16:58

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

Сообщение o_l_e_g64 »

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

Отправлено спустя 2 минуты 4 секунды:
AVGN писал(а): 12 мар 2018, 17:00[ref]o_l_e_g64[/ref], что за блок? Вы его сами сделали? Надо описание как применять.
нет скачал его здесь https://vk.com/away.php?to=https%3A%2F% ... h2&cc_key=
Аватара пользователя
dekorator
Лейтенант
Сообщения: 427
Зарегистрирован: 06 сен 2015, 09:39
Откуда: Баку

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

Сообщение dekorator »

injener писал(а): 13 мар 2018, 20:42Вот вроде блок инициализации начала работы
Блок может и рабочий. Судя по коду это - ISO 14230-4 KWP 10.4 Kbaud Fast init.
injener
Сержант
Сообщения: 105
Зарегистрирован: 23 окт 2016, 09:42

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

Сообщение injener »

[ref]dekorator[/ref], Почти. Подходит ко всей линейки KWP со скоростью 10.4 Kbaud. один как то упомянул что вроде и на других скоростях работает. но я сомневаюсь... Хотя кто знает про скрытые фишки разборов...?!?!
injener
Сержант
Сообщения: 105
Зарегистрирован: 23 окт 2016, 09:42

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

Сообщение injener »

[ref]o_l_e_g64[/ref], Какие то данные я смог получить, но все так медленно и с дикими пропусками... Поютому я решил отказаться от ФЛПрог в этой поделке... Много хлама и нет возможности управлять временем работы ядра... В точности я не смог расчитать время работы запросов что бы они не мешали друг другу... Да и накладка со сбоем такта из за чего получался допуск +150/250мс что очень жутко воровало время... Прикиньте, 20 тактов с поправкой в +150мс, это уже 3000мс теряем в запросах... а ручками чистить это для психов. Может найду готовый кусок где я смог получить некоторые параметры и обработать вывев на дисплей... Выложу, сами убедитесь потом что это фуфел. А в дуе я чот так и не смог задействовать второй такт, видно или что то не так делал или знаний не хватило... но то что на дуе я не смог даже запустить это меня взбесило. Запрос делает, а дальше висняк.
Аватара пользователя
dekorator
Лейтенант
Сообщения: 427
Зарегистрирован: 06 сен 2015, 09:39
Откуда: Баку

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

Сообщение dekorator »

injener писал(а): 15 мар 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 сен 2017, 14:51
Имя: Андрей
Контактная информация:

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

Сообщение gavik »

o_l_e_g64 писал(а): 12 мар 2018, 16:50здраствуйте знатоки. может это вам чем поможет, вы звиняйте ежель что да как.
бортовой_комп_(CODE).ubi
AVGN писал(а): 12 мар 2018, 17:00o_l_e_g64, что за блок? Вы его сами сделали? Надо описание как применять.
эммм...это мой блок.точнее попытка сделать его на основе кода,но он никак не работал.
injener
Сержант
Сообщения: 105
Зарегистрирован: 23 окт 2016, 09:42

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

Сообщение injener »

dekorator писал(а): 16 мар 2018, 23:08)
Ну как разработка БК?
Ответить

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей