Sisällysluettelo:

Arduino -auton näyttö: 7 vaihetta (kuvilla)
Arduino -auton näyttö: 7 vaihetta (kuvilla)

Video: Arduino -auton näyttö: 7 vaihetta (kuvilla)

Video: Arduino -auton näyttö: 7 vaihetta (kuvilla)
Video: Using HT1621 6 Digits Seven Segment LCD Display | Lesson 103: Arduino Step By Step Course 2024, Heinäkuu
Anonim
Image
Image
Arduinon autonäyttö
Arduinon autonäyttö
Arduinon autonäyttö
Arduinon autonäyttö

Rakensin sisäänrakennetun diagnostiikkaan (OBD-II) perustuvan näytön käyttämällä Adafruitin 7 tuuman TFT-nestekidenäyttöä, Teensy 3.6: ta, Freematics OBD-II I2C -sovitinta ja joitain Amazonin löytämiä varmuuskopiointiantureita. Näytössä on kaksi sivua: yksi, kun Honda Accord on ajon aikana ja toinen, kun se on peruutusvaihteessa.

Kun autoni on ajon aikana, RPM, MPH, moottorin kuormitusprosentti, akun jännite, matkustamon lämpötila ja moottorin jäähdytysnesteen lämpötila näytetään (on olemassa useita muita ajoneuvotilastoja, jos niitä ei haluta näyttää).

Kun autoni on peruutusvaihteessa, Arduino IDE -yhteensopiva Teensy 3.6 lukee animoidun bittikarttakuvan autostani, jonka löysin verkossa, näyttää sen ja lukee sitten vara -anturit. Näiden neljän anturin etäisyys on jaloissa ja auton takana oleva animaatio, joka muuttaa väriä sen mukaan, kuinka lähellä kohde on autoon (vain vihreä tarkoittaa <5 jalkaa, vihreä ja keltainen tarkoittaa <2,6 jalkaa ja vihreä, keltainen, ja punainen tarkoittaa <1 jalka).

Lopuksi lisäsin kyvyn himmentää näyttöä yöllä.

Lopputulos näyttää hyvältä ja toimii erittäin hyvin autossani. Asensin sen jopa keskikonsoliin, mikä oli aivan toinen prosessi, johon en pääse tässä ohjeessa. Alla on luettelo osista, joita käytin tämän LCD -näytön luomisessa.

1) Freematics OBD -II -sovitin - 35 dollaria

2) Vara -anturit - 15 dollaria

3) 7 TFT LCD -näyttö - 38 dollaria

4) SPI -pohjainen LCD -näytönohjain - 35 dollaria

5) Teensy 3,6 - 30 dollaria

6) Tasonvaihtaja - 4 dollaria

7) 74HC125 Tri State Buffer IC -6 dollaria 2 pakkauksesta (olen varma, että löydät tämän huijarin muualta)

8) MicroSD -kortti> = 1 Gt - 4 dollaria

9) Johdot, kondensaattorit ja vastukset.

10) LP3470-2.93 Käynnistä Reset IC - 2 dollaria

11) (valinnainen): DS18B20 -lämpötila -anturi - 8 dollaria

12) (valinnainen): OBD -II Splitter - 10 dollaria

13) (valinnainen): Lisää piirisulakejohto - 8 dollaria 5 pakkaukseen

Vaihe 1: Varmuuskopiointianturien lukeminen

Varmuuskopiointianturien lukeminen
Varmuuskopiointianturien lukeminen
Varmuuskopiointianturien lukeminen
Varmuuskopiointianturien lukeminen
Varmuuskopiointianturien lukeminen
Varmuuskopiointianturien lukeminen
Varmuuskopiointianturien lukeminen
Varmuuskopiointianturien lukeminen

Tämä vaihe on hankala, koska nämä vara -anturit kommunikoivat lähettimen ja sitten pienen nestekidenäytön kanssa, kuten yllä olevassa kuvassa näkyy. Halusin tavan päästä eroon niiden näytöstä ja käyttää omaa. Googlaamisen jälkeen löytämäni verkkosivuston avulla (hakkerointi taaksepäin suunnatut pysäköintianturit) pystyin lukemaan oman viestintäprotokollan, jonka lähetin -vastaanotin lähettää nestekidenäytölle. Jostain syystä tiedonsiirtoprotokolla ei ole tyypillinen, kuten I2C, UART, CAN, USB jne., Ja protokolla vaihtelee toimittajan mukaan. Suosittelen lämpimästi ostamaan yllä linkittämäni sarjan, jos aiot käyttää koodiani, koska se on nimenomaan kirjoitettu kyseisille antureille.

Ennen kuin irrotin toimittamani nestekidenäytön, tutkin kolme lähetin -vastaanottimen ja nestekidenäytön yhdistävää johtoa. Siellä oli +5 V punainen johto, musta maadoitusjohto ja sininen johto. Liitettyäni oskilloskoopin siniseen johtoon ja maahan, näin jäljen, joka on samanlainen kuin yllä oleva kuva, mutta ei täsmälleen (käytin kuvaa yllä linkitetyltä verkkosivustolta). Jäljelläni oli HIGH pidempi kestobitti, jota seurasi 17 lyhytkestoisempaa bittiä. Biteillä 0-5 aloitusbitin jälkeen ei ollut hyödyllistä tietoa. Bitit 6-8 vastaavat anturia A, B, C tai D. Bitit 9-16 vastasivat pituutta metreinä. Lisäsin Arduino IDE -luonnoksen, joka lukee anturit ja lähettää tiedot sarjakonsolin kautta.

Vaihe 2: Bittikarttakuvan luominen ja asettaminen MicroSD -kortille

Bittikarttakuvan luominen ja asettaminen MicroSD -kortille
Bittikarttakuvan luominen ja asettaminen MicroSD -kortille
Bittikarttakuvan luominen ja asettaminen MicroSD -kortille
Bittikarttakuvan luominen ja asettaminen MicroSD -kortille

Käytin ilmaista kuvankäsittelyohjelmistoa nimeltä GIMP rajatakseni ja muuttaakseni auton kuvaa ylhäältä. Sitten vienin kuvan 24 -bittisenä bittikarttakuvana nimeltä "car.bmp" eli 110 x 250 pikseliä. Latasin tämän microSD -kortille ja laitoin microSD -kortin Teensy 3.6 -mikro -ohjaimeen.

Tärkeimmät syyt, miksi valitsin Teensy 3.6: n UNO: n sijasta, oli nopeus, jolla Teensy pystyi lukemaan SD -kortin ja näyttämään kuvan RA8875 -näytönohjaimen avulla. UNO: n avulla prosessi kesti noin 8 sekuntia, kun taas Teensy 3.6 kesti 1,8 sekuntia.

Vaihe 3: Laitteiston liittäminen

Laitteiston liittäminen
Laitteiston liittäminen

Adafruitissa on todella hyvännäköinen 7 -tuumainen TFT -nestekidenäyttö, jota ohjaa RA8875 -niminen IC. Valitsin tämän näytön ja näytönohjaimen kahdesta syystä. Ensinnäkin näyttöön on kirjoitettu laaja kirjasto. Toiseksi näytönohjain voi puhua mikä tahansa mikro -ohjain SPI: n yli, mikä tarkoittaa, ettei mikro -ohjainta ole yhdistetty RA8875: een niin paljon.

Tässä asennuksessa on kaksi huonoa puolta. Ensimmäinen on se tosiasia, että Adafruitin RA8875-kortilla on laitteistovirhe, joka vaatii 74HC125-tri-state-puskurin IC: n käyttöä, jos haluat käyttää mitä tahansa SPI-pohjaista laitetta, kuten SD-korttia. Jos haluat ymmärtää laitteistovirheen paremmin, lue seuraava foorumi. Toiseksi on suhteellisen pitkä aika, joka kuluu kuvien lähettämiseen nestekidenäyttöön. Lisäksi kuvan lähettämiseen nestekidenäyttöön kuluva pitkä aika johtuu SPI -yhteydestä, jota rajoittavat mikro -ohjaimien kellonopeus ja suuri määrä dataa, joka on lähetettävä näytönohjaimelle. hyvin vähän johtoja.

Tein Fritzing -kaavion, jotta jokainen, joka haluaa luoda tämän näytön, voi helposti lukea, mihin Teensy 3.6: n nastat yhdistetään. Lisäsin alla.frz -tiedoston. Ainoat kaksi komponenttia, joita ei ole merkitty, ovat kondensaattorit, jotka ovat 1F 16V elektrolyyttikondensaattori ja 100μF keraaminen kondensaattori. Lisäsin nämä varmistaakseni, että Teensy -mikrokontrollerin virta on tasainen DC +5 V ja ettei siinä ole jännitepiikkejä (ei ehkä välttämätöntä, mutta lisäsin ne, koska auton jännitesyöttö voi vaihdella nopeasti akun kuormituksen mukaan).

Muutama mainittava asia komponenteista. Ensinnäkin tasonvaihtaja ottaa minkä tahansa 5 V: n signaalin ja muuttaa sen 3,3 V: n Teensy 3,6: n turvalliseksi jännitteeksi. Tämä on tarpeen OBD I2C -sovittimelle ja vara -anturilähetin -vastaanottimelle. Toiseksi teensyn I2C -linjat vaativat 4,7 kΩ: n vetovastusvastuksia. Kolmanneksi neljä vastusta, jotka yhdistävät "yöaikajohdon" (himmennysjohtimen) ja "vara-kytkentäjohdon", ovat tarpeen toimimaan jännitteenjakajana 12V-13V-signaalien laskemiseksi noin 2,5-3V-signaaleiksi.

PÄIVITYS 22.7.2018: Havaitsin OBD-I2C-moduulin sisäisen lämpötila-anturin antavan hyvin outoja numeroita. Joskus se toimisi, mutta suurimman osan ajasta moduuli lähetti yli 400 asteen lämpötilan. Tästä syystä päätin lisätä oman ds18b20 -lämpötila -anturin. Olet enemmän kuin tervetullut käyttämään minkä tahansa tyyppistä lämpötila -anturia täällä, mutta sinun on muokattava Arduino -koodia.

PÄIVITYS 01.03.19: Teensy 3.6 ei käynnisty äärimmäisen kylmänä. Lisäsin virrankatkaisupiirin varmistaakseni, että se käynnistyy kunnolla.

Vaihe 4: RA8875 -näytönohjain ja grafiikan suunnittelu

RA8875 -näytönohjain ja graafinen suunnittelu
RA8875 -näytönohjain ja graafinen suunnittelu

RA8875 -näytönohjaimessa on kirjasto Adafruit_RA8875, jota käytin luodessani muotoja, jotka näkyvät ensimmäisellä ja toisella sivulla. RA8875: n kirjasto voi luoda vain viivoja, suorakulmioita, pyöristettyjä suorakulmioita, kolmioita, ellipsejä ja ympyröitä, joten grafiikka on suunniteltava älykkäästi monimutkaisempien muotojen luomiseksi. Esimerkiksi ensimmäisen sivun harmaa rengas on itse asiassa täysi harmaa ympyrä, jonka halkaisija on suurempi ja jota seuraa koko musta ympyrä, jonka halkaisija on pienempi. Lisäksi yksi pieni osa varmuuskopiointianturin sivusta sisältää kaksi kolmiota, jotka on järjestetty siten, että ne muodostavat monikulmion. Tein tämän, jotta voisin muuttaa varmuuskopioanturisivun yksittäisen osan väriä. Näytön Arduino -tiedosto sisältää joukon pisteitä, joita käytin seuraamaan kolmioiden ja muiden muotojen sijaintia.

Käytin tätä hienoa verkkosivustoa RGB565-värien valitsemiseksi ja luonnoksen määrittämiseksi luonnoksessa, jotta voisin käyttää muita kuin oletusvärejä, jotka on jo määritetty Adafruit_RA8875-kirjastossa.

Fonttien osalta Adafruit_RA8875 -kirjasto tukee vain yhtä, ellet kommentoi kirjaston osaa, jonka avulla voit käyttää Adafruit_GFX -kirjaston fontteja. Lisäsin alla olevan muokatun Adafruit_RA8875 -kirjaston. Kommentoin juuri muutaman koodirivin ja pystyin sitten käyttämään Adafruit_GFX -kirjaston fontteja. Jos haluat käyttää tässä projektissa käyttämääni 7 -segmenttistä fonttia, varmista myös, että "FreeSevenSegNumFont.h" -tiedosto, joka on Adafruit_GFX -kirjaston fonts -kansiossa.

Vaihe 5: Luonnoksen lataaminen

Luonnoksen lataaminen
Luonnoksen lataaminen
Luonnoksen lataaminen
Luonnoksen lataaminen

Jos haluat ladata luonnoksen Teensy 3.6: een, sinun on asennettava Teensyduino. Sitten sinun on vaihdettava Adafruit_RA8875- ja Adafruit_GFX -kirjastot teensy -kirjaston sijainnissa (ei tyypillinen sijaintisi asiakirjoissa). Macissa minun piti napsauttaa hiiren kakkospainikkeella sovellusten Arduino -sovelluskuvaketta ja siirtyä sitten kohtaan/Sisältö/Java/laitteisto/teensy/avr/kirjastot. Windowsissa olen melko varma, että se on C -aseman alla ohjelmatiedostoissa x86, Arduino ja sitten laitteistokansio siellä. Kun olet tehnyt sen, sinun on vaihdettava luonnoskirjapaikan sijainti Arduino -sovelluksessa muokkaamalla sitä asetuksissa siihen, missä teini -ikäiset kirjastosi ovat (esim. /Applications/Arduino.app/Contents/Java/hardware/teensy/avr).

PÄIVITYS 22.7.2016: Sisäisen lämpötila -anturiongelman vuoksi, josta puhuin aiemmin, jouduin asentamaan DS18B20 -moduulin lämpötila -anturin. Näet 4 arduino -luonnosta zip -tiedostossa. Lataa display_code-luonnos, jos haluat käyttää OBD-II I2C -moduulin sisäistä lämpötila-anturia. Lataa display_code_with_new_temperature_sensor -luonnos, jos haluat käyttää yllä linkitettyä DS18B20 -moduulia.

PÄIVITYS 17.11.17: Korjasin useita ohjelmistovirheitä, mukaan lukien DS18B20, joka lähetti 185 Fahrenheit -lämpötilaa, näyttö ei käynnisty lainkaan kylmällä säällä ja pikselit jumittuvat väärään väriin, kun näyttö himmenee.

Käytä sitten yllä olevaa kuvaa varmistaaksesi, että teini -ikäiset asetukset vastaavat kuvaa. Huomasin, että teensyn ylikellotus 240 MHz: iin ei sallinut I2C OBD-II -sovittimen kommunikoida teini-ikäisen kanssa. Napsauta lopuksi vain lataa.

Kirjoitin melko laajoja kommentteja arduino -luonnostiedostoihin. Katso sieltä selitys ohjelmiston toiminnasta. Ota rohkeasti yhteyttä minuun, jos sinulla on kysyttävää. Yritän vastata niihin parhaani mukaan. Onnea!

Vaihe 6: 3D -tulostus LCD -koteloon

3D -tulostus LCD -kotelo
3D -tulostus LCD -kotelo
3D -tulostus LCD -kotelo
3D -tulostus LCD -kotelo
3D -tulostus LCD -kotelo
3D -tulostus LCD -kotelo

Tein 3D -tulostetun LCD -näytön ylä- ja alakannen suojaamaan 7 näyttöä. Olen liittänyt. IPT -keksijän osatiedostot sekä. STL -tiedostot.

Lisäsin myös osan nimeltä backup_sensor_ring.ipt, joka on rengas, joka sopii yllä linkittämieni varmuuskopiointianturien ympärille. Autossani oli jo valmiiksi porattuja vara-anturireikiä, jotka olivat liian suuria Amazonille ostamilleni vara-antureille, joten minun piti luoda rengas, joka sopisi varmuusantureihin. Jos aiot porata puskuriin mukana toimitetun pyöreän porakappaleen kanssa, et tarvitse tätä osaa.

Vaihe 7: OBD-II-portin jakaminen niin, että Arduinolla on virtaa vain auton ollessa käynnissä

OBD-II-portin jakaminen niin Arduinolla on virtaa vain auton ollessa käynnissä
OBD-II-portin jakaminen niin Arduinolla on virtaa vain auton ollessa käynnissä
OBD-II-portin jakaminen niin Arduinolla on virtaa vain auton ollessa käynnissä
OBD-II-portin jakaminen niin Arduinolla on virtaa vain auton ollessa käynnissä
OBD-II-portin jakaminen niin Arduinolla on virtaa vain auton ollessa käynnissä
OBD-II-portin jakaminen niin Arduinolla on virtaa vain auton ollessa käynnissä

Tajusin pian näytön asentamisen jälkeen, että näyttö oli aina päällä, vaikka auto olisi sammutettu. Tarkasteltaessa OBD-II-pistoketta huomasin, että 12 V: n virtajohto OBD-II-liittimeen on aina kytketty suoraan akkuun.

Tämän kiertämiseksi ostin OBD-II-jakajan, leikkasin johdon, joka menee nastaan 16 yhdestä jakajan kahdesta liittimestä, ja liitin sitten katkaistun johtimen piirijohtoon.

Sitten menin yleismittarillani kuljettajan puoleiseen sulakerasiaan ja testasin olemassa olevia sulakkeita nähdäkseni, mikä sulake sai virran avaimen kääntämisen jälkeen virtalukkoon.

Lopuksi liitin lisäpiirin johdon löytämääni sulakkeeseen niin, että näyttö syttyy vasta, kun autoni on käynnissä. Ole hyvä ja tutustu siihen, miten piiri lisätään oikein autoosi. Löysin tämän youtube -opetusohjelman hyväksi.

Suositeltava: