110 likes | 239 Views
Zaznamenávanie a reprezentácia údajov o jazde autom. Bakalárska práca. Marek Tučáni. Dáta. 2 základné zdroje dát GPS modul telefónu/tabletu s Android OS ELM 327 Bluetooth adaptér Zabezpečuje prepojenie zariadenia s riadiacou jednotkou auta
E N D
Zaznamenávanie a reprezentácia údajov o jazde autom Bakalárska práca Marek Tučáni
Dáta • 2 základné zdroje dát • GPS modul telefónu/tabletu s Android OS • ELM 327 Bluetooth adaptér • Zabezpečuje prepojenie zariadenia s riadiacou jednotkou auta • Funguje na princípe request-response (príkazy a odpovede)
ELM 327 zariadenie • OBD2 interface (štandard dnešných automobilov) • Cca 10-15 rokov sa používa • Niekoľko protokolov: (zariadenie podporuje všetky) • ISO15765-4 (CAN-BUS) • ISO14230-4 (KWP2000) • ISO9141-2 • SAE J1850 VPW • SAE J1850 PWM • OBD2 connector:
Komunikácia • BluetoothAdapter, BluetoothDevice • BluetoothSocket • > getOutputStream(); • > getInputStream(); • vytvorenie BS: UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); //default Serial port UUID bs = myBTdevice.createRfcommSocketToServiceRecord(uuid); bs.connect(); outStream = bs.getOutputStream(); inStream = bs.getInputStream();
Príkazy & odpovede • 2 typy komunikácie: so zariadením, s RJ • Za každým odosielaným príkazom treba pridat znak ‘\r’ • príkazy/odpovede pre zariadenie ELM 327: (tzv. AT commands: http://www.sparkfun.com/datasheets/Widgets/ELM327_AT_Commands.pdf ) • “ATRV” – “13.7V >” • “ATI” – “ELM327 v1.5 >” • “ATDP” – “AUTO >”
Príkazy & odpovede • príkazy/odpovede pre RJ (commands + description: http://en.wikipedia.org/wiki/OBD-II_PIDs ) • príkazy sú najčastejšie sú to dve dvojcif. hexa čísla (“0100”, “010F”, “011C”, “0902” a pod.) • odpoveďou je niekoľko hexa čísel, treba vedieť dekódovať • 2 druhy dekódovania (základné spôsoby – inak pre každý druh odpovede je iný postup dekódovania informácie) • Vysvetlenie na príkladoch
Bit-encoded response • Nie každé auto má rovnaké senzory a konštrukciu motora -> nemusí podporovať všetky príkazy • Zisťujeme ktoré sú podporované: • Príkaz:“0100” …odpoveď: “4100983F8010>” • Informácia pre nás: 983F8010(hexa čísla) • Prevedieme na 4-bitové Stringy 1001 10000011 1111 100000000001 0000 • Pozície s hodnotou 1 označujú podporované príkazy nasledovne: 0101, 0104, 0105, 010B, 010C, 010D, 010E, 010F, 0110, 0111, 011C (akú informáciu nám vedia dať a ako je zakódovaná si treba pozrieť v tabuľke)
Hexa-encoded response • zadávame podporované príkazy • príklady: • Príkaz:“0104” …odpoveď: “410463>” • Informácia pre nás: 63(hexa číslo) • Prevedieme ho na int: 99 • Vynásobíme *100 a vydelíme /255:38 • Informácia hovorí o percentuálnom zaťažení motora • Príkaz:“0105” …odpoveď: “410431>” • Informácia pre nás: 31(hexa číslo) • Prevedieme ho na int: 49 • Odpočítame -40:9 • Informácia hovorí o aktuálnej teplote motora v °C
Problém • Pre moju bakalársku prácu potrebujem aktuálnu spotrebu auta • Nedá sa získať jedným príkazom • Ale to by bolo moc ľahké, nie? • Vzorec pre výpočet „približnej“ spotreby: • (MAF / (14,7 * hustota benzínu)) * 3600 * = objem spotrebovaného benzínu za hodinu • *MAF – mass air flow • *14,7 – ideálny pomer vzduch : palivo (14,7 : 1) • Predbežné testovanie ukázalo, že bude potrebné zavedenie konštanty do vzorca (nastavenie pre konkrétne auto), ktorá nameranú spotrebu dostane do „správnych“ hodnôt