Sadržaj:

Arduino zaslon automobila: 7 koraka (sa slikama)
Arduino zaslon automobila: 7 koraka (sa slikama)

Video: Arduino zaslon automobila: 7 koraka (sa slikama)

Video: Arduino zaslon automobila: 7 koraka (sa slikama)
Video: Автомобильный генератор для генератора с самовозбуждением с использованием ДИОДА 2024, Studeni
Anonim
Image
Image
Arduino zaslon za automobile
Arduino zaslon za automobile
Arduino zaslon za automobile
Arduino zaslon za automobile

Napravio sam ugrađeni zaslon za dijagnostiku (OBD-II) koristeći 7-inčni TFT LCD iz Adafruit-a, Teensy 3.6, Freematics OBD-II I2C adapter i neke jeftine sigurnosne senzore koje sam pronašao na Amazonu. Zaslon ima dvije stranice: jedan za vrijeme kada je moja Honda Accord u pogonu i jedan za kada je u rikverc.

Kad je moj automobil u pogonu, prikazuju se RPM, MPH, postotak opterećenja motora, napon baterije, temperatura kabine i temperatura rashladne tekućine (postoji nekoliko drugih statistika vozila dostupnih za prikaz ako ih ne želite).

Kad je moj automobil u rikverc, Arduino IDE kompatibilan Teensy 3.6 čita animiranu bitmap sliku mog automobila koju sam pronašao na internetu, prikazuje je, a zatim čita sigurnosne senzore. Sva četiri senzora imaju udaljenost u stopama plus animaciju iza automobila koja mijenja boju ovisno o tome koliko je objekt blizu auta (samo zelena znači <5 stopa, zelena i žuta znači <2,6 stopa, a zelena, žuta, a crveno znači <1 stopa).

Konačno, dodao sam mogućnost zatamnjivanja zaslona noću.

Krajnji rezultat izgleda odlično i vrlo dobro funkcionira u mom automobilu. Čak sam ga na kraju i instalirao na središnju konzolu, što je bio sasvim drugi proces u koji se neću upuštati u ovom uputstvu. Popis dijelova koje sam koristio za izradu ovog LCD zaslona nalazi se ispod.

1) Freematics OBD -II adapter - 35 USD

2) Sigurnosni senzori - 15 USD

3) 7 TFT LCD zaslon - 38 USD

4) Upravljački program LCD zaslona temeljen na SPI - 35 USD

5) Tinejdžerski 3,6 - 30 USD

6) Razina pomaka - 4 USD

7) IC State Buffer IC 74HC125 -6 USD za 2 pakiranja (siguran sam da biste ovo jeftinije mogli pronaći negdje drugdje)

8) MicroSD kartica> = 1 GB - 4 USD

9) Žica, kondenzatori i otpornici.

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

11) (izborno): temperaturni osjetnik DS18B20 - 8 USD

12) (izborno): OBD -II razdjelnik - 10 USD

13) (izborno): Dodajte kabel osigurača u krug - 8 USD za paket od 5 komada

Korak 1: Očitavanje sigurnosnih senzora

Čitanje sigurnosnih senzora
Čitanje sigurnosnih senzora
Čitanje sigurnosnih senzora
Čitanje sigurnosnih senzora
Čitanje sigurnosnih senzora
Čitanje sigurnosnih senzora
Čitanje sigurnosnih senzora
Čitanje sigurnosnih senzora

Ovaj korak je lukav jer ti sigurnosni senzori komuniciraju s primopredajnikom, a zatim s malim LCD -om, kao što se vidi na gornjoj slici. Htio sam način da se riješim njihovog prikaza i upotrijebim svoj. Uz pomoć web stranice koju sam pronašao nakon guglanja (hakiranje senzora za parkiranje unatrag) uspio sam pročitati vlasnički komunikacijski protokol koji primopredajnik šalje na LCD zaslon. Iz nekog razloga komunikacijski protokol nije tipičan poput I2C, UART, CAN, USB itd., A protokol se razlikuje ovisno o dobavljaču. Toplo preporučujem da kupite komplet koji sam gore povezao ako ćete koristiti moj kôd jer je posebno napisan za te senzore.

Prije nego što sam odspojio LCD koji su mi dali, ispitao sam tri žice koje spajaju primopredajnik i LCD. Tu je bila +5V crvena žica, uzemljena crna žica i plava žica. Nakon što sam spojio svoj osciloskop s plavom žicom i masom, vidio sam trag sličan onoj na gornjoj slici, ali ne baš (upotrijebio sam sliku s gore navedene web stranice). Moj je trag imao VISOKO dulji startni bit, nakon čega je slijedilo 17 bitova kraćeg trajanja. Bitovi 0-5 nakon početnog bita nisu imali korisne informacije. Bitovi 6-8 odgovaraju senzoru A, B, C ili D. Bit 9-16 odgovara duljini u metrima. Uključio sam Arduino IDE skicu koja čita senzore i izbacuje podatke preko serijske konzole.

Korak 2: Stvorite bitmap sliku i stavite je na microSD karticu

Stvaranje bitmap slike i stavljanje na microSD karticu
Stvaranje bitmap slike i stavljanje na microSD karticu
Stvaranje bitmap slike i stavljanje na microSD karticu
Stvaranje bitmap slike i stavljanje na microSD karticu

Koristio sam besplatni softver za uređivanje fotografija pod nazivom GIMP za obrezivanje i promjenu veličine slike automobila s pogleda odozgo. Zatim sam izvezao sliku kao 24 bitnu sliku pod nazivom "car.bmp" koja ima 110 piksela po 250 piksela. Postavio sam ovo na microSD karticu i stavio microSD karticu u svoj Teensy 3.6 mikrokontroler.

Glavni razlozi zašto sam otišao s Teensy 3.6 umjesto s UNO -om bila je brzina kojom je Teensy mogao čitati SD karticu i prikazivati sliku pomoću upravljačkog programa za zaslon RA8875. Korištenjem UNO -a proces je trajao oko 8 sekundi, dok je Teensy 3.6 trajao 1,8 sekundi.

Korak 3: Povezivanje hardvera

Povezivanje hardvera
Povezivanje hardvera

Adafruit ima jako lijep 7 -inčni TFT LCD koji pokreće IC koji se naziva RA8875. Ovaj zaslon i upravljački program zaslona odabrao sam iz dva razloga. Prvo, postoje opsežne biblioteke unaprijed napisane za zaslon. Drugo, upravljački program zaslona može razgovarati s bilo kojeg mikrokontrolera preko SPI -ja, što znači da nema toliko žica koje povezuju mikrokontroler s RA8875.

Postoje dva nedostatka ove postavke. Prvo je činjenica da postoji hardverska greška s RA8875 pločom iz Adafruit-a koja zahtijeva upotrebu trostrukog međuspremnika ICH 74HC125 ako želite koristiti bilo koji uređaj temeljen na SPI-u, poput SD kartice. Da biste u potpunosti razumjeli hardversku grešku, pročitajte sljedeći forum. Drugo, relativno je dugo vrijeme potrebno za slanje slika na LCD. Također, dugo vrijeme potrebno za slanje slike na LCD zaslon je posljedica SPI veze, koja je ograničena brzinom takta mikrokontrolera i velikom količinom podataka koje je potrebno poslati upravljačkom programu zaslona preko vrlo malo žica.

Napravio sam shemu Fritzinga tako da svatko tko želi stvoriti ovaj zaslon može lako pročitati na što se povežu pinovi na Teensy 3.6. U nastavku sam uključio.frz datoteku. Jedine dvije komponente koje nisu označene su kondenzatori, koji su 1F 16V elektrolitički kondenzator i 100μF keramički kondenzator. Uključio sam ih kako bih bio siguran da je napajanje Teensy mikrokontrolera stalno DC +5V i da ne sadrži nikakve skokove napona (možda nije potrebno, ali uključio sam ih jer opskrba automobila naponom može brzo varirati ovisno o opterećenju baterije).

Nekoliko stvari koje treba spomenuti o komponentama. Prvo, mjenjač razine uzima bilo koji 5V signal i pretvara ga u siguran napon od 3.3V Teensy 3.6. To je potrebno za OBD I2C adapter, kao i primopredajnik rezervnog senzora. Drugo, I2C linije za tinejdžere zahtijevaju otpornike od 4,7 kΩ. Treće, četiri otpornika koji povezuju "žicu za noćno vrijeme" (žicu za prigušivanje) i "žicu za uključivanje sigurnosne kopije" neophodna su da posluže kao razdjelnik napona kako bi se signali 12V-13V sveli na signale od oko 2.5-3V.

AŽURIRANJE 22. 7. 18: Otkrio sam da senzor unutarnje temperature modula OBD-I2C odašilje vrlo čudne brojeve. Ponekad bi to uspjelo, ali većinu vremena modul je izlazio s temperaturama iznad 400 stupnjeva F. Zbog toga sam odlučio dodati vlastiti senzor temperature ds18b20. Ovdje možete koristiti bilo koju vrstu temperaturnog senzora, ali ćete morati urediti Arduino kôd.

UPDATE 3/1/19: Teensy 3.6 ne počinje kada je izuzetno hladno. Dodao sam sklop za resetiranje napajanja kako bih se uvjerio da se ispravno pokreće.

Korak 4: RA8875 upravljački program zaslona i grafički dizajn

RA8875 Upravljački program zaslona i grafički dizajn
RA8875 Upravljački program zaslona i grafički dizajn

Upravljački program zaslona RA8875 ima biblioteku pod nazivom Adafruit_RA8875, koju sam koristio pri stvaranju oblika koji se vide na prvoj i drugoj stranici. Knjižnica za RA8875 može stvarati samo linije, pravokutnike, zaobljene pravokutnike, trokute, elipse i krugove, pa se grafike moraju osmisliti na pametan način za stvaranje složenijih oblika. Na primjer, sivi prsten na prvoj stranici zapravo je puni sivi krug većeg promjera nakon kojeg slijedi puni crni krug manjeg promjera. Također, jedan mali dio stranice rezervnog senzora sadrži 2 trokuta raspoređena tako da čine oblik poligona. Učinio sam to kako bih mogao promijeniti boju pojedinog odjeljka stranice senzora sigurnosne kopije. Arduino datoteka za prikaz sadrži niz točaka pomoću kojih sam pratio gdje su trokuti i drugi oblici.

Koristio sam ovu sjajnu web stranicu za odabir boja RGB565 i definiranje istih na skici kako bih mogao koristiti boje koje nisu zadane već unaprijed definirane u biblioteci Adafruit_RA8875.

Što se tiče fontova, knjižnica Adafruit_RA8875 podržava samo jedan ako ne komentirate dio biblioteke, koji vam omogućuje korištenje fontova biblioteke Adafruit_GFX. U nastavku sam uključio izmijenjenu biblioteku Adafruit_RA8875. Upravo sam komentirao nekoliko redaka koda i tada sam mogao koristiti fontove u biblioteci Adafruit_GFX. Također, za korištenje 7 -segmentnog fonta koji sam koristio u ovom projektu, provjerite je li datoteka "FreeSevenSegNumFont.h" u mapi fontova u knjižnici Adafruit_GFX.

Korak 5: Prijenos skice

Učitavanje skice
Učitavanje skice
Učitavanje skice
Učitavanje skice

Da biste skicu prenijeli na Teensy 3.6, morate instalirati Teensyduino. Tada ćete morati zamijeniti biblioteke Adafruit_RA8875 i Adafruit_GFX na mjestu za male knjižnice (nije vaše tipično mjesto u dokumentima). Na Mac -u sam morao desnom tipkom miša kliknuti ikonu aplikacije Arduino u aplikacijama, a zatim otići do/Contents/Java/hardware/teensy/avr/libraries. Na Windowsima sam prilično siguran da se nalazi pod vašim pogonom C u programskim datotekama x86, Arduino, a zatim i u hardverskoj mapi. Nakon što to učinite, morat ćete promijeniti mjesto skice u aplikaciji Arduino tako da je uredite u postavkama gdje god se nalazile vaše knjižnice za tinejdžere (tj. /Applications/Arduino.app/Contents/Java/hardware/teensy/avr).

AŽURIRANJE 22. 7. 16: Zbog problema s unutarnjim osjetnikom temperature o kojem sam ranije govorio, morao sam instalirati senzor temperature modula DS18B20. Vidjet ćete 4 arduino skice u zip datoteci. Molimo prenesite skicu display_code ako želite koristiti unutarnji osjetnik temperature OBD-II I2C modula. Molimo, prenesite skicu prikaza_koda_ s_novom_temperaturom_senzora ako želite koristiti DS18B20 modul koji sam gore povezao.

AŽURIRANO 17.11.17.: Ispravio sam nekoliko grešaka u softveru, uključujući DS18B20 koji daje temperaturu od 185 Fahrenheita, zaslon se uopće ne uključuje po hladnom vremenu, a pikseli zaglave u pogrešnoj boji kada je zaslon zatamnjen.

Zatim upotrijebite gornju sliku kako biste bili sigurni da vaše postavke za tinejdžere odgovaraju slici. Otkrio sam da overclocking tinejdžera na 240MHz ne dopušta I2C OBD-II adapteru da komunicira s tinejdžerima. Na kraju, samo kliknite upload.

Napisao sam prilično opsežne komentare u arduino skicama. Tamo potražite objašnjenje kako softver radi. Za sva pitanja slobodno me kontaktirajte. Pokušat ću na njih odgovoriti najbolje što mogu. Sretno!

Korak 6: 3D ispis LCD kućišta

3D ispis LCD kućišta
3D ispis LCD kućišta
3D ispis LCD kućišta
3D ispis LCD kućišta
3D ispis LCD kućišta
3D ispis LCD kućišta

Napravio sam 3D tiskani gornji i donji poklopac LCD -a za zaštitu zaslona od 7 . Priložio sam datoteke. IPT izumiteljskih dijelova kao i. STL datoteke.

Uključio sam i dio pod nazivom backup_sensor_ring.ipt, koji je prsten koji stane oko onih sigurnosnih senzora koje sam gore povezao. Moj automobil je već imao prethodno izbušene rupe za rezervne senzore koje su bile prevelike za sigurnosne senzore koje sam kupio na Amazonu, pa sam morao stvoriti prsten koji će stati na rezervne senzore. Ako ćete bušiti u braniku s uključenim kružnim bušilicom u setu, ovaj dio vam neće trebati.

Korak 7: Razdvajanje OBD-II porta tako da Arduino ima snagu samo dok automobil radi

Razdvajanje OBD-II porta tako da Arduino ima snagu samo dok automobil radi
Razdvajanje OBD-II porta tako da Arduino ima snagu samo dok automobil radi
Razdvajanje OBD-II porta tako da Arduino ima snagu samo dok automobil radi
Razdvajanje OBD-II porta tako da Arduino ima snagu samo dok automobil radi
Razdvajanje OBD-II porta tako da Arduino ima snagu samo dok auto radi
Razdvajanje OBD-II porta tako da Arduino ima snagu samo dok auto radi

Ubrzo nakon instaliranja zaslona shvatio sam da je zaslon uvijek uključen, čak i kad je automobil bio isključen. Gledajući u OBD-II pinout, otkrio sam da je naponski vod od 12V na OBD-II konektoru uvijek spojen izravno na bateriju.

Da bih to riješio, kupio sam OBD-II razdjelnik, prerezao žicu koja ide na pin 16 na jednom od dva konektora na razdjelniku, a zatim sam tu izrezanu žicu spojio na žicu za dodavanje kruga.

Zatim sam, koristeći svoj multimetar, otišao do kutije s osiguračima na strani vozača i testirao postojeće osigurače kako bih vidio koji je osigurač dobio napajanje nakon što je ključ bio u kontaktu.

Na kraju sam spojio žicu za dodavanje strujnog kruga s osiguračem koji sam pronašao tako da se zaslon sada uključuje samo dok mi auto radi. Istražite kako pravilno dodati krug u automobil. Smatrao sam da je ovaj tutorial za YouTube dobar.

Preporučeni: