Interfață OBD II prin Bluetooth


Modulul HC-05 permite realizarea unei conexiuni master sau slave la un dispozitiv bluetooth compatibil (teoretic HC-06, care este doar un slave).
HC-05 este pilotat în comanda AT. Folosește 3,3V, deci fii atent dacă îl folosești cu un arduino de 5V. În 3.3V, acest lucru este foarte potrivit pentru un card STM32F401RE (cel pe care îl folosesc eu).

bluetooth

HC-05 are 2 moduri de funcționare:

  • un mod AT, care vă permite să îl configurați,
  • un mod de date sau un mod transparent, care permite transmiterea directă a datelor prin linkul serial.


Pentru a selecta unul dintre cele 2 moduri, modulul are un pin numit KEY care vă permite să comutați de la un mod la altul. În cazul nostru, trebuie să pornim modulul în modul AT, apoi după conectarea bluetooth, modulul va trece automat în modul de date. Apoi, nu este nevoie să reveniți la modul AT, deoarece vom fi conectați la dispozitivul OBD și vom dialoga cu vehiculul.

  • Mod AT: Tasta = 1
  • Mod date: cheie = 0

Există 2 versiuni ale cardului HC-05: una cu pinul „KEY” și una fără. este mai bine să cumpărați un modul cu acest pin. Dacă modulul dvs. nu îl are, trebuie să lipiți un fir pe un pin de conexiune al modulului bluetooth în sine: (pinul 34 din partea dreaptă sus)


Pentru a face o conexiune, trebuie să preluați adresa Mac a modulului Bluetooth cu care doriți să comunicați.

Apoi secvența care trebuie efectuată în comanda AT (KEY = 1) este următoarea:

Script de conexiune la un modul Bluetooth


Fiecare linie trebuie să se încheie cu un „\ r \ n” în caz contrar, comenzile nu vor fi luate în considerare de modulul HC-05.
La sfârșitul acestei serii de comenzi, dacă Adresa Mac este cea corectă (aici 88: 18: 56: 68: 98: EB), atunci trebuie să fiți conectat cu modulul bluetooth slave HC-06 sau altul (aici Modul OBD și în special ELM327).

De acum înainte, trebuie să treceți la modul transparent, și anume că pentru a comunica cu modulul slave de la distanță, trebuie să setați pinul "KEY" la 0.

OBD și ELM327


ELM327 este un cip dedicat protocolului OBD. Este utilizat pentru interfața diferitelor magistrale ale conectorului OBD la o singură legătură de comunicație serială.
ELM327 funcționează în 2 moduri:

  • Mod AT: acestea sunt comenzi specifice pentru a configura ELM327 (de exemplu, configurația protocolului CAN utilizat) sau pentru a solicita anumiți parametri, cum ar fi tensiunea bateriei, de exemplu
  • Mod OBD: este o sintaxă specială care permite citirea/scrierea valorilor OBD. Aceste comenzi vor fi folosite pentru a citi viteza, turația motorului etc.

Primul pas este inițializarea ELM327:

Înainte de a putea comunica cu ELM327 și poate inițializa protocolul cu computerul vehiculului dvs., este recomandabil să porniți vehiculul. La unele vehicule motorul trebuie pornit, la altele contactul în modul accesorii este suficient.


Pentru a comunica cu computerul, trebuie să specificați protocolul care trebuie utilizat, care trebuie să fie cel al vehiculului. În cazul Renault Lagune 2, este protocolul 5 (FAST).

  • 0 - Automat
  • 1 - SAE J1850 PWM (41,6 kbaud)
  • 2 - SAE J1850 VPW (10,4 kbaud)
  • 3 - ISO 9141-2 (5 baud init, 10,4 kbaud)
  • 4 - ISO 14230-4 KWP (5 baud init, 10,4 kbaud)
  • 5 - ISO 14230-4 KWP (inițiere rapidă, 10,4 kbaud)
  • 6 - ISO 15765-4 CAN (11 biți ID, 500 kbaud)
  • 7 - ISO 15765-4 CAN (29 biți ID, 500 kbaud)
  • 8 - ISO 15765-4 CAN (11 biți ID, 250 kbaud)
  • 9 - ISO 15765-4 CAN (29 biți ID, 250 kbaud)
  • A - SAE J1939 CAN (29 biți ID, 250 * kbaud)
  • B - USER1 CAN (11 * bit ID, 125 * kbaud)
  • C - USER2 CAN (11 * bit ID, 50 * kbaud)

ELM327 are o comandă pentru a-i spune să găsească automat protocolul de utilizat. La rândul meu, acest mod nu a funcționat niciodată și a provocat o mizerie pe autobuz și computerul a indicat erori false. O simplă oprire a aprinderii și reaprinderii vehiculului restabilește funcționarea computerului, nu este distructivă (pentru ceea ce am observat)


Comenzile de trimis sunt:

Script de inițializare ELM327

De fiecare dată când este trimisă o comandă, care se termină cu un „\ n”, ELM327 își returnează răspunsul în format text și termină acest răspuns cu un „>”. Acesta este promptul care indică faptul că poate fi trimisă o nouă comandă.

Odată finalizată inițializarea, putem trece la probleme serioase: citirea informațiilor OBD.

Puteți căuta în documentul ELM327 protocolul de la pagina 30-31 pentru a înțelege mai bine, dar iată un rezumat:

Pentru a citi datele OBD, trebuie să știți în ce mod doriți să lucrați: (informații preluate din Wikipedia):

  • 01 Afișați datele curente
  • 02 Afișați datele de blocare a cadrelor
  • 03 Afișați codurile de eroare de diagnosticare stocate
  • 04 Ștergeți codurile de diagnosticare a erorilor și valorile stocate
  • 05 Rezultatele testelor, monitorizarea senzorului de oxigen (numai non CAN)
  • 06 Rezultatele testelor, monitorizarea altor componente/sistem (rezultatele testelor, monitorizarea senzorului de oxigen numai pentru CAN)
  • 07 Afișați codurile de diagnosticare a problemelor în așteptare (detectate în timpul curentului sau ultimului ciclu de conducere)
  • 08 Controlul funcționării componentei/sistemului de la bord
  • 09 Solicitați informații despre vehicul
  • 0A Coduri permanente de diagnosticare a erorilor (DTC-uri) (DTC-uri șterse)