Kazalo:

Zaslon avtomobila Arduino: 7 korakov (s slikami)
Zaslon avtomobila Arduino: 7 korakov (s slikami)

Video: Zaslon avtomobila Arduino: 7 korakov (s slikami)

Video: Zaslon avtomobila Arduino: 7 korakov (s slikami)
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Julij
Anonim
Image
Image
Zaslon za avto Arduino
Zaslon za avto Arduino
Zaslon za avto Arduino
Zaslon za avto Arduino

Zaslon, ki temelji na vgrajeni diagnostiki (OBD-II), sem izdelal s 7-palčnim TFT-zaslonom Adafruit, Teensy 3.6, vmesnikom Freematics OBD-II I2C in nekaterimi senzorji za poceni varnostno kopiranje, ki sem jih našel na Amazonu. Zaslon ima dve strani: ena za čas, ko je moja Honda Accord v vožnji in ena za vzvratno vožnjo.

Ko je moj avto v pogonu, se prikažejo število vrtljajev, število vrtljajev na minuto, odstotek obremenitve motorja, napetost akumulatorja, temperatura kabine in temperatura hladilne tekočine motorja (na voljo je več drugih statističnih podatkov o vozilu, če si tega ne želite).

Ko je moj avto v vzvratni smeri, Arduino IDE združljiv Teensy 3.6 prebere animirano slikovno sliko mojega avtomobila, ki sem ga našel na spletu, jo prikaže in nato prebere varnostne senzorje. Vsak od štirih senzorjev ima svojo razdaljo v stopalih in animacijo za avtomobilom, ki spreminja barvo glede na to, kako blizu je predmet avtomobilu (samo zelena pomeni <5 čevljev, zelena in rumena pomeni <2,6 čevljev, zelena, rumena, rdeča pa pomeni <1 čevelj).

Nazadnje sem dodal možnost zatemnitve zaslona ponoči.

Končni rezultat izgleda odlično in zelo dobro deluje v mojem avtomobilu. Na koncu sem ga celo namestil v osrednjo konzolo, kar je bil povsem drug postopek, v katerega se v tem navodilu ne bom spuščal. Seznam delov, ki sem jih uporabil za ustvarjanje tega LCD zaslona, je spodaj.

1) Brezžični adapter OBD -II - 35 USD

2) Rezervni senzorji - 15 USD

3) 7 -palčni TFT LCD zaslon - 38 USD

4) Gonilnik LCD zaslona na osnovi SPI - 35 USD

5) Teensy 3,6 - 30 USD

6) Preklopnik ravni - 4 USD

7) IC State Triffer Buffer IC 74HC125 -6 USD za 2 pakiranja (prepričan sem, da bi to dražico našli drugje)

8) Kartica MicroSD> = 1 GB - 4 USD

9) Žica, kondenzatorji in upori.

10) LP3470-2,93 IC pri ponastavitvi IC - 2 USD

11) (neobvezno): temperaturni senzor DS18B20 - 8 USD

12) (neobvezno): cepilnik OBD -II - 10 USD

13) (neobvezno): Dodajte kabel varovalke vezja - 8 USD za paket po 5

1. korak: Odčitavanje varnostnih senzorjev

Branje varnostnih senzorjev
Branje varnostnih senzorjev
Branje varnostnih senzorjev
Branje varnostnih senzorjev
Branje varnostnih senzorjev
Branje varnostnih senzorjev
Branje varnostnih senzorjev
Branje varnostnih senzorjev

Ta korak je težaven, ker ti varnostni senzorji komunicirajo z oddajnikom in nato z majhnim LCD -jem, kot je prikazano na zgornji sliki. Želel sem način, da se znebim njihovega prikaza in uporabim svojega. S pomočjo spletnega mesta, ki sem ga našel po googlingu (Vdor v parkirne senzorje za vzvratno vožnjo), sem lahko prebral lastniški komunikacijski protokol, ki ga oddajnik pošlje na LCD zaslon. Iz nekega razloga komunikacijski protokol ni tipičen, na primer I2C, UART, CAN, USB itd., Protokol pa se razlikuje glede na dobavitelja. Zelo priporočam, da kupite komplet, ki sem ga povezal zgoraj, če boste uporabili mojo kodo, ker je bila napisana posebej za te senzorje.

Preden sem odklopil priloženi LCD, sem preiskal tri žice, ki povezujejo oddajnik in LCD. Bila je +5V rdeča žica, ozemljena črna žica in modra žica. Ko sem osciloskop priklopil na modro žico in ozemljitev, sem videl sled, podobno sliki, prikazani zgoraj, vendar ne ravno (uporabil sem sliko s spletnega mesta, povezanega zgoraj). Moja sled je imela VELIKO daljši začetni bit, ki mu je sledilo še 17 krajših bitov. Bit 0-5 po začetnem bitu ni imel uporabnih informacij. Biti 6-8 ustrezajo senzorju A, B, C ali D. Bit 9-16 ustreza dolžini v metrih. Vključil sem skico Arduino IDE, ki bere senzorje in podatke iznaša prek serijske konzole.

2. korak: Ustvarite slikovno sliko in jo postavite na kartico MicroSD

Ustvarite slikovno sliko in jo postavite na kartico MicroSD
Ustvarite slikovno sliko in jo postavite na kartico MicroSD
Ustvarite slikovno sliko in jo postavite na kartico MicroSD
Ustvarite slikovno sliko in jo postavite na kartico MicroSD

Uporabil sem brezplačno programsko opremo za urejanje fotografij, imenovano GIMP, da obrežem in spremenim velikost slike svojega avtomobila od pogleda od zgoraj. Nato sem sliko izvozil kot 24 -bitno slikovno sliko z imenom "car.bmp", ki je 110 x 250 slikovnih pik. To sem naložil na kartico microSD in jo dal v svoj mikrokontroler Teensy 3.6.

Glavni razlog, da sem se odločil za Teensy 3.6 namesto za UNO, je bila hitrost, s katero je Teensy lahko prebral kartico SD in prikazal sliko z gonilnikom zaslona RA8875. Z uporabo UNO je postopek trajal približno 8 sekund, Teensy 3,6 pa 1,8 sekunde.

3. korak: Priključitev strojne opreme

Priključitev strojne opreme
Priključitev strojne opreme

Adafruit ima zelo lep 7 -palčni TFT LCD, ki ga poganja IC, imenovan RA8875. Ta zaslon in gonilnik zaslona sem izbral iz dveh razlogov. Prvič, za zaslon so vnaprej napisane obsežne knjižnice. Drugič, gonilnik zaslona se lahko pogovarja z kateri koli mikrokrmilnik preko SPI, kar pomeni, da ni toliko žic, ki povezujejo mikrokrmilnik z RA8875.

Ta nastavitev ima dve pomanjkljivosti. Najprej je dejstvo, da je pri plošči RA8875 iz Adafruit napaka v strojni opremi, ki zahteva uporabo vmesnega vmesnega vmesnika 74HC125, če želite uporabiti katero koli napravo, ki temelji na SPI, na primer kartico SD. Če želite podrobneje razumeti napako strojne opreme, preberite naslednji forum. Drugič, sorazmerno dolg čas, potreben za pošiljanje slik na LCD. Prav tako je dolg čas, potreben za pošiljanje slike na LCD, posledica povezave SPI, ki je omejena s taktom mikrokrmilnikov in veliko količino podatkov, ki jih je treba poslati gonilniku zaslona preko zelo malo žic.

Ustvaril sem shemo Fritzing, tako da lahko vsak, ki bi želel ustvariti ta zaslon, zlahka prebere, na kaj se povežejo zatiči na Teensy 3.6. Spodaj sem vključil datoteko.frz. Edini dve komponenti, ki nista označeni, sta kondenzatorja, ki sta 1F 16V elektrolitski kondenzator in 100μF keramični kondenzator. Vključil sem jih, da sem zagotovil, da je napajanje mikrokrmilnika Teensy enakomerno DC +5V in ne vsebuje napetostnih sunkov (morda ni potrebno, vendar sem jih vključil, ker lahko napajanje avtomobila hitro niha, odvisno od obremenitve akumulatorja).

O komponentah je treba omeniti nekaj. Najprej menjalnik nivoja sprejme kateri koli 5V signal in ga spremeni v varno napetost 3.3V Teensy 3.6. To je potrebno za adapter OBD I2C kot tudi za oddajnik senzorja za varnostno kopiranje. Drugič, linije I2C za najstnike zahtevajo 4,7 kΩ uporovne upore. Tretjič, štirje upori, ki povezujejo "žico za nočni čas" (zatemnilno žico) in "rezervno vklopno žico", so potrebni kot delilnik napetosti za zmanjšanje signalov 12V-13V na približno 2,5-3V signale.

UPDATE 7/22/18: Ugotovil sem, da notranji temperaturni senzor modula OBD-I2C oddaja zelo čudne številke. Včasih bi delovalo, vendar je večino časa modul oddajal temperature nad 400 stopinj F. Zaradi tega sem se odločil, da dodam svoj temperaturni senzor ds18b20. Tukaj lahko uporabite katero koli vrsto temperaturnega senzorja, vendar boste morali urediti kodo Arduino.

UPDATE 3/1/19: Teensy 3.6 se ne zažene, ko je zelo hladno. Dodal sem vezje za ponastavitev, da se prepričam, da se pravilno zažene.

Korak: RA8875 gonilnik zaslona in grafično oblikovanje

RA8875 gonilnik zaslona in grafično oblikovanje
RA8875 gonilnik zaslona in grafično oblikovanje

Gonilnik zaslona RA8875 ima knjižnico, imenovano Adafruit_RA8875, ki sem jo uporabil pri ustvarjanju oblik, ki so vidne na prvi in drugi strani. Knjižnica za RA8875 lahko ustvari le črte, pravokotnike, zaokrožene pravokotnike, trikotnike, elipse in kroge, zato je treba grafiko oblikovati na pameten način, da ustvarite bolj zapletene oblike. Na primer, sivi obroč na prvi strani je dejansko poln siv krog večjega premera, ki mu sledi poln črni krog manjšega premera. Tudi en majhen del strani senzorja za varnostno kopiranje vsebuje 2 trikotnika, razporejena tako, da tvorita obliko poligona. To sem storil, da sem lahko spremenil barvo posameznega razdelka strani senzorja za varnostno kopiranje. Datoteka Arduino za prikaz vsebuje niz točk, s katerimi sem spremljal, kje so trikotniki in druge oblike.

S tem odličnim spletnim mestom sem izbral barve RGB565 in jih definiral na skici, da bi lahko uporabil barve, ki niso privzete, že vnaprej določene v knjižnici Adafruit_RA8875.

Kar zadeva pisave, knjižnica Adafruit_RA8875 podpira samo eno, razen če komentirate del knjižnice, ki vam omogoča uporabo pisav knjižnice Adafruit_GFX. Spodaj sem vključil spremenjeno knjižnico Adafruit_RA8875. Pravkar sem komentiral nekaj vrstic kode in nato lahko uporabil pisave v knjižnici Adafruit_GFX. Če želite uporabiti 7 -segmentno pisavo, ki sem jo uporabil v tem projektu, se prepričajte, da je datoteka "FreeSevenSegNumFont.h" v mapi pisave v knjižnici Adafruit_GFX.

5. korak: Nalaganje skice

Nalaganje skice
Nalaganje skice
Nalaganje skice
Nalaganje skice

Če želite skico naložiti v Teensy 3.6, morate namestiti Teensyduino. Nato boste morali knjižnici Adafruit_RA8875 in Adafruit_GFX zamenjati na najstniški knjižnični lokaciji (ne na vaši tipični lokaciji v dokumentih). V računalniku Mac sem moral z desno miškino tipko klikniti ikono aplikacije Arduino v aplikacijah in se nato pomakniti do/Contents/Java/hardware/teensy/avr/libraries. V oknih sem prepričan, da je pod vašim pogonom C v programskih datotekah x86, Arduino in nato v mapi strojne opreme. Ko to storite, boste morali spremeniti lokacijo skicirke v aplikaciji Arduino, tako da jo uredite v nastavitvah, kjer koli so vaše najstniške knjižnice (tj. /Applications/Arduino.app/Contents/Java/hardware/teensy/avr).

UPDATE 22.07.16: Zaradi težave z notranjim temperaturnim senzorjem, o katerem sem govoril prej, sem moral namestiti temperaturno tipalo modula DS18B20. V datoteki zip boste videli 4 skice arduino. Prosimo, naložite skico display_code, če želite uporabiti notranji temperaturni senzor modula OBD-II I2C. Prosimo, naložite skico display_code_with_new_temperature_sensor, če želite uporabiti modul DS18B20, ki sem ga povezal zgoraj.

UPDATE 17/17/17: Odpravil sem več napak v programski opremi, vključno z DS18B20, ki oddaja temperaturo 185 Fahrenheita, zaslon se v hladnem vremenu sploh ne vklopi, piksli pa se ob zatemnitvi zataknejo v napačni barvi.

Nato uporabite zgornjo sliko, da se prepričate, da se vaše najstniške nastavitve ujemajo s sliko. Ugotovil sem, da overclocking teensy na 240MHz ni omogočal, da bi adapter I2C OBD-II komuniciral z teensy. Nazadnje samo kliknite naloži.

V datoteke s skicami arduino sem napisal precej obsežne komentarje. Prosimo, poiščite razlago, kako deluje programska oprema. Za vsa vprašanja me prosim kontaktirajte. Poskušal bom nanje odgovoriti po svojih najboljših močeh. Vso srečo!

6. korak: 3D -tiskanje ohišja LCD

3D -tiskanje ohišja za LCD
3D -tiskanje ohišja za LCD
3D -tiskanje ohišja za LCD
3D -tiskanje ohišja za LCD
3D -tiskanje ohišja za LCD
3D -tiskanje ohišja za LCD

Za zaščito 7 -palčnega zaslona sem ustvaril 3D natisnjen zgornji in spodnji pokrov LCD -ja. Priložil sem datoteke delov. IPT izumitelja in datoteke. STL.

Vključil sem tudi del, imenovan backup_sensor_ring.ipt, ki je obroč, ki se prilega tistim varnostnim senzorjem, ki sem jih povezal zgoraj. Moj avto je že imel vnaprej izvrtane luknje za rezervne senzorje, ki so bile prevelike za varnostne senzorje, ki sem jih kupil na Amazonu, zato sem moral ustvariti obroč, ki bi ustrezal varnostnim senzorjem. Če boste v odbijač vrtali s priloženim krožnim vrtalnikom v kompletu, tega dela ne boste potrebovali.

Korak 7: Razdelite vrata OBD-II, tako da ima Arduino moč le, ko avto vozi

Razdelitev vrat OBD-II, tako da ima Arduino moč le, ko avto vozi
Razdelitev vrat OBD-II, tako da ima Arduino moč le, ko avto vozi
Razdelitev vrat OBD-II, tako da ima Arduino moč le, ko avto vozi
Razdelitev vrat OBD-II, tako da ima Arduino moč le, ko avto vozi
Razdelitev vrat OBD-II, tako da ima Arduino moč le, ko avto vozi
Razdelitev vrat OBD-II, tako da ima Arduino moč le, ko avto vozi

Kmalu po namestitvi zaslona sem spoznal, da je zaslon vedno vklopljen, tudi ko je avto izklopljen. Če pogledam pinout OBD-II, sem ugotovil, da je 12V napajalni vod do konektorja OBD-II vedno priključen neposredno na baterijo.

Da bi to rešil, sem kupil razdelilnik OBD-II, prerezal žico, ki bo šla na pin 16, na enem od dveh priključkov na razdelilniku, nato pa to prerezano žico priključil na žico za dodajanje vezja.

Nato sem z multimetrom odšel do škatle z varovalkami na voznikovi strani in preizkusil obstoječe varovalke, da vidim, katera varovalka se je napajala, potem ko je bil ključ obrnjen v vžig.

Nazadnje sem na varovalko, ki sem jo našel, priključil žico za dodajanje tokokroga, tako da se zaslon zdaj vklopi le, ko mi avto teče. Prosimo, raziščite, kako pravilno dodati vezje v avto. Ta vadnica na YouTubu se mi je zdela dobra.

Priporočena: