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, Juli
Anonim
Image
Image
Arduino displej za automobile
Arduino displej za automobile
Arduino displej za automobile
Arduino displej za automobile

Izgradio sam ugrađeni dijagnostički (OBD-II) ekran koristeći 7-inčni TFT LCD sa Adafruit-a, Teensy 3.6, Freematics OBD-II I2C adaptera i neke jeftine sigurnosne senzore koje sam pronašao na Amazonu. Ekran ima dvije stranice: jedna za vrijeme kada je moja Honda Accord u pogonu i jedna za vožnju unatrag.

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

Kada je moj automobil u rikverc, Arduino IDE kompatibilan Teensy 3.6 čita animiranu bitmap sliku mog automobila koju sam pronašao na mreži, prikazuje je, a zatim čita sigurnosne senzore. Sva četiri senzora imaju udaljenost u stopama plus animaciju iza automobila koja mijenja boju na osnovu toga 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 ekrana noću.

Krajnji rezultat izgleda odlično i odlično funkcionira u mom automobilu. Čak sam ga na kraju i instalirao na središnju konzolu, što je bio sasvim drugi proces u koji neću ulaziti u ovom uputstvu. Spisak delova koje sam koristio za kreiranje ovog LCD ekrana nalazi se ispod.

1) Freematics OBD -II adapter - 35 USD

2) Rezervni senzori - 15 USD

3) 7 TFT LCD ekran - 38 USD

4) Upravljački program za LCD ekran zasnovan na SPI - 35 USD

5) Teensy 3,6 - 30 USD

6) Level Shifter - 4 USD

7) ICH držača Buffer IC 74HC125 -6 USD za 2 pakovanja (siguran sam da biste ovo jeftinije mogli pronaći na drugom mjestu)

8) MicroSD kartica> = 1 GB - 4 USD

9) Žica, kondenzatori i otpornici.

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

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

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

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

Korak 1: Čitanje sigurnosnih kopija senzora

Čitanje sigurnosnih senzora
Čitanje sigurnosnih senzora
Čitanje sigurnosnih senzora
Čitanje sigurnosnih senzora
Čitanje sigurnosnih kopija senzora
Čitanje sigurnosnih kopija 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 je prikazano na gornjoj slici. Htjela 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 ekran. 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. Postojala je +5V crvena žica, uzemljena crna žica i plava žica. Nakon što sam spojio svoj osciloskop sa plavom žicom i masom, vidio sam trag sličan onoj na gornjoj slici, ali ne baš (upotrijebio sam sliku sa gore navedene web stranice). Moj trag je imao VELIKO 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 dužini u metrima. Uključio sam Arduino IDE skicu koja čita senzore i šalje podatke preko serijske konzole.

Korak 2: Kreiranje bitmap slike i njeno stavljanje na MicroSD karticu

Kreiranje bitmap slike i njeno stavljanje na MicroSD karticu
Kreiranje bitmap slike i njeno stavljanje na MicroSD karticu
Kreiranje bitmap slike i njeno stavljanje na MicroSD karticu
Kreiranje bitmap slike i njeno stavljanje na MicroSD karticu

Koristio sam besplatni softver za uređivanje fotografija pod nazivom GIMP za obrezivanje i promjenu veličine slike mog automobila s gornje strane. 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 zbog kojih sam se odlučio za Teensy 3.6 umjesto za UNO bila je brzina kojom je Teensy mogao pročitati SD karticu i prikazati sliku pomoću upravljačkog programa za prikaz RA8875. Korištenjem UNO -a proces je trajao oko 8 sekundi, dok je Teensyju 3.6 bilo potrebno 1,8 sekundi.

Korak 3: Povezivanje hardvera

Povezivanje hardvera
Povezivanje hardvera

Adafruit ima zaista lijep 7 -inčni TFT LCD koji pokreće IC koji se zove RA8875. Ovaj ekran i upravljački program za ekran sam odabrao iz dva razloga. Prvo, postoje opsežne biblioteke koje su već napisane za ekran. Drugo, upravljački program ekrana može razgovarati sa bilo koji mikrokontroler preko SPI, što znači da nema toliko žica koje povezuju mikrokontroler sa RA8875.

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

Napravio sam shemu Fritzinga tako da svako ko želi stvoriti ovaj zaslon može lako pročitati na šta se povežu pinovi na Teensy 3.6. Uključio sam.frz datoteku ispod. 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 napajanje automobila 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. Ovo je potrebno za OBD I2C adapter, kao i primopredajnik sa rezervnim senzorom. Drugo, I2C linije za tinejdžere zahtijevaju otpornike od 4,7 kΩ. Treće, četiri otpornika koji povezuju "žicu za noćno vrijeme" (žica za prigušivanje) i "žica za uključivanje rezervne kopije" neophodna su da posluže kao razdjelnik napona za smanjenje 12V-13V signala na oko 2.5-3V signala.

AŽURIRANJE 22.07.18. Otkrio sam da senzor unutrašnje temperature OBD-I2C modula odašilje vrlo čudne brojeve. Ponekad bi to radilo, ali većinu vremena modul je izlazio s temperaturama iznad 400 stupnjeva F. Zbog toga sam odlučio dodati svoj 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 strujno kolo za resetiranje kako bih se uvjerio da se ispravno pokreće.

Korak 4: RA8875 upravljački program za prikaz i grafički dizajn

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

Upravljački program za prikaz RA8875 ima biblioteku pod nazivom Adafruit_RA8875, koju sam koristio pri kreiranju oblika koji se vide na prvoj i drugoj stranici. Biblioteka za RA8875 može stvarati samo linije, pravokutnike, zaobljene pravokutnike, trokute, elipse i krugove, tako da 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 koje sam koristio za praćenje mjesta trokuta i drugih oblika.

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

Što se tiče fontova, biblioteka Adafruit_RA8875 podržava samo jedan, osim ako ne komentarišete dio biblioteke, što vam omogućava da koristite fontove biblioteke Adafruit_GFX. Ispod sam uključio izmijenjenu biblioteku Adafruit_RA8875. Upravo sam komentirao nekoliko redaka koda i tada sam mogao koristiti fontove u biblioteci Adafruit_GFX. Takođe, da biste koristili font od 7 segmenata koji sam koristio u ovom projektu, provjerite da li se datoteka "FreeSevenSegNumFont.h" nalazi u fascikli fontova u biblioteci Adafruit_GFX.

Korak 5: Otpremanje skice

Otpremanje skice
Otpremanje skice
Otpremanje skice
Otpremanje skice

Za postavljanje skice na Teensy 3.6, morate instalirati Teensyduino. Zatim ćete morati zamijeniti biblioteke Adafruit_RA8875 i Adafruit_GFX na maloj lokaciji biblioteke (nije vaša tipična lokacija u dokumentima). Na Mac -u sam morao desnom tipkom miša kliknuti na 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 ispod vašeg C pogona u programskim datotekama x86, Arduino, a zatim u fascikli hardvera. Kada to učinite, morat ćete promijeniti lokaciju skice u Arduino aplikaciji tako što ćete je urediti u postavkama gdje god se nalazile vaše biblioteke 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 senzor unutrašnje temperature OBD-II I2C modula. Molimo, prenesite skicu display_code_with_new_temperature_sensor 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, ekran 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 se vaše tinejdžerske postavke podudaraju sa slikom. Otkrio sam da overclocking tinejdžera na 240MHz nije dopuštao I2C OBD-II adapteru da komunicira s tinejdžerima. Na kraju, samo kliknite na upload.

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

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

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

Napravio sam 3D štampani gornji i donji poklopac LCD -a za zaštitu ekrana od 7 inča. Priložio sam datoteke. IPT izumitelja, kao i. STL datoteke.

Uključio sam i dio koji se zove backup_sensor_ring.ipt, a to 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 rezervne senzore koje sam kupio na Amazonu, pa sam morao stvoriti prsten koji bi stao na rezervne senzore. Ako ćete bušiti u braniku s uključenim kružnim bušilicom u kompletu, 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
Dijeljenje OBD-II porta tako da Arduino ima snagu samo dok automobil radi
Dijeljenje 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

Ubrzo nakon instaliranja ekrana 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 direktno 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 isječenu ž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 na osigurač koji sam pronašao tako da se zaslon sada uključuje samo dok mi auto radi. Istražite kako pravilno dodati kolo u automobil. Smatrao sam da je ovaj tutorial za YouTube dobar.

Preporučuje se: