Projet Control module

Bonjour, lol

Les bonnes valeurs sont affichés sur:

  • sur le programme correspondant à l'interface usb
  • sur le moniteur série de l'arduino (après calcul)

Je vais essayer d'être plus clair car c'est simple mais pas évidement à expliquer.

1.En premier lieu voici Le-Generic-Nissan-ECU-Data-register-table-Ver-2.pdf qui nous donne le langage à savoir pour discuter avec l'écu.

  1. Le protocole à suivre si on veut que l'écu nous comprenne et réponde Consult-Protocol-&-Commands-Issue-6.pdf

3.Les commandes envoyées (sources http://arduino.cybrax-computers.com/:

    Serial2.write(0x5A);///ECU_COMMAND_READ_REGISTER 0x5A
    Serial2.write(0x0B);//ECU_REGISTER_VEHICLE_SPEED 0x0B
    Serial2.write(0x5A);///ECU_COMMAND_READ_REGISTER 0x5A
    Serial2.write(0x00);//ECU_REGISTER_TACH_MSB 0x00
    Serial2.write(0x5A);///ECU_COMMAND_READ_REGISTER 0x5A
    Serial2.write(0x01);//ECU_REGISTER_TACH_LSB 0x01
    Serial2.write(0x5A);///ECU_COMMAND_READ_REGISTER 0x5A
    Serial2.write(0x08);//ECU_REGISTER_COOLANT_TEMP 0x08
    Serial2.write(0x5A);///ECU_COMMAND_READ_REGISTER 0x5A
    Serial2.write(0x0C);//ECU_REGISTER_BATTERY_VOLTAGE 0x0C
....
    Serial2.write(0xF0);//ECU_COMMAND_TERM 0xF0

On envoie à l'écu "(0x5A)" (je veux la valeur suivante) suivi du type ex: "(0x0B)".

4.Les donnés reçus par l'arduino transmisse du programme correspondant à l'interface usb à l'écu (HEX mode):

6
29
0
29
7F
29
7A
29
F00
29
1E
29
3A
29
1D
29
75
29
39
29
79
29
1F
29
7D
29
7B
29
74
29
76
29
38
29
70
29
6F
0

Même si ce n'ai pas ce que je voulais recevoir, on distingue une similitude.

5.Je me suis donc basé sur le fait que le (0x5A) et reconnue en tant que "29" par l'arduino. Qui au final n'a pas encore été utiliser jusque là.

6.J'ai crée un tableau de valeurs du nombre de demande du Pc "byte consult[28]" et un calcul pour sortir sur le Serial moniteur la bonne valeur:

Serial2.readBytes(consult, 28);
    if (consult[0] == 0xFF) {
      byteconsult();
      Print();
}

void byteconsult() {
  //Speed kph
  sped = consult[4] * 2;
}
void Print() {
  Serial.print("Speed kph="); Serial.println(sped);
}

Conclusion :

1-Soit l'interface USB (FTDI) ne me permet pas de comprendre correctement les bonnes valeurs, ici pas très important sauf si l'on veut que l'arduino discute seul avec l'écu.
=> l'interface maison comprend l'écu mais pas le FTDI ?

2.Soit le Serial moniteur n'affiche pas les bonnes valeurs ?

Ps:La discussion entre arduino et écu à seulement été tester avec les valeurs HEX "(0x5A)" et pas "0x29" (comme reçue avec l'interface usb).