OBD II, PID príkazy pre O3
Moderátor: Moderátoři
OBD II, PID príkazy pre O3
Chcel by som si spraviť niečo čo mi bude signalizovať regeneráciu DPF (k tomu nejaké zaujimavosti ako teplota DPF, nejaký tlak, tlak turba...).
Cez arduino. Mám teda DUE, ES8266, ELM327, cez Wifi.
Keďže najdené projekty su s knižnicami ktoré dávno nefungujú, idem bez knižníc. Už dokážem načítať napr. otáčky motora, PID - "010C" a zopár ďalších. Ale nič čo by sa približovalo tomu čo chcem. Dokonca sa viem napichnuť na komunikáciu medzi mobilom - apka WagDPF a ELM327, ale vidim (na serial monitore zatiaľ) len odpovede ELM, neviem ake príkazy posiela mobil.
Vie mi niekto poradiť konkretne PID ktoré moja O3 podporuje?
Vprípade že bude zaujem, postnem sem výsledný "projekt".
Vopred Ďakujem
- vasekpetr1
- Příspěvky: 989
- Registrován: 20 čer 2005, 00:00
- Bydliště: Hospoda u Třebíče
Ale je fakt, že spuštění regenerace jsem poznal i bez kontrolky - motor dostal jiný zvuk, rapidně vzrostla okamžitá spotřeba, motor zasmrděl a šel za mnou bílý dým
BTW, biely dym som si doteraz nevšimol - dá sa podľa smradu keď stojíš, smrdí to ako spalena guma, a spaliny z výfuku su vtedy fest horúce. Čo sa týka spotreby, koncern nemá problem klamať, a žiaden viditeľný nárast spotreby na palubáku nevidim
Kód: Vybrat vše
{0x03,0x22,0x29,0x5A,0x55,0x55,0x55,0x55}, //kilometry
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
//0x06 0x62 0x29 0x5A 0x02 0x50 0xD7 0xAA
{0x03,0x22,0x20,0x8D,0x55,0x55,0x55,0x55}, // -//- od posleni reg. /10
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
//0x05 0x62 0x20 0x8D 0x0C 0xDB 0xAA 0xAA
{0x03,0x22,0x3D,0x7F,0x55,0x55,0x55,0x55}, // teplota dpf /10
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
//0x05 0x62 0x3D 0x7F 0x04 0x56 0xAA 0xAA
{0x03,0x22,0x20,0x8B,0x55,0x55,0x55,0x55}, // zaplneni dpf 0-24 g /100
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
//0x05 0x62 0x20 0x8B 0x08 0xAC 0xAA 0xAA
{0x03,0x22,0x20,0x87,0x55,0x55,0x55,0x55}, // stav dpf1 ?
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
//0x05 0x62 0x20 0x87 0x00 0x00 0xAA 0xAA
{0x03,0x22,0x40,0x6C,0x55,0x55,0x55,0x55}, // oil ash residue
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
//0x05 0x62 0x40 0x6C 0x10 0x9A 0xAA 0xAA
{0x03,0x22,0x20,0x88,0x55,0x55,0x55,0x55}, // stav dpf2 ?
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
//0x05 0x62 0x20 0x88 0x00 0x00 0xAA 0xAA
};Kód: Vybrat vše
1/2/2025,11:38:18-158087,490,222,44.03,23.50,0,0
1/2/2025,11:39:18-158088,491,225,44.03,23.54,0,0
1/2/2025,11:40:18-158089,492,261,44.03,23.59,0,0
1/2/2025,11:41:18-158090,493,265,44.03,23.60,0,0
1/2/2025,11:42:18-158091,494,305,44.03,23.63,0,0
1/2/2025,11:43:18-158093,496,322,44.03,23.66,0,0
1/2/2025,11:44:18-158094,497,278,44.03,23.70,0,0
1/2/2025,11:45:18-158095,498,274,44.03,23.79,0,0
1/2/2025,11:46:18-158097,500,288,44.03,23.89,0,0
1/2/2025,11:47:18-158098,501,308,44.03,23.97,0,0
1/2/2025,11:48:18-158100,503,295,44.03,24.06,7,0 <-
1/2/2025,11:49:23-158101,504,429,44.04,24.14,7,0 <-
1/2/2025,11:50:23-158103,506,506,44.04,23.80,7,0 <-
1/2/2025,11:51:23-158104,507,538,44.04,22.87,7,0 <-
1/2/2025,11:52:23-158106,508,556,44.04,21.57,7,0 <-
1/2/2025,11:53:23-158107,510,568,44.04,19.97,7,0 <-
1/2/2025,11:54:23-158108,511,575,44.04,18.08,7,0 <-
1/2/2025,11:55:23-158109,512,566,44.04,16.38,7,0 <-
1/2/2025,11:56:23-158110,513,557,44.04,15.53,7,0 <-
1/2/2025,11:57:23-158110,513,560,44.04,14.97,7,0 <-
1/2/2025,11:58:23-158112,514,564,44.04,14.10,7,0 <-
1/2/2025,11:59:23-158112,515,597,44.04,12.78,7,0 <-
1/2/2025,12:0:23-158113,516,603,44.04,11.03,7,0 <-
1/2/2025,12:1:23-158113,516,593,44.04,9.74,7,0 <-
1/2/2025,12:2:23-158113,516,574,44.04,9.19,7,0 <-
1/2/2025,12:3:23-158113,516,577,44.04,8.70,7,0 <-
1/2/2025,12:4:23-158113,516,593,44.04,8.06,7,0 <-
1/2/2025,12:5:24-158113,516,594,44.04,7.49,7,0 <-
1/2/2025,12:6:24-158113,516,590,44.04,6.98,7,0 <-
1/2/2025,12:7:24-158113,0,592,44.04,6.26,0,0
1/2/2025,12:8:24-158113,0,591,44.04,5.49,0,0Kód: Vybrat vše
nowTime.day ,nowTime.month,nowTime.year ,nowTime.hour ,nowTime.minute ,nowTime.second, km_1 ,km_2/10,tmp_/10 ,dpf_oar/100,mass_/100 ,dpf_1 ,dpf_2bohužiaľ moje doterajše skusenosti su max poslat jeden comand
napr "010C"
absolutne netušim ako by som mal poslať to čo si postol. Vieš mi s tým nejako pomocť?
napr moj kod na zistenie otačok , dalo by sa aby vratil teplotu DPF ? (nemusi rovno vypocitat teplotu v °C , stačilo by mi ta odpoveď v hexa)
Kód: Vybrat vše
#define ESP8266 Serial2
void sendAT(String cmd, int wait = 1000) {
Serial.print("AT príkaz: ");
Serial.println(cmd);
ESP8266.println(cmd);
delay(wait);
while (ESP8266.available()) {
Serial.write(ESP8266.read());
}
Serial.println();
}
// Funkcia na výpočet RPM z odpovede
int parseRPM(String response) {
if (response.startsWith("41 0C")) { // Overíme, či je to správna odpoveď
int A = strtol(response.substring(6, 8).c_str(), NULL, 16); // 3. byte
int B = strtol(response.substring(9, 11).c_str(), NULL, 16); // 4. byte
return ((A * 256) + B) / 4; // Výpočet RPM
}
return -1; // Neplatná odpoveď
}
void setup() {
Serial.begin(115200); // PC monitor
ESP8266.begin(115273); // ESP8266 komunikácia
delay(3000);
Serial.println("ESP8266 + ELM327 Wi-Fi test");
sendAT("AT");
sendAT("AT+CWMODE=1");
sendAT("AT+CWJAP=\"WiFi_OBDII\",\"\"");
delay(5000);
sendAT("AT+CIPSTART=\"TCP\",\"192.168.0.10\",35000");
delay(2000);
}
void loop() {
sendAT("AT+CIPSEND=5");
sendAT("010C\r"); // Pošleme požiadavku na RPM
delay(1000); // Počkáme na odpoveď
String response = "";
while (ESP8266.available()) {
char c = ESP8266.read();
response += c;
}
int rpm = parseRPM(response);
if (rpm != -1) {
Serial.print("RPM: ");
Serial.println(rpm);
} else {
Serial.println("Neplatná odpoveď");
}
delay(2000); // Čítanie každé 2 sekundy
}