Satura rādītājs:

Arduino automašīnas displejs: 7 soļi (ar attēliem)
Arduino automašīnas displejs: 7 soļi (ar attēliem)

Video: Arduino automašīnas displejs: 7 soļi (ar attēliem)

Video: Arduino automašīnas displejs: 7 soļi (ar attēliem)
Video: Es strādāju privātajā bagāto un slaveno muzejā. Šausmu stāsti. Šausmas. 2024, Jūlijs
Anonim
Image
Image
Arduino automašīnas displejs
Arduino automašīnas displejs
Arduino automašīnas displejs
Arduino automašīnas displejs

Es izveidoju displeju, kura pamatā ir diagnostika (OBD-II), izmantojot 7 collu TFT LCD no Adafruit, Teensy 3.6, Freematics OBD-II I2C adapteri un dažus atrašanas rezerves sensorus, kurus atradu vietnē Amazon. Displejam ir divas lapas: viens par to, kad mans Honda Accord brauc, un viens, kad tas ir atpakaļgaitā.

Kad mana automašīna brauc, tiek parādīti apgriezieni, MPH, motora slodzes procenti, akumulatora spriegums, salona temperatūra un motora dzesēšanas šķidruma temperatūra (ja to nevēlaties, var parādīt vairākus citus transportlīdzekļa statistikas datus).

Kad mana automašīna ir atpakaļgaitā, ar Arduino IDE saderīgais Teensy 3.6 nolasa tiešsaistē atrastās manas automašīnas animētu bitkartes attēlu, parāda to un pēc tam nolasa rezerves sensorus. Katram no četriem sensoriem ir attālums pēdās, kā arī animācija aiz automašīnas, kas maina krāsu atkarībā no tā, cik tuvu objekts atrodas automašīnai (tikai zaļš nozīmē <5 pēdas, zaļš un dzeltens nozīmē <2,6 pēdas un zaļš, dzeltens, un sarkans nozīmē <1 pēda).

Visbeidzot, es pievienoju iespēju aptumšot displeju naktī.

Gala rezultāts izskatās lieliski un ļoti labi darbojas manā automašīnā. Es pat instalēju to centrālajā konsolē, kas bija pavisam cits process, kurā es neiedziļināšos šajā pamācībā. Daļu saraksts, ko izmantoju, veidojot šo LCD displeju, ir norādīts zemāk.

1) Freematics OBD -II adapteris - 35 ASV dolāri

2) Rezerves sensori - 15 ASV dolāri

3) 7 collu TFT LCD displejs - 38 USD

4) Uz SPI balstīts LCD displeja draiveris - 35 USD

5) Teensy 3,6 - 30 ASV dolāri

6) Līmeņu pārslēdzējs - 4 ASV dolāri

7) 74HC125 Tri State Buffer IC -6 ASV dolāri par 2 iepakojumiem (es esmu pārliecināts, ka jūs varētu atrast šo aplauzēju citur)

8) MicroSD karte> = 1 GB - 4 ASV dolāri

9) vadi, kondensatori un rezistori.

10) LP3470-2.93 Ieslēgšanas atiestatīšanas IC - 2 ASV dolāri

11) (pēc izvēles): DS18B20 temperatūras sensors - 8 ASV dolāri

12) (pēc izvēles): OBD -II sadalītājs - 10 ASV dolāri

13) (pēc izvēles): pievienojiet ķēdes drošinātāja vadu - 8 ASV dolāri par 5 iepakojumiem

1. darbība. Dublēšanas sensoru lasīšana

Dublēšanas sensoru lasīšana
Dublēšanas sensoru lasīšana
Dublēšanas sensoru lasīšana
Dublēšanas sensoru lasīšana
Dublēšanas sensoru lasīšana
Dublēšanas sensoru lasīšana
Dublēšanas sensoru lasīšana
Dublēšanas sensoru lasīšana

Šis solis ir sarežģīts, jo šie rezerves sensori sazinās ar raiduztvērēju un pēc tam ar nelielu LCD, kā redzams attēlā iepriekš. Es gribēju veidu, kā atbrīvoties no to displeja un izmantot savu. Ar tīmekļa vietnes palīdzību, ko atradu pēc nelielas googlēšanas (uzlaušanas atpakaļgaitas parkošanās sensori), es varēju izlasīt patentēto sakaru protokolu, ko raiduztvērējs sūta uz LCD ekrānu. Kādu iemeslu dēļ sakaru protokols nav tipisks, piemēram, I2C, UART, CAN, USB utt., Un protokols atšķiras atkarībā no piegādātāja. Es ļoti iesaku jums iegādāties iepriekš saistīto komplektu, ja izmantosit manu kodu, jo tas bija īpaši rakstīts šiem sensoriem.

Pirms atvienoju LCD, ko es nodrošināju, es pārbaudīju trīs vadus, kas savieno raiduztvērēju un LCD. Bija +5V sarkans vads, melns zemēts vads un zils vads. Pēc osciloskopa pievienošanas zilajam vadam un zemei es redzēju pēdas, kas līdzīgas iepriekš redzamajam attēlam, bet ne gluži (es izmantoju attēlu no iepriekš minētās vietnes). Manai izsekošanai bija HIGH garāks sākuma bits, kam sekoja vēl 17 īsāka ilguma biti. Bitiem 0-5 pēc sākuma bita nebija noderīgas informācijas. Biti 6-8 atbilst sensoram A, B, C vai D. Bits 9-16 atbilda garumam metros. Es iekļāvu Arduino IDE skici, kas nolasa sensorus un izvada datus, izmantojot seriālo konsoli.

2. darbība. Bitkartes attēla izveide un ievietošana MicroSD kartē

Bitkartes attēla izveidošana un ievietošana MicroSD kartē
Bitkartes attēla izveidošana un ievietošana MicroSD kartē
Bitkartes attēla izveidošana un ievietošana MicroSD kartē
Bitkartes attēla izveidošana un ievietošana MicroSD kartē

Es izmantoju bezmaksas fotoattēlu rediģēšanas programmatūru ar nosaukumu GIMP, lai apgrieztu un mainītu automašīnas attēla izmēru no augšējā skata. Pēc tam es eksportēju attēlu kā 24 bitu bitkartes attēlu ar nosaukumu "car.bmp", kas ir 110 pikseļi un 250 pikseļi. Es to augšupielādēju microSD kartē un ievietoju microSD karti savā Teensy 3.6 mikrokontrollerī.

Galvenie iemesli, kādēļ es izvēlējos Teensy 3.6, nevis UNO, bija ātrums, ar kādu Teensy varēja nolasīt SD karti un parādīt attēlu, izmantojot RA8875 displeja draiveri. Izmantojot UNO, process aizņēma apmēram 8 sekundes, bet Teensy 3.6 - 1,8 sekundes.

3. darbība: aparatūras pievienošana

Aparatūras savienošana
Aparatūras savienošana

Adafruit ir patiešām izskatīgs 7 collu TFT LCD, ko vada IC ar nosaukumu RA8875. Es izvēlējos šo displeja un displeja draiveri divu iemeslu dēļ. Pirmkārt, displejam ir iepriekš uzrakstītas plašas bibliotēkas. Otrkārt, displeja draiveris var sarunāties ar jebkurš mikrokontrolleris virs SPI, kas nozīmē, ka nav tik daudz vadu, kas savieno mikrokontrolleru ar RA8875.

Šai iestatīšanai ir divi trūkumi. Pirmkārt, ir fakts, ka ar Adafruit RA8875 plati ir aparatūras kļūda, kas prasa izmantot 74HC125 trīsstāvu bufera IC, ja vēlaties izmantot jebkuru ierīci, kuras pamatā ir SPI, piemēram, SD karti. Lai pilnīgāk izprastu aparatūras kļūdu, lūdzu, izlasiet šo forumu. Otrkārt, ir salīdzinoši ilgs laiks, kas nepieciešams attēlu nosūtīšanai uz LCD. Turklāt ilgs laiks, kas nepieciešams attēla nosūtīšanai uz LCD, ir saistīts ar SPI savienojumu, ko ierobežo mikrokontrolleru pulksteņa ātrums un lielais datu apjoms, kas jānosūta displeja draiverim. ļoti maz vadu.

Es izveidoju Fritzing shēmu, lai ikviens, kas vēlētos izveidot šo displeju, varētu viegli izlasīt, ar ko ir savienotas Teensy 3.6 tapas. Zemāk es iekļāvu.frz failu. Vienīgās divas sastāvdaļas, kas nav marķētas, ir kondensatori, kas ir 1F 16V elektrolītiskais kondensators un 100μF keramikas kondensators. Es tos iekļāvu, lai pārliecinātos, ka Teensy mikrokontrollera barošana ir vienmērīga līdzstrāvas +5 V un nesatur nevienu sprieguma lēcienu (iespējams, nav nepieciešams, bet es tos iekļāvu, jo automašīnas sprieguma padeve var ātri svārstīties atkarībā no akumulatora slodzes).

Dažas lietas, kas jāpiemin par sastāvdaļām. Pirmkārt, līmeņa pārslēdzējs uzņem jebkuru 5 V signālu un pārvērš to par 3,3 V Teensy 3,6 drošu spriegumu. Tas ir nepieciešams OBD I2C adapterim, kā arī rezerves sensora uztvērējam. Otrkārt, pusaudža I2C līnijām nepieciešami 4,7 kΩ uzvilkšanas rezistori. Treškārt, četri rezistori, kas savieno "nakts laika vadu" (aptumšojošo vadu) un "rezerves ieslēgšanas vadu", ir nepieciešami, lai kalpotu kā sprieguma dalītājs, lai samazinātu 12V-13V signālus līdz aptuveni 2,5-3V signāliem.

UPDATE 22.07.18. Es atklāju, ka OBD-I2C moduļa iekšējais temperatūras sensors izvada ļoti dīvainus skaitļus. Dažreiz tas darbotos, taču lielākoties modulis izvadīja temperatūru virs 400 grādiem F. Tāpēc es nolēmu pievienot savu temperatūras sensoru ds18b20. Jūs esat laipni aicināti šeit izmantot jebkura veida temperatūras sensorus, taču jums būs jārediģē Arduino kods.

ATJAUNINĀT 01.03.19: Teensy 3.6 nesākas, kad ir ārkārtīgi auksts. Es pievienoju ieslēgšanas ķēdi, lai pārliecinātos, ka tā tiek pareizi palaista.

4. darbība: RA8875 displeja draiveris un grafiskais dizains

RA8875 displeja draiveris un grafiskais dizains
RA8875 displeja draiveris un grafiskais dizains

RA8875 displeja draiverim ir bibliotēka ar nosaukumu Adafruit_RA8875, kuru es izmantoju, veidojot pirmās un otrās lapas formas. RA8875 bibliotēka var izveidot tikai līnijas, taisnstūrus, noapaļotus taisnstūrus, trīsstūrus, elipses un apļus, tāpēc grafika ir jāizveido gudrā veidā, lai izveidotu sarežģītākas formas. Piemēram, pelēkais gredzens pirmajā lapā faktiski ir pilns pelēks aplis ar lielāku diametru, kam seko pilns melns aplis ar mazāku diametru. Turklāt vienā nelielā rezerves sensora lapas sadaļā ir 2 trīsstūri, kas sakārtoti tā, lai tie veidotu daudzstūra formu. Es to darīju, lai varētu mainīt rezerves sensora lapas atsevišķas sadaļas krāsu. Displeja Arduino failā ir virkne punktu, kurus es izmantoju, lai izsekotu, kur atrodas trīsstūri un citas formas.

Es izmantoju šo lielisko vietni, lai izvēlētos RGB565 krāsas un definētu tās skicē, lai varētu izmantot noklusējuma krāsas, kas jau ir iepriekš definētas Adafruit_RA8875 bibliotēkā.

Runājot par fontiem, Adafruit_RA8875 bibliotēka atbalsta tikai vienu, ja vien jūs nekomentējat kādu bibliotēkas sadaļu, kas ļauj izmantot fontus Adafruit_GFX bibliotēkā. Tālāk es iekļāvu modificēto Adafruit_RA8875 bibliotēku. Es tikko komentēju dažas koda rindiņas un pēc tam varēju izmantot fontus Adafruit_GFX bibliotēkā. Turklāt, lai izmantotu 7 segmenta fontu, ko izmantoju šajā projektā, lūdzu, pārliecinieties, vai "FreeSevenSegNumFont.h" fails atrodas Adafruit_GFX bibliotēkas fontu mapē.

5. darbība: skices augšupielāde

Notiek skices augšupielāde
Notiek skices augšupielāde
Notiek skices augšupielāde
Notiek skices augšupielāde

Lai augšupielādētu skici uz Teensy 3.6, jums būs jāinstalē Teensyduino. Tad jums būs jāaizstāj bibliotēkas Adafruit_RA8875 un Adafruit_GFX pusaudžu bibliotēkas atrašanās vietā (nevis jūsu tipiskā atrašanās vieta dokumentos). Operētājsistēmā Mac man vajadzēja ar peles labo pogu noklikšķināt uz lietojumprogrammas Arduino ikonas lietojumprogrammās un pēc tam doties uz/Saturs/Java/aparatūra/teensy/avr/bibliotēkas. Operētājsistēmā Windows esmu diezgan pārliecināts, ka tas atrodas zem jūsu C diska programmas failos x86, Arduino un pēc tam tur esošajā aparatūras mapē. Kad esat to izdarījis, jums būs jāmaina skiču burtnīcas atrašanās vieta lietojumprogrammā Arduino, rediģējot to preferencēs uz to, kur kādreiz atrodas jūsu pusaudža vecuma bibliotēkas (ti, /Applications/Arduino.app/Contents/Java/hardware/teensy/avr).

22.07.2016. ATJAUNINĀT: Iepriekš minētās iekšējās temperatūras sensora problēmas dēļ man bija jāuzstāda DS18B20 moduļa temperatūras sensors. Zip failā redzēsit 4 arduino skices. Lūdzu, augšupielādējiet skices display_code, ja vēlaties izmantot OBD-II I2C moduļa iekšējo temperatūras sensoru. Lūdzu, augšupielādējiet display_code_with_new_temperature_sensor skici, ja vēlaties izmantot iepriekš saistīto DS18B20 moduli.

ATJAUNINĀŠANA 17.11.17.: Es novērsu vairākas programmatūras kļūdas, tostarp DS18B20, kas izvada 185 Fārenheita temperatūru, aukstā laikā displejs vispār neieslēdzas un pikseļi iestrēdz nepareizā krāsā, kad displejs ir aptumšots.

Pēc tam izmantojiet iepriekš redzamo attēlu, lai pārliecinātos, ka jūsu pusaudža vecuma iestatījumi atbilst attēlam. Es atklāju, ka teensy pārsniegšana līdz 240 MHz neļāva I2C OBD-II adapterim sazināties ar tīņu. Visbeidzot, vienkārši noklikšķiniet uz augšupielādēt.

Es rakstīju diezgan plašus komentārus arduino skiču failos. Lūdzu, meklējiet tur skaidrojumu par programmatūras darbību. Lūdzu, nekautrējieties sazināties ar mani, ja rodas kādi jautājumi. Es centīšos uz tiem atbildēt pēc iespējas labāk. Veiksmi!

6. darbība: 3D drukājiet LCD korpusu

3D drukāt LCD korpusu
3D drukāt LCD korpusu
3D drukāt LCD korpusu
3D drukāt LCD korpusu
3D drukāt LCD korpusu
3D drukāt LCD korpusu

Es izveidoju 3D drukātu LCD augšējo un apakšējo vāku, lai aizsargātu 7 collu displeju. Esmu pievienojis. IPT izgudrotāja daļu failus, kā arī. STL failus.

Es iekļāvu arī daļu ar nosaukumu backup_sensor_ring.ipt, kas ir gredzens, kas ir piemērots tiem rezerves sensoriem, kurus es saistīju iepriekš. Manā automašīnā jau bija iepriekš izurbti rezerves sensoru caurumi, kas bija pārāk lieli Amazon nopirktajiem rezerves sensoriem, tāpēc man bija jāizveido gredzens, kas iederētos rezerves sensoros. Ja jūs plānojat urbt buferī ar komplektā iekļauto apaļo urbi, šī daļa jums nebūs nepieciešama.

7. solis: OBD-II porta sadalīšana, lai Arduino būtu spēks tikai tad, kad automašīna darbojas

Sadalot OBD-II portu, Arduino ir spēks tikai tad, kad automašīna darbojas
Sadalot OBD-II portu, Arduino ir spēks tikai tad, kad automašīna darbojas
Sadalot OBD-II portu, Arduino ir spēks tikai tad, kad automašīna darbojas
Sadalot OBD-II portu, Arduino ir spēks tikai tad, kad automašīna darbojas
Sadalot OBD-II portu, Arduino ir spēks tikai tad, kad automašīna darbojas
Sadalot OBD-II portu, Arduino ir spēks tikai tad, kad automašīna darbojas

Drīz pēc displeja instalēšanas es sapratu, ka displejs vienmēr ir ieslēgts, pat ja automašīna bija izslēgta. Ieskatoties OBD-II kontaktligzdā, es atklāju, ka 12 V strāvas līnija līdz OBD-II savienotājam vienmēr ir tieši savienota ar akumulatoru.

Lai to apietu, es iegādājos OBD-II sadalītāju, vienā no diviem sadalītāja savienotājiem nogriezu vadu, kas iet uz 16. tapu, un pēc tam pievienoju šo sagriezto vadu ķēdes vadam.

Pēc tam, izmantojot savu multimetru, es piegāju pie vadītāja puses drošinātāju kārbas un pārbaudīju esošos drošinātājus, lai noskaidrotu, kurš drošinātājs saņēma enerģiju pēc atslēgas ieslēgšanas aizdedzē.

Visbeidzot, es pievienoju ķēdes pievienošanas vadu manam drošinātājam, lai displejs tagad ieslēgtos tikai tad, kad mana automašīna darbojas. Lūdzu, izpētiet, kā pareizi pievienot ķēdi automašīnai. Es atklāju, ka šī youtube apmācība ir laba.

Ieteicams: