• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Arduino nano + interfejs diagnostyczny DELPHI ds150e - komunikacja

Object Storage Arubacloud
0 głosów
515 wizyt
pytanie zadane 12 marca 2020 w Mikrokontrolery przez R[a]=d(ek); Mądrala (6,370 p.)

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 ;) 

 

 

 

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
0 odpowiedzi 248 wizyt
0 głosów
0 odpowiedzi 1,356 wizyt
0 głosów
1 odpowiedź 126 wizyt

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...