Jako softwarový inženýr pracující v automobilovém průmyslu se zajímám o autonomní vozidla, metody měření dat a analýzu. V následujícím textu popíšu vlastní měřicí systém postavený od nuly a prezentuji některé experimentální výsledky z praktických testů s Raspberry Pi, BNO055 a ELM327. Výstupem je ucelený návod, jak propojit OBD-II rozhraní s Raspberry Pi a jak zpracovávat data o dynamice vozidla.
Co je potřeba a proč zvolit ELM327 a BNO055
ELM327 je široce používaný adaptér OBD-II, který umožňuje přístup k datům motoru a dalším parametrům vozidla prostřednictvím standardního rozhraní. Slouží jako most mezi ECU vozidla a vnějším zařízením, jako je počítač či smartphone, a umožňuje získat diagnostická a výkonnostní data. BNO055 je kompaktní senzor orientace a pohybu, který lze ovládat knihovnou Adafruit_CircuitPython a slouží k měření zrychlení a rotace, včetně výpočtu úhlů pomocí kvaternionů. Raspberry Pi zde hraje roli hlavního počítače pro sběr dat z obou senzorů.
KYSL: Kombinace ELM327 a BNO055 umožňuje sledovat dynamiku vozidla i při omezených prostředcích. ELM327 poskytuje data z ECU, zatímco BNO055 doplňuje měření pohybu a rotace pro analýzu dynamiky, aniž by bylo nutné používat drahé senzory pro každý kanál.
Architektura systému a průběh měření
1) Raspberry Pi slouží jako hlavní počítač, který sbírá data z BNO055 a ELM327. 2) BNO055 je kompaktní senzor, z nějž pocházejí údaje o zrychlení a úhlech, a pro jejich zpracování se používá Python knihovna Adafruit_CircuitPython. 3) ELM327 je rozhraní OBD-II pro přístup k údajům motoru a dalších parametrech vozidla.
Oba senzory spolupracují na základě definovaného časového průběhu a přenášejí data do datového démonu v reálném čase. Pro validaci se používá iPhone aplikace phyphox, která měří více fyzikálních veličin a slouží jako referenční zdroj dat.
Experimentální postup a zpracování dat
V experimentální části byly provedeny sinusové signály pro ověření, že měřicí systém generuje správná měření bez chyb. Pro validaci byl použit phyphox s frekvencí vzorkování 10 Hz a srovnání s daty z BNO055/ELM327. Dále byly provedeny testy v terénu, kde byla frekvence vzorkování u BNO055 až 50 Hz a data z ELM327 byla vzorkována na 4 Hz. Zaznamenané záznamy ukazují, že signály z BNO055 a ELM327 mohou vykazovat šum, výstupky a NaN hodnoty, které je nutné post-filtrovat.
Pro zpracování dat byly použity IQR filtr a Butterworthův nízkopass filtr s různými prahovými frekvencemi (fc). Z porovnání s referenčními daty z phyphoxu vyplývá, že raw data mohou obsahovat vyšší frekvenční komponenty a šum, zatímco filtrovaná data se blíží referenci. U ELM327 byly pozorovány delší zpoždění vzorkování ve srovnání s BNO055, což omezuje jeho použitelnost pro vysoce přesné vzorkování.
Další sekce ukazuje data z motoru získaná přes ELM327, která zahrnují otáčky motoru a polohu škrticí klapky. Tato data pomáhají porozumět obecné obsluze plynového pedálu. Při testech byla zpozorována rozdílná odezva časové synchronizace mezi oběma senzory; ELM327 si udrží dobrou přesnost jen do cca 5 Hz, zatímco BNO055 dosahuje vyššího vzorkovacího výkonu.
Softwarová architektura a nastavení měření
Namontovaný systém používá software, který počítá dynamiku z více senzorů a umožňuje měření i po úpravě nastavení v YAML souboru. Data se ukládají do CSV souboru a jsou zobrazována v reálném čase. Sensor fusion skript spravuje sběr dat, filtraci a ukládání do souborů s timestamps. Eulerovy úhly (roll, pitch, yaw) se vypočítávají z quaternion dat a zahrnují informační stav kalibrace. ELM327 část definuje třídu pro komunikaci a měření prostřednictvím OBD-II protokolu; test_main funkce ukazuje sběr dat v cyklu a vyhodnocení zpoždění a spolehlivosti.
Celkově software umožňuje jednoduchou změnu nastavení, dynamické vytváření sensor instancí, aplikaci filtrů a zobrazení dat v reálném čase. Dále zajišťuje výstup do CSV a správu bufferu s průběžnou diagnostikou výkonu, jako je zpoždění vzorkování a spolehlivost.
Když pracujete s OBD-II a ELM327 v praxi
ELM327 je nejlevnější a nejméně kvalitní volba mezi senzory, které mohou čerpat data z více ECU ve vozidle přes OBD-II. Je důležité si uvědomit omezení rychlosti vzorkování a spolehlivosti, zejména pokud je cílem zachytit dynamické odezvy na zrcadlení vozidlové dynamiky. Přesto lze ELM327 efektivně využít pro obecné sledování stavu motoru a rozsahu throttle operací, a to ve spojení s BNO055 pro širší pohled na dynamiku.
Instalace a konfigurace zahrnuje několik kroků: připrava Raspbian systému, zapojení USB Bluetooth dongle a OBD-II Bluetooth adaptéru, připojení k napájení vozidla a následné nastavení Bluetooth stacku BlueZ pro párování a spojení s ELM327. Dále je vhodné vzít v úvahu kompatibilitu adaptérů a správné nastavení nového řádku v terminálu pro načítání znaků z UARTu, pokud používáte serial terminal.
Vybrané obrázky a videa

Ilustrace ukazuje koordinační soustavu BNO055 a způsob výpočtu úhlu rotace z kvaternionů, který se ve výpočtech používá pro získání Eulerových úhlů.

Schema ukazuje propojení jednotlivých komponent s Raspberry Pi, včetně napájení a komunikačních rozhraní I2C/SPI pro BNO055 a UART pro ELM327.

Infografika znázorňuje tok dat od ECU přes ELM327 do Raspberry Pi, včetně průřezů vzorkování a filtrace.
Autodiagnostika ELM 327 V2.1 Bluetooth OBDII - Profigaráž.sk
Video demonstruje vzorkování signálů v reálném čase s zobrazením filtrů a ukázek zpoždění mezi senzory.
Tabulka ukázkových dat a efektivity filtrů
| Zdroj | Frekvence vzorkování | Filtrování | |
|---|---|---|---|
| BNO055 | 50 Hz | IQR + Butterworth | nižší šum, lepší shoda s referencí |
| ELM327 | 4 Hz | - | větší zpoždění, omezená rychlost vzorkování |
| Referenční phyphox | - | - | slouží jako referenční měření |
Metadata a doplňující poznámky
Článek popisuje projekt zaměřený na vývoj měřicího systému pro zachycení chování vozidla se zaměřením na dynamiku. Přestože projekt pokračuje, bylo identifikováno, že ELM327 nemusí spolehlivě dosahovat vysokých vzorkovacích frekvencí (>5 Hz) s dobrou přesností.
- Adafruit.
- Adafruit.
- Adafruit.
- Adafruit.
- Amazon. Elm327 Launchh OBD2 Professional Bluetooth Scan Tool a další popisy.
- MathWorks.
- Apple.
- phyphox.
Upozornění: Pokud se při čtení znaků vracených z OBD-II UART v terminálu objeví problémy, zkontrolujte nastavení nového řádku v terminálu (CR vs CR+LF). Doplňující poznámky pokrývají i hardware detaily, např. že ELM327 bývá na desce s 5V napájením a GPIO/I2C adaptéry mohou vyžadovat specifické konfigurace.