Cześć,
Potrzebuję pomocy z ARDUINO(nano) i interfejsem diagnostycznym delphi ds150e.
Chcę nawiązać komunikację za pomocą arduino z tym interfejsem, aby odczytywać dane ze swojego samochodu (obroty silnika, prędkość i inne) - potrzebuję mieć te dane w arduino żebym później mógł je przetwarzać...
Na początku podsłuchałem komunikację pomiędzy PC a DELPHI za pomocą programu "Serial Port Monitor".
Wyciągnąłem z 'loga' tej komunikacji komendę za pomocą której DELPHI łączy się z moim samochodem (Focus mk1 2.0B 16v 131km).
Wyciągnąłem też zapytanie o obroty silnika oraz zakończenie komunikacji z samochodem.
Konfiguracja jakiej interfejs DELPHI potrzebuje do poprawnej komunikacji / transmisji danych:{
baudrate = 115200
parity = Even
databits = 8
stopbits = 1 bit stop
}
Dane przesyłane są w postaci HEX.
połącz z samochodem: 2a 36 35 39 5f 30 34 5f 36 34 5f 31 30 5f 46 35 5f 31 30 0d
zapytaj o obroty: 2a 36 30 38 5f 36 34 5f 31 30 5f 46 35 5f 32 32 5f 31 31 5f 36 35 0d
konczenie połączenia: 2a 36 30 37 0d
W sytuacji gdy podłączam: Samochód;ODB2 <=> DELPHI <=> PC i wysyłam komendę
"2a 36 35 39 5f 30 34 5f 36 34 5f 31 30 5f 46 35 5f 31 30 0d"
[09/03/2020 18:37:15] Written data (COM6) |
|
2a 36 35 39 5f 30 34 5f 36 34 5f 31 30 5f 46 35
*659_04_64_10_F5
|
za pomocą terminala (program Serial Port Monitor)
to urządzenie łączy się z samochodem, słychać, że przekaźnik się w nim przełącza oraz diody sygnalizujące świeca się na zielono a także urządzenie daje odpowiedź na terminal (
[09/03/2020 18:37:15] Read data (COM6) |
|
2a 32 30 0d *20.
|
)
ALE jeśli podłączam: Samochód;ODB2 <=> DELPHI <=> ARDUINO <=> PC
i z arduino za pomocą napisanego programy wysyłam tę komendę do połączenia nie ma żadnej reakcji. W urządzeniu nie słychać żadnego przekaźnika, kolor diod pozostaje niebieski a na arduino w monitorze portu szeregowego nie ma żadnej odpowiedzi.
Połączenie przewodami pomiędzy ARDUINO a DELPHI:
RX - TX
TX - RX
GND - GND
VCC - 5V(VCC)
Program na arduino:
//#include <SoftwareSerial.h>
//SoftwareSerial mySerial(10, 11, SERIAL_8E1); // RX, TX , parity SERIAL_8E1
void setup() {
Serial.begin(115200, SERIAL_8E1); // SERIAL_5E1
// połącz: 2a 36 35 39 5f 30 34 5f 36 34 5f 31 30 5f 46 35 5f 31 30 0d
// zapytanie RPM: 2a 36 30 38 5f 36 34 5f 31 30 5f 46 35 5f 32 32 5f 31 31 5f 36 35 0d
// zakoncz połączenie: 2a 36 30 37 0d
char crq_Connection[] = {0x2a, 0x36, 0x35, 0x39, 0x5f, 0x30, 0x34, 0x5f, 0x36, 0x34, 0x5f, 0x31, 0x30, 0x5f, 0x46, 0x35, 0x5f, 0x31, 0x30, 0x0d};
Serial.write(crq_Connection, sizeof(crq_Connection));
delay(200);
// byte crq_Connectionx[] = {0x2a, 0x36, 0x35, 0x39, 0x5f, 0x30, 0x34, 0x5f, 0x36, 0x34, 0x5f, 0x31, 0x30, 0x5f, 0x46, 0x35, 0x5f, 0x31, 0x30, 0x0d};
// Serial.write(crq_Connectionx, sizeof(crq_Connectionx));
// delay(200);
//
// uint8_t crq_Connectionq[] = {0x2a, 0x36, 0x35, 0x39, 0x5f, 0x30, 0x34, 0x5f, 0x36, 0x34, 0x5f, 0x31, 0x30, 0x5f, 0x46, 0x35, 0x5f, 0x31, 0x30, 0x0d};
// Serial.write(crq_Connectionq, sizeof(crq_Connectionq));
// delay(200);
//
}
void loop() {
delay(1000);
byte RPM_QUERY[] = {0x2a, 0x36, 0x30, 0x38, 0x5f, 0x36, 0x34, 0x5f, 0x31, 0x30, 0x5f, 0x46, 0x35, 0x5f, 0x32, 0x32, 0x5f, 0x31, 0x31, 0x5f, 0x36, 0x35, 0x0d };
Serial.write(RPM_QUERY, sizeof(RPM_QUERY));
if (Serial.available()) {
char c = Serial.read();
Serial.print(c, HEX);
}
//
// if( Serial.available() > 0 ){
//
// Serial.println(Serial.read(), HEX);
// //while(Serial.available() > 0){
// //RESPONSE_DATA = Serial.readString();
// //}
// }
// byte RPM_QUERY[] = {0x2a, 0x36, 0x30, 0x38, 0x5f, 0x36, 0x34, 0x5f, 0x31, 0x30, 0x5f, 0x46, 0x35, 0x5f, 0x32, 0x32, 0x5f, 0x31, 0x31, 0x5f, 0x36, 0x35, 0x0d };
// Serial.write(RPM_QUERY, sizeof(RPM_QUERY));
//
// if( Serial.available() > 0 ){
// RESPONSE_DATA = Serial.readString();
// Serial.println(RESPONSE_DATA);
// while(Serial.available() > 0){
// RESPONSE_DATA = Serial.readString();
// }
//
// Serial.println(RESPONSE_DATA);
// }
}
Kombinowałem już na różne sposoby.. Proszę o konkretne wskazowi jak mogę to zrobić, abym mógł nawiązać komunikację pomiędzy arduino a delphi (request => <=response ). Co robię nie tak, co mogę zrobić itp..
Dziękuję i pozdrawiam ;)