Obsah:

Displej auta Arduino: 7 krokov (s obrázkami)
Displej auta Arduino: 7 krokov (s obrázkami)

Video: Displej auta Arduino: 7 krokov (s obrázkami)

Video: Displej auta Arduino: 7 krokov (s obrázkami)
Video: #ArduBlock 2.0 - DWIN Дисплей - Кодовый замок на Arduino + Соленоид! 2024, Júl
Anonim
Image
Image
Displej do auta Arduino
Displej do auta Arduino
Displej do auta Arduino
Displej do auta Arduino

Postavil som displej založený na palubnej diagnostike (OBD-II) pomocou 7-palcového TFT LCD od spoločnosti Adafruit, Teensy 3.6, adaptéra Freematics OBD-II I2C a niekoľkých záložných senzorov, ktoré som našiel na Amazone. Displej má dve stránky: jeden, keď jazdí moja Honda Accord, a druhý, keď je zaradený spätný chod.

Keď je moje auto v pohybe, zobrazia sa otáčky, MPH, percento zaťaženia motora, napätie batérie, teplota v kabíne a teplota chladiacej kvapaliny motora (ak ich niekto nechce, je k dispozícii niekoľko ďalších štatistík vozidla).

Keď moje auto ide dozadu, Teensy 3.6 kompatibilný s Arduino IDE prečíta animovaný bitmapový obrázok môjho auta, ktoré som našiel online, zobrazí ho a potom prečíta záložné snímače. Štyri senzory majú každý vzdialenosť v stopách plus animáciu za autom, ktorá mení farbu podľa toho, ako blízko je predmet k autu (iba zelená znamená <5 stôp, zelená a žltá znamená <2,6 stopy a zelená, žltá, a červená znamená <1 stopu).

Nakoniec som pridal možnosť stlmenia displeja v noci.

Konečný výsledok vyzerá skvele a v mojom aute funguje veľmi dobre. Dokonca som to nakoniec nainštaloval na stredovú konzolu, čo bol úplne iný proces, do ktorého sa v tomto návode nedostanem. Zoznam dielov, ktoré som použil na vytvorenie tohto LCD displeja, je uvedený nižšie.

1) Adaptér Freematics OBD -II - 35 dolárov

2) Záložné snímače - 15 dolárov

3) 7 TFT LCD displej - 38 dolárov

4) Ovládač LCD displeja na základe SPI - 35 dolárov

5) Teensy 3,6 - 30 dolárov

6) Posunovač úrovne - 4 doláre

7) 74HC125 Tri State Buffer IC -6 dolárov za 2 balenia (som si istý, že tohto cheepera nájdete aj inde)

8) Karta MicroSD> = 1 GB - 4 doláre

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

10) LP3470-2,93 IC pri zapnutí - 2 doláre

11) (voliteľné): snímač teploty DS18B20 - 8 dolárov

12) (voliteľné): Rozdeľovač OBD -II - 10 dolárov

13) (voliteľné): Pridajte kábel poistky obvodu - 8 dolárov za balenie 5 kusov

Krok 1: Čítanie záložných senzorov

Čítanie záložných senzorov
Čítanie záložných senzorov
Čítanie záložných senzorov
Čítanie záložných senzorov
Čítanie záložných senzorov
Čítanie záložných senzorov
Čítanie záložných senzorov
Čítanie záložných senzorov

Tento krok je náročný, pretože tieto záložné senzory komunikujú s transceiverom a potom s malým LCD, ako je vidieť na obrázku vyššie. Chcel som spôsob, ako sa zbaviť ich displeja a používať ten svoj. Pomocou webovej stránky, ktorú som našiel po troche googlovania (hackovanie parkovacích senzorov spätného chodu), som dokázal prečítať patentovaný komunikačný protokol, ktorý transceiver odosiela na obrazovku LCD. Komunikačný protokol z nejakého dôvodu nie je typický, ako napríklad I2C, UART, CAN, USB atď. A protokol sa líši v závislosti od dodávateľa. Vrelo odporúčam, aby ste si kúpili sadu, ktorú som prepojil vyššie, ak budete používať môj kód, pretože bol napísaný špeciálne pre tieto senzory.

Pred odpojením LCD, ktoré poskytli, som sondoval tri vodiče spájajúce transceiver a LCD. Bol tam +5V červený vodič, uzemňovací čierny vodič a modrý vodič. Po pripojení osciloskopu k modrému vodiču a uzemneniu som videl stopu podobnú obrázku vyššie, ale nie presne (použil som obrázok z webového servera, ktorý je prepojený vyššie). Moja stopa mala začiatočný bit VYSOKEJ dlhšej doby trvania, po ktorom nasledovalo ďalších 17 bitov kratšieho trvania. Bity 0-5 po počiatočnom bite nemali užitočné informácie. Bity 6-8 zodpovedajú snímaču A, B, C alebo D. Bity 9-16 zodpovedali dĺžke v metroch. Priložil som skicu Arduino IDE, ktorá číta senzory a odosiela údaje cez sériovú konzolu.

Krok 2: Vytvorenie bitmapového obrázku a jeho vloženie na kartu MicroSD

Vytvorenie bitmapového obrázku a jeho vloženie na kartu microSD
Vytvorenie bitmapového obrázku a jeho vloženie na kartu microSD
Vytvorenie bitmapového obrázku a jeho vloženie na kartu microSD
Vytvorenie bitmapového obrázku a jeho vloženie na kartu microSD

Na orezanie a zmenu veľkosti obrázka môjho auta z pohľadu zhora som použil bezplatný softvér na úpravu fotografií s názvom GIMP. Potom som obrázok exportoval ako 24 -bitový bitmapový obrázok s názvom „car.bmp“, ktorý má rozmery 110 x 250 pixlov. Odovzdal som to na kartu microSD a vložil som kartu microSD do svojho mikrokontroléra Teensy 3.6.

Hlavným dôvodom, prečo som namiesto UNO použil Teensy 3.6, bola rýchlosť, s ktorou Teensy dokázal prečítať kartu SD a zobraziť obrázok pomocou ovládača displeja RA8875. Použitie UNO trvalo tento proces asi 8 sekúnd, zatiaľ čo Teensy 3,6 trvalo 1,8 sekundy.

Krok 3: Pripojenie hardvéru

Pripojenie hardvéru
Pripojenie hardvéru

Adafruit má skutočne dobre vyzerajúci 7 TFT LCD displej, ktorý je poháňaný integrovaným obvodom RA8875. Tento ovládač displeja a displeja som si vybral z dvoch dôvodov. Po prvé, pre displej sú predpísané rozsiahle knižnice. Po druhé, ovládač displeja môže hovoriť s akýkoľvek mikrokontrolér cez SPI, čo znamená, že nie je toľko káblov, ktoré spájajú mikrokontrolér s RA8875.

Toto nastavenie má dve nevýhody. Prvým je fakt, že s doskou RA8875 od spoločnosti Adafruit existuje hardvérová chyba, ktorá vyžaduje použitie integrovaného medzipamäte IC 74HC125, ak chcete používať akékoľvek zariadenie založené na SPI, napríklad kartu SD. Ak chcete lepšie porozumieť chybe hardvéru, prečítajte si nasledujúce fórum. Za druhé, je to relatívne dlhý čas na odoslanie obrázkov na LCD displej. Tiež dlhý čas potrebný na odoslanie obrázka na displej LCD je spôsobený pripojením SPI, ktoré je obmedzené rýchlosťou hodín mikronástrojov a veľkým počtom údajov, ktoré je potrebné odoslať do ovládača displeja. veľmi málo drôtov.

Vytvoril som schému Fritzing, aby ktokoľvek, kto by chcel vytvoriť tento displej, mohol ľahko prečítať, ku ktorým kolíkom sa pripája Teensy 3.6. Nasleduje súbor.frz. Jediné dve komponenty, ktoré nie sú označené, sú kondenzátory, ktorými sú 1F 16V elektrolytický kondenzátor a 100μF keramický kondenzátor. Zahrnul som ich, aby som sa ubezpečil, že napájanie mikrokontroléra Teensy je stabilné DC +5V a neobsahuje žiadne napäťové špičky (nemusí byť potrebné, ale zahrnul som ich, pretože napätie v automobile môže rýchlo kolísať v závislosti od zaťaženia batérie).

Niekoľko vecí, ktoré je potrebné spomenúť o komponentoch. Radič úrovne najskôr zaberie akýkoľvek signál 5 V a zmení ho na bezpečné napätie 3,3 V Teensy 3,6. Je to nevyhnutné pre adaptér OBD I2C, ako aj vysielač a prijímač záložného senzora. Po druhé, vedenia I2C dospievajúceho dieťaťa vyžadujú rezistory s potiahnutím 4,7 kΩ. Po tretie, štyri odpory spájajúce „nočný vodič“(stmievací vodič) a „vodič záložného zapojenia“sú potrebné na to, aby slúžili ako delič napätia na prenos signálov 12V-13V na približne 2,5-3V.

AKTUALIZÁCIA 22. 7. 18: Zistil som, že vnútorný snímač teploty modulu OBD-I2C vydáva veľmi podivné čísla. Niekedy to funguje, ale väčšinu času modul vykazoval teploty nad 400 stupňov F. Z tohto dôvodu som sa rozhodol pridať vlastný snímač teploty ds18b20. Ste viac ako vítaní, že tu použijete akýkoľvek typ snímača teploty, ale budete musieť upraviť kód Arduino.

AKTUALIZÁCIA 1. 3. 19: Teensy 3.6 sa nespustí, keď je extrémne chladno. Pridal som obvod resetovania, aby som sa ubezpečil, že sa správne zavedie.

Krok 4: Ovládač displeja a grafický dizajn RA8875

Ovládač displeja a grafický dizajn RA8875
Ovládač displeja a grafický dizajn RA8875

Ovládač displeja RA8875 má knižnicu s názvom Adafruit_RA8875, ktorú som použil pri vytváraní tvarov, ktoré sú vidieť na prvej a druhej stránke. Knižnica pre RA8875 môže vytvárať iba čiary, obdĺžniky, zaoblené obdĺžniky, trojuholníky, elipsy a kruhy, takže grafika musí byť navrhnutá šikovným spôsobom na vytváranie zložitejších tvarov. Sivý krúžok na prvej strane je napríklad vlastne celý sivý kruh väčšieho priemeru, za ktorým nasleduje plný čierny kruh menšieho priemeru. Jedna malá časť stránky záložného senzora tiež obsahuje 2 trojuholníky usporiadané tak, že vytvárajú mnohouholníkový tvar. Urobil som to, aby som mohol zmeniť farbu jednotlivej sekcie stránky senzora zálohy. Súbor Arduino pre displej obsahuje pole bodov, ktoré som použil na sledovanie, kde sú trojuholníky a iné tvary.

Túto skvelú webovú stránku som použil na výber farieb RGB565 a ich definovanie v náčrte, aby som mohol použiť iné ako predvolené farby už vopred definované v knižnici Adafruit_RA8875.

Pokiaľ ide o písma, knižnica Adafruit_RA8875 podporuje iba jedno, pokiaľ nekomentujete časť knižnice, ktorá vám umožní používať písma knižnice Adafruit_GFX. Upravenú knižnicu Adafruit_RA8875 som zaradil nižšie. Práve som okomentoval niekoľko riadkov kódu a potom som mohol použiť písma v knižnici Adafruit_GFX. Ak chcete použiť aj 7 -segmentové písmo, ktoré som použil v tomto projekte, uistite sa, že súbor „FreeSevenSegNumFont.h“, ktorý som, je v priečinku písem v knižnici Adafruit_GFX.

Krok 5: Odovzdanie náčrtu

Odovzdávanie náčrtu
Odovzdávanie náčrtu
Odovzdávanie náčrtu
Odovzdávanie náčrtu

Na nahranie náčrtu do Teensy 3.6 budete musieť nainštalovať Teensyduino. Potom budete musieť nahradiť knižnice Adafruit_RA8875 a Adafruit_GFX v mieste mladistvej knižnice (nie je to vaše typické umiestnenie v dokumentoch). Na počítačoch Mac som musel pravým tlačidlom myši kliknúť na ikonu aplikácie Arduino v aplikáciách a potom prejsť na/Contents/Java/hardware/teensy/avr/libraries. V systéme Windows som si celkom istý, že je pod vašou jednotkou C v programových súboroch x86, Arduino a potom v priečinku s hardvérom. Akonáhle to urobíte, budete musieť zmeniť umiestnenie skicára v aplikácii Arduino tak, že ho upravíte v predvoľbách tam, kde sú vaše dospievajúce knižnice (t.j. /Applications/Arduino.app/Contents/Java/hardware/teensy/avr).

UPDATE 7/22/16: Vzhľadom na problém s vnútorným snímačom teploty, o ktorom som hovoril predtým, som musel nainštalovať snímač teploty modulu DS18B20. V súbore zip uvidíte 4 skice arduina. Ak chcete použiť interný snímač teploty modulu OBD-II I2C, nahrajte náčrt kódu displeja. Ak chcete použiť modul DS18B20, ktorý som prepojil vyššie, nahrajte skicu display_code_with_new_temperature_sensor.

UPDATE 17/17/17: Opravil som niekoľko chýb v softvéri vrátane DS18B20 s teplotou 185 Fahrenheita, displej sa v chladnom počasí vôbec nezapínal a pixely uviazli v zlej farbe, keď je displej stlmený.

Potom pomocou vyššie uvedeného obrázku skontrolujte, či sa vaše nastavenia pre mladistvých zhodujú s obrázkom. Zistil som, že pretaktovanie mladistvých na 240 MHz neumožňuje adaptéru I2C OBD-II komunikovať s mladistvým. Nakoniec stačí kliknúť na nahrať.

Do súborov náčrtu arduino som napísal dosť rozsiahle komentáre. Tam nájdete vysvetlenie, ako softvér funguje. V prípade akýchkoľvek otázok ma neváhajte kontaktovať. Pokúsim sa im odpovedať, ako najlepšie viem. Veľa štastia!

Krok 6: 3D tlač na puzdro LCD

3D tlač na puzdro LCD
3D tlač na puzdro LCD
3D tlač na puzdro LCD
3D tlač na puzdro LCD
3D tlač na puzdro LCD
3D tlač na puzdro LCD

Vytvoril som 3D tlačený horný a dolný kryt LCD na ochranu 7 displeja. Pripojil som súbory súčastí vynálezcu. IPT a tiež. STL.

Zahrnul som tiež časť s názvom backup_sensor_ring.ipt, čo je krúžok, ktorý sa hodí okolo tých záložných senzorov, ktoré som prepojil vyššie. Moje auto už malo predvŕtané otvory pre záložné senzory, ktoré boli príliš veľké pre záložné senzory, ktoré som kúpil na Amazone, takže som musel vytvoriť krúžok, ktorý by sa zmestil na záložné senzory. Ak sa chystáte vŕtať do nárazníka pomocou priloženého kruhového vrtáka v súprave, túto časť nebudete potrebovať.

Krok 7: Rozdelenie portu OBD-II tak, aby Arduino malo napájanie iba vtedy, keď je auto v prevádzke

Deliaci port OBD-II, aby malo Arduino napájanie iba vtedy, keď je auto v prevádzke
Deliaci port OBD-II, aby malo Arduino napájanie iba vtedy, keď je auto v prevádzke
Deliaci port OBD-II, aby malo Arduino napájanie iba vtedy, keď je auto v prevádzke
Deliaci port OBD-II, aby malo Arduino napájanie iba vtedy, keď je auto v prevádzke
Deliaci port OBD-II, aby malo Arduino napájanie iba vtedy, keď je auto v prevádzke
Deliaci port OBD-II, aby malo Arduino napájanie iba vtedy, keď je auto v prevádzke

Krátko po inštalácii displeja som si uvedomil, že displej bol vždy zapnutý, aj keď bolo auto vypnuté. Pri pohľade na vývod OBD-II som zistil, že elektrické vedenie 12V do konektora OBD-II je vždy pripojené priamo k batérii.

Aby som to obišiel, kúpil som rozdeľovač OBD-II, prestrihol vodič na kolík 16 na jednom z dvoch konektorov na rozdeľovači a potom tento odstrihnutý vodič pripojil k vodiču na pridanie obvodu.

Potom som pomocou multimetra prešiel k poistkovej skrinke na strane vodiča a vyskúšal som existujúce poistky, aby som zistil, ktorá poistka sa napájala po otočení kľúča do zapaľovania.

Nakoniec som k poistke, ktorú som umiestnil, pripojil vodič pridania obvodu, aby sa displej zapol iba vtedy, keď mi beží auto. Vykonajte malý prieskum, ako správne pridať obvod do auta. Tento návod na youtube som považoval za dobrý.

Odporúča: