Obsah:

Displej auta Arduino: 7 kroků (s obrázky)
Displej auta Arduino: 7 kroků (s obrázky)

Video: Displej auta Arduino: 7 kroků (s obrázky)

Video: Displej auta Arduino: 7 kroků (s obrázky)
Video: ANDROID MÁ JEDNO SKRYTÉ NASTAVENÍ 🤖 2024, Červenec
Anonim
Image
Image
Displej auta Arduino
Displej auta Arduino
Displej auta Arduino
Displej auta Arduino

Postavil jsem displej na palubní diagnostice (OBD-II) pomocí 7 TFT LCD od společnosti Adafruit, Teensy 3.6, adaptéru Freematics OBD-II I2C a několika záložních senzorů, které jsem našel na Amazonu. Displej má dvě stránky: jeden, když je moje Honda Accord v řízení, a druhý, když je zpátečka.

Když je moje auto v jízdě, zobrazí se otáčky, MPH, procento zatížení motoru, napětí baterie, teplota v kabině a teplota chladicí kapaliny motoru (pokud si je nepřejete, je k dispozici několik dalších statistik vozidla).

Když je můj vůz v couvání, čte Arduino IDE kompatibilní Teensy 3.6 animovaný bitmapový obrázek mého auta, který jsem našel online, zobrazí ho a poté načte záložní senzory. Čtyři senzory mají každý vzdálenost ve stopách plus animaci za autem, která mění barvu podle toho, jak blízko je objekt k autu (jen zelená znamená <5 stop, zelená a žlutá znamená <2,6 stopy a zelená, žlutá, a červená znamená <1 stopu).

Nakonec jsem přidal možnost ztlumení displeje v noci.

Konečný výsledek vypadá skvěle a funguje velmi dobře v mém autě. Dokonce jsem to nakonec nainstaloval na středovou konzolu, což byl úplně jiný proces, do kterého se v tomto návodu nedostanu. Níže je uveden seznam dílů, které jsem použil k vytvoření tohoto LCD displeje.

1) Adaptér Freematics OBD -II - 35 $

2) Záložní senzory - 15 $

3) 7 TFT LCD displej - 38 dolarů

4) Ovladač LCD displeje na bázi SPI - 35 $

5) Teensy 3,6 - 30 $

6) Posunovač úrovně - 4 $

7) 74HC125 Tri State Buffer IC -6 $ za 2 balení (jsem si jistý, že tento cheeper najdete jinde)

8) Karta MicroSD> = 1 GB - 4 $

9) Dráty, kondenzátory a odpory.

10) LP3470-2,93 Zapněte resetovací IC - 2 $

11) (volitelně): Snímač teploty DS18B20 - 8 $

12) (volitelně): Rozbočovač OBD -II - 10 $

13) (volitelně): Přidejte kabel pojistky obvodu - 8 $ za balíček 5

Krok 1: Čtení záložních senzorů

Čtení záložních senzorů
Čtení záložních senzorů
Čtení záložních senzorů
Čtení záložních senzorů
Čtení záložních senzorů
Čtení záložních senzorů
Čtení záložních senzorů
Čtení záložních senzorů

Tento krok je složitý, protože tyto záložní senzory komunikují s transceiverem a poté s malým LCD, jak je vidět na obrázku výše. Chtěl jsem způsob, jak se zbavit jejich displeje a používat svůj vlastní. S pomocí webové stránky, kterou jsem našel po nějakém googlování (hackování parkovacích senzorů), jsem byl schopen přečíst proprietární komunikační protokol, který vysílač vysílá na LCD obrazovku. Z nějakého důvodu není komunikační protokol typický, například I2C, UART, CAN, USB atd. A protokol se liší v závislosti na dodavateli. Pokud budete používat můj kód, vřele doporučuji zakoupit sadu, kterou jsem propojil výše, protože byla speciálně napsána pro tyto senzory.

Před odpojením LCD, které poskytli, jsem sondoval tři vodiče spojující transceiver a LCD. Byl tam +5V červený vodič, zemní černý vodič a modrý vodič. Poté, co jsem připojil svůj osciloskop k modrému vodiči a zemi, viděl jsem stopu podobnou obrázku výše, ale ne přesně (použil jsem obrázek z výše uvedeného odkazu na webovou stránku). Moje stopa měla počáteční bit s VYSOKOU delší dobou trvání, po kterém následovalo dalších 17 bitů s kratší dobou trvání. Bity 0-5 po startovacím bitu neměly užitečné informace. Bity 6-8 odpovídají senzoru A, B, C nebo D. Bity 9-16 odpovídaly délce v metrech. Zahrnul jsem skicu Arduino IDE, která čte senzory a odesílá data přes sériovou konzolu.

Krok 2: Vytvoření bitmapového obrázku a jeho vložení na kartu MicroSD

Vytvoření bitmapového obrázku a jeho vložení na kartu MicroSD
Vytvoření bitmapového obrázku a jeho vložení na kartu MicroSD
Vytvoření bitmapového obrázku a jeho vložení na kartu MicroSD
Vytvoření bitmapového obrázku a jeho vložení na kartu MicroSD

K oříznutí a změně velikosti obrázku mého auta z pohledu shora jsem použil bezplatný software pro úpravu fotografií s názvem GIMP. Poté jsem obrázek exportoval jako 24bitový bitmapový obrázek s názvem „car.bmp“, který má rozměry 110 x 250 pixelů. Nahrál jsem to na kartu microSD a vložil ji do mikrokontroléru Teensy 3.6.

Hlavním důvodem, proč jsem místo UNO použil Teensy 3.6, byla rychlost, s jakou Teensy dokázal přečíst kartu SD a zobrazit obrázek pomocí ovladače zobrazení RA8875. Pomocí UNO tento proces trval asi 8 sekund, zatímco Teensy 3,6 trvalo 1,8 sekundy.

Krok 3: Připojení hardwaru

Připojení hardwaru
Připojení hardwaru

Adafruit má opravdu dobře vypadající 7 TFT LCD, který je poháněn integrovaným obvodem nazývaným RA8875. Tento ovladač displeje a displeje jsem si vybral ze dvou důvodů. Za prvé, na displej jsou předepsány rozsáhlé knihovny. Za druhé, ovladač displeje může mluvit s jakýkoli mikrokontrolér přes SPI, což znamená, že není tolik vodičů, které spojují mikrokontrolér s RA8875.

Toto nastavení má dvě stinné stránky. Prvním je fakt, že s deskou RA8875 od společnosti Adafruit existuje hardwarová chyba, která vyžaduje použití integrovaného integrovaného obvodu 74HC125 IC, pokud chcete použít jakékoli zařízení založené na SPI, jako je karta SD. Chcete -li lépe porozumět hardwarové chybě, přečtěte si následující fórum. Za druhé, je to relativně dlouhá doba, po kterou jsou obrázky odesílány na LCD. Také dlouhá doba potřebná k odeslání obrázku na LCD je způsobena připojením SPI, které je omezeno rychlostí hodin mikrořadičů a velkým množstvím dat, která musí být odeslána do ovladače displeje přes velmi málo vodičů.

Vytvořil jsem Fritzingovo schéma, aby kdokoli, kdo by chtěl vytvořit tento displej, mohl snadno přečíst, k čemu se připojují piny na Teensy 3.6. Níže jsem vložil soubor.frz. Jediné dvě součásti, které nejsou označeny, jsou kondenzátory, což jsou 1F 16V elektrolytický kondenzátor a 100μF keramický kondenzátor. Zahrnul jsem je, abych se ujistil, že napájení mikrokontroléru Teensy je stabilní DC +5V a neobsahuje žádné napěťové špičky (nemusí být nutné, ale zahrnoval jsem je, protože napájecí napětí automobilu může rychle kolísat v závislosti na zatížení baterie).

Několik věcí, které je třeba zmínit o součástech. Za prvé, měnič úrovně převezme jakýkoli signál 5 V a změní jej na bezpečné napětí 3,3 V Teensy 3,6. To je nezbytné pro adaptér OBD I2C i pro transceiver záložního snímače. Za druhé, I2C linky dospívajícího vyžadují odpor 4,7 kΩ. Za třetí, čtyři odpory spojující „noční časovací vodič“(stmívací vodič) a „záložní zapojovací vodič“jsou nezbytné k tomu, aby sloužily jako dělič napětí k přivedení signálů 12V-13V na přibližně 2,5-3V signály.

UPDATE 7/22/18: Zjistil jsem, že interní teplotní senzor modulu OBD-I2C vydává velmi podivná čísla. Někdy to fungovalo, ale většinu času modul vykazoval teploty nad 400 stupňů F. Kvůli tomu jsem se rozhodl přidat vlastní teplotní senzor ds18b20. Jste více než vítáni, že zde používáte jakýkoli typ teplotního čidla, ale budete muset upravit kód Arduino.

AKTUALIZACE 1. 1. 19: Teensy 3.6 se nespustí, když je extrémně chladno. Přidal jsem resetovací obvod, abych se ujistil, že se spouští správně.

Krok 4: Ovladač zobrazení a grafický design RA8875

RA8875 Ovladač displeje a grafický design
RA8875 Ovladač displeje a grafický design

Ovladač zobrazení RA8875 má knihovnu s názvem Adafruit_RA8875, kterou jsem použil při vytváření tvarů, které jsou vidět na první stránce a druhé stránce. Knihovna pro RA8875 může vytvářet pouze čáry, obdélníky, zaoblené obdélníky, trojúhelníky, elipsy a kruhy, takže grafika musí být navržena chytře, aby vytvářela složitější tvary. Například šedý prsten na první stránce je ve skutečnosti celý šedý kruh většího průměru, za nímž následuje plný černý kruh menšího průměru. Jedna malá část stránky záložního senzoru také obsahuje 2 trojúhelníky uspořádané tak, že vytvářejí tvar mnohoúhelníku. Udělal jsem to, abych mohl změnit barvu jednotlivé sekce stránky záložního senzoru. Soubor Arduino pro displej obsahuje řadu bodů, které jsem použil ke sledování, kde jsou trojúhelníky a jiné tvary.

Pomocí této skvělé webové stránky jsem vybral barvy RGB565 a definoval je v náčrtu, abych mohl použít jiné než výchozí barvy již předem definované v knihovně Adafruit_RA8875.

Pokud jde o písma, knihovna Adafruit_RA8875 podporuje pouze jedno, pokud nevyjádříte komentář v části knihovny, která vám umožňuje používat písma v knihovně Adafruit_GFX. Níže jsem zahrnul upravenou knihovnu Adafruit_RA8875. Právě jsem okomentoval několik řádků kódu a poté jsem mohl použít písma v knihovně Adafruit_GFX. Chcete -li použít také 7segmentové písmo, které jsem použil v tomto projektu, ujistěte se, že soubor „FreeSevenSegNumFont.h“, který jsem, je ve složce písem v knihovně Adafruit_GFX.

Krok 5: Nahrání náčrtu

Nahrávání náčrtu
Nahrávání náčrtu
Nahrávání náčrtu
Nahrávání náčrtu

Chcete -li načíst skicu do Teensy 3.6, budete muset nainstalovat Teensyduino. Poté budete muset nahradit knihovny Adafruit_RA8875 a Adafruit_GFX v umístění knihovny pro mladistvé (není to vaše typické umístění v dokumentech). Na počítačích Mac jsem musel pravým tlačítkem kliknout na ikonu aplikace Arduino v aplikacích a poté přejít do/Contents/Java/hardware/teensy/avr/libraries. V systému Windows jsem si docela jistý, že je pod vaší jednotkou C v programových souborech x86, Arduino a poté v hardwarové složce. Jakmile to uděláte, budete muset změnit umístění skicáku v aplikaci Arduino tak, že jej upravíte v předvolbách tam, kde jsou vaše dospívající knihovny (tj. /Applications/Arduino.app/Contents/Java/hardware/teensy/avr).

UPDATE 7/22/16: Kvůli problému s interním teplotním senzorem, o kterém jsem mluvil dříve, jsem musel nainstalovat teplotní senzor modulu DS18B20. V souboru zip uvidíte 4 skici arduina. Pokud chcete použít interní teplotní senzor modulu OBD-II I2C, nahrajte prosím náčrtek display_code. Pokud chcete použít modul DS18B20, který jsem propojil výše, nahrajte skicu display_code_with_new_temperature_sensor.

UPDATE 17/17/17: Opravil jsem několik chyb v softwaru, včetně DS18B20 s výstupem teploty 185 Fahrenheita, displej se v chladném počasí vůbec nezapne a pixely se zaseknou ve špatné barvě, když je displej ztlumený.

Poté použijte obrázek, který mám výše, abyste se ujistili, že vaše dospívající nastavení odpovídají obrázku. Zjistil jsem, že přetaktování mladistvého na 240 MHz neumožňuje adaptéru I2C OBD-II komunikovat s mladistvým. Nakonec stačí kliknout na nahrát.

Do souborů skic arduino jsem napsal docela rozsáhlé komentáře. Hledejte tam vysvětlení, jak software funguje. V případě jakýchkoli dotazů mě neváhejte kontaktovat. Pokusím se jim odpovědět, jak nejlépe umím. Hodně štěstí!

Krok 6: 3D tisk LCD pouzdra

3D tisk pouzdra LCD
3D tisk pouzdra LCD
3D tisk pouzdra LCD
3D tisk pouzdra LCD
3D tisk pouzdra LCD
3D tisk pouzdra LCD

Vytvořil jsem 3D vytištěný horní a spodní kryt LCD pro ochranu 7 displeje. Připojil jsem soubory součásti vynálezce. IPT i soubory. STL.

Zahrnul jsem také část s názvem backup_sensor_ring.ipt, což je prsten, který se vejde kolem těch záložních senzorů, které jsem propojil výše. Moje auto již mělo předvrtané otvory pro záložní senzory, které byly příliš velké pro záložní senzory, které jsem koupil na Amazonu, takže jsem musel vytvořit prsten, který by se hodil na záložní senzory. Pokud se chystáte vrtat do nárazníku pomocí přiložené kruhové vrtačky v sadě, tuto část nebudete potřebovat.

Krok 7: Rozdělení portu OBD-II tak, aby Arduino mělo energii pouze při běžícím autě

Rozdělení portu OBD-II, takže Arduino má energii pouze za jízdy
Rozdělení portu OBD-II, takže Arduino má energii pouze za jízdy
Rozdělení portu OBD-II, takže Arduino má energii pouze za jízdy
Rozdělení portu OBD-II, takže Arduino má energii pouze za jízdy
Rozdělení portu OBD-II, takže Arduino má energii pouze za jízdy
Rozdělení portu OBD-II, takže Arduino má energii pouze za jízdy

Krátce po instalaci displeje jsem si uvědomil, že displej byl vždy zapnutý, i když bylo auto vypnuté. Při pohledu na vývod OBD-II jsem zjistil, že napájecí vedení 12V ke konektoru OBD-II je vždy připojeno přímo k baterii.

Abych to obešel, koupil jsem rozdělovač OBD-II, přestřihl vodič na kolík 16 na jednom ze dvou konektorů na rozdělovači a poté tento odstřižený vodič připojil k vodiči pro přidání obvodu.

Poté jsem pomocí svého multimetru přešel k pojistkové skříňce na straně řidiče a vyzkoušel jsem stávající pojistky, abych zjistil, která pojistka je napájena poté, co byl klíč otočen do zapalování.

Nakonec jsem připojil přidaný obvodový vodič k pojistce, kterou jsem umístil tak, aby se displej nyní zapínal pouze tehdy, když mi běží auto. Proveďte prosím průzkum, jak správně přidat obvod do vašeho auta. Zjistil jsem, že tento návod na YouTube je dobrý.

Doporučuje: