А по протоколу ssm1 (старые субару) кто-нибудь подключал ардуину?
Есть информация по подключению к nissan. Известно что подключение производится в моем случае по протоколу ISO-14230 (fast init). Использую вот такой алгоритм:
1. на выход K-line подаю HIGH не менее 300 мс
2. на выход K-line подаю LOW 25 мс
3. на выход K-line подаю HIGH 25 мс
4. далее StartCommunication на скорости 10400
5. прием ответа
Но ECU ответа не дает. Знающие, помогите в чем может быть проблема.Код HTML:#include <LiquidCrystal.h> #define K_IN 0 #define K_OUT 1 //create object to control an LCD. enum { LCD_WIDTH = 16, LCD_HEIGHT = 2 }; LiquidCrystal lcd(7, 6, 4, 5, 2, 3); void setup() { pinMode(K_IN, INPUT); pinMode(K_OUT, OUTPUT); } void loop() { lcd.clear(); lcd.print("ECU init..."); obdConnect(); delay(1000); } void obdConnect() { int n,i; byte buf[20]; buf[0]=0x81; buf[1]=0x10; buf[2]=0xFC; buf[3]=0x81; buf[4]=0x0E; serial_tx_off(); serial_rx_off(); digitalWrite(K_OUT, HIGH); delay(300); digitalWrite(K_OUT, LOW); delay(25); digitalWrite(K_OUT, HIGH); delay(25); Serial.begin(10400); // switch now to 10400 bauds for(i=0;i<5;i++) { Serial.write(buf[i]); } lcd.clear(); n=Serial.available(); if (i > 0) { for (i=0;i<n;i++) { buf[i]=Serial.read();; } lcd.clear(); lcd.print("OK"); } else { lcd.clear(); lcd.print("Error"); } } void serial_rx_off() { UCSR0B &= ~(_BV(RXEN0)); } void serial_tx_off() { UCSR0B &= ~(_BV(TXEN0)); delay(20); }
Есть сомнения в моменте переключения на скорость 10400. Может быть проблема в самом подходе к решению задачи?
В представленном выше есть некоторые неточности. А паузу надо выдержать между записью запроса и приемом ответа.
С новой библиотекой Softwareserial на скорости 10400 не работает. Чтобы заработало надо отредактировать SoftwareSerial.cpp вставив строчку для частоты 16МГц { 10400, 106, 218, 218, 215, }. Проверено, работает.
А как часто и как быстро можно получать данные с OBD-II ?
Каждый ли раз при запросе данных нужно осуществлять вход? или войдя однажды можно запросы сколь угодно долго обрабатывать?
Последний раз редактировалось kadushkin; 26.05.2013 в 23:12.
Данные получаются в соответствии со скоростью обмена. Как запросил - так и получил ответ. Другой вопрос - сколько времени потратишь на обработку этих ответов и как много параметров будешь запрашивать? Запросы надо посылать в цикле и в зависимости от длительности периода получаешь динамику изменения параметров.
А можно с k-line при подключенном бортовом компьютере Мультитроникс параллельно еще и ардуину прицепить? не будут они друг дружке мешать?
Эту тему просматривают: 6 (пользователей: 0 , гостей: 6)