Turinys:
- 1 žingsnis: atsarginių jutiklių skaitymas
- 2 veiksmas: sukurkite bitų žemėlapio vaizdą ir įdėkite jį į „MicroSD“kortelę
- 3 žingsnis: Aparatūros prijungimas
- 4 žingsnis: RA8875 ekrano tvarkyklė ir grafinis dizainas
- 5 veiksmas: eskizo įkėlimas
- 6 žingsnis: 3D spausdinimas LCD dėkle
- 7 žingsnis: padalinkite OBD-II prievadą, kad „Arduino“turėtų galią tik tada, kai automobilis važiuoja
Video: „Arduino“automobilio ekranas: 7 žingsniai (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:47
Aš sukūriau integruotą diagnostikos (OBD-II) ekraną, naudodamas 7 colių TFT LCD ekraną iš „Adafruit“, „Teensy 3.6“, „Freematics OBD-II I2C“adapterį ir keletą „Amazon“rastų atsarginių jutiklių. Ekranas turi du puslapius: vienas, kai važiuoju „Honda Accord“, o kitas - kai važiuoja atbuline eiga.
Kai mano automobilis važiuoja, rodomi apsisukimų dažnis, MPH, variklio apkrovos procentas, akumuliatoriaus įtampa, salono temperatūra ir variklio aušinimo skysčio temperatūra (jei to nenorite, galima rodyti ir keletą kitų transporto priemonių statistinių duomenų).
Kai mano automobilis važiuoja atbuline eiga, su „Arduino IDE“suderinamas „Teensy 3.6“nuskaito animacinį mano automobilio, kurį radau internete, vaizdą, parodo jį ir nuskaito atsarginius jutiklius. Visi keturi jutikliai turi atstumą pėdomis ir animaciją už automobilio, kuri keičia spalvą pagal tai, kaip objektas yra arti automobilio (tik žalia reiškia <5 pėdų, žalia ir geltona reiškia <2,6 pėdos, o žalia - geltona, o raudona reiškia <1 pėda).
Galiausiai pridėjau galimybę pritemdyti ekraną naktį.
Galutinis rezultatas atrodo puikiai ir puikiai veikia mano automobilyje. Aš net baigiau jį įdiegti centrinėje konsolėje, o tai buvo visai kitas procesas, į kurį aš neįtrauksiu šioje instrukcijoje. Toliau pateikiamas dalių, kurias naudoju kurdamas šį LCD ekraną, sąrašas.
1) „Freematics OBD -II“adapteris - 35 USD
2) Atsarginiai jutikliai - 15 USD
3) 7 colių TFT LCD ekranas - 38 USD
4) SPI pagrįsta LCD ekrano tvarkyklė - 35 USD
5) „Teensy“3,6–30 USD
6) Lygio perjungiklis - 4 USD
7) 74HC125 Tri State Buffer IC -6 USD už 2 pakuotes (aš tikiu, kad šį apgaviką galite rasti kitur)
8) „MicroSD“kortelė> = 1 GB - 4 USD
9) Viela, kondensatoriai ir rezistoriai.
10) LP3470-2.93 „Power on Reset IC“- 2 USD
11) (neprivaloma): DS18B20 temperatūros jutiklis - 8 USD
12) (neprivaloma): „OBD -II Splitter“- 10 USD
13) (neprivaloma): pridėkite grandinės saugiklio laidą - 8 USD už 5 pakuotę
1 žingsnis: atsarginių jutiklių skaitymas
Šis žingsnis yra sudėtingas, nes šie atsarginiai jutikliai perduoda ryšį su siųstuvu -imtuvu, o po to - su mažu LCD ekranu, kaip parodyta aukščiau esančiame paveikslėlyje. Norėjau būdo atsikratyti jų rodymo ir naudoti savo. Pasitelkęs svetainę, kurią radau po tam tikro googlinimo (įsilaužimo į atvirkštinio parkavimo jutiklius), galėjau perskaityti patentuotą ryšio protokolą, kurį siųstuvas -imtuvas siunčia į LCD ekraną. Dėl tam tikrų priežasčių ryšio protokolas nėra tipiškas, pvz., I2C, UART, CAN, USB ir kt., O protokolas skiriasi priklausomai nuo tiekėjo. Aš labai rekomenduoju jums įsigyti aukščiau susietą rinkinį, jei ketinate naudoti mano kodą, nes jis buvo specialiai parašytas tiems jutikliams.
Prieš atjungdamas jų pateiktą LCD ekraną, ištyriau tris laidus, jungiančius siųstuvo -imtuvą ir LCD. Buvo +5 V raudona viela, įžeminta juoda viela ir mėlyna viela. Prijungęs osciloskopą prie mėlynos vielos ir žemės, pamačiau pėdsaką, panašų į aukščiau matytą paveikslėlį, bet ne tiksliai (naudojau paveikslėlį iš aukščiau esančios svetainės). Mano pėdsakas turėjo HIGH ilgesnės trukmės pradžios bitą, po kurio sekė dar 17 trumpesnės trukmės bitų. Bitai 0-5 po pradžios bito neturėjo naudingos informacijos. 6-8 bitai atitinka jutiklį A, B, C arba D. 9-16 bitai atitiko ilgį metrais. Įtraukiau „Arduino IDE“eskizą, kuriame nuskaitomi jutikliai ir išvedami duomenys per serijinę konsolę.
2 veiksmas: sukurkite bitų žemėlapio vaizdą ir įdėkite jį į „MicroSD“kortelę
Aš naudoju nemokamą nuotraukų redagavimo programinę įrangą, vadinamą GIMP, kad apkarpyčiau ir pakeisčiau savo automobilio vaizdą iš viršaus. Tada eksportavau vaizdą kaip 24 bitų bitmap atvaizdą, pavadintą „car.bmp“, kuris yra 110 pikselių ir 250 pikselių. Įkėliau tai į „microSD“kortelę ir įdėjau „microSD“kortelę į savo „Teensy 3.6“mikrovaldiklį.
Pagrindinės priežastys, kodėl aš pasirinkau „Teensy 3.6“, o ne „UNO“, buvo greitis, kuriuo „Teensy“galėjo nuskaityti SD kortelę ir rodyti vaizdą naudodami RA8875 ekrano tvarkyklę. Naudojant UNO, procesas užtruko apie 8 sekundes, o „Teensy 3.6“- 1,8 sekundės.
3 žingsnis: Aparatūros prijungimas
„Adafruit“turi tikrai gerai atrodantį 7 colių TFT skystųjų kristalų ekraną, kurį valdo IC, vadinamas RA8875. Šį ekraną ir ekrano tvarkyklę pasirinkau dėl dviejų priežasčių. Pirma, ekranui yra iš anksto parašytos plačios bibliotekos. Antra, ekrano tvarkyklė gali kalbėti bet koks mikrovaldiklis, viršijantis SPI, tai reiškia, kad nėra tiek daug laidų, jungiančių mikrovaldiklį su RA8875.
Yra du šios sąrankos trūkumai. Pirmiausia tai, kad „Adafruit“RA8875 plokštėje yra aparatūros klaida, reikalaujanti naudoti 74HC125 trijų būsenų buferinį IC, jei norite naudoti bet kurį SPI pagrįstą įrenginį, pvz., SD kortelę. Norėdami išsamiau suprasti aparatūros klaidą, perskaitykite šį forumą. Antra, palyginti ilgas laikas, per kurį vaizdai siunčiami į LCD. Be to, ilgas laiko tarpas, per kurį vaizdas siunčiamas į LCD, atsiranda dėl SPI jungties, kurią riboja mikrovaldiklių laikrodžio greitis ir didelis duomenų kiekis, kuris turi būti išsiųstas ekrano tvarkyklei labai mažai laidų.
Sukūriau „Fritzing“schemą, kad kiekvienas, norintis sukurti šį ekraną, galėtų lengvai perskaityti, prie ko prijungti „Teensy 3.6“kaiščiai. Žemiau įtraukiau.frz failą. Vieninteliai du nepažymėti komponentai yra kondensatoriai, kurie yra 1F 16V elektrolitinis kondensatorius ir 100μF keraminis kondensatorius. Įtraukiau juos, kad įsitikinčiau, jog „Teensy“mikrovaldiklio maitinimas yra pastovus DC +5 V ir ar jame nėra įtampos šuolių (gali būti, kad nebūtina, bet aš juos įtraukiau, nes automobilio įtampa gali greitai svyruoti priklausomai nuo akumuliatoriaus apkrovos).
Keletas dalykų, kuriuos reikia paminėti apie komponentus. Pirma, lygio perjungiklis priima bet kokį 5 V signalą ir paverčia jį 3,3 V „Teensy 3,6“saugia įtampa. Tai būtina OBD I2C adapteriui ir atsarginio jutiklio siųstuvui -imtuvui. Antra, paauglių I2C linijoms reikalingi 4,7 kΩ tempimo rezistoriai. Trečia, keturi rezistoriai, jungiantys „naktinį laidą“(pritemdantį laidą) ir „atsarginį įjungimo laidą“, yra būtini, kad tarnautų kaip įtampos skirstytuvas, kad 12–13 V signalai sumažėtų iki maždaug 2,5–3 V signalų.
ATNAUJINIMAS 7/22/18: Radau, kad OBD-I2C modulio vidinis temperatūros jutiklis pateikia labai keistus skaičius. Kartais tai pavykdavo, tačiau dažniausiai modulis rodydavo aukštesnę nei 400 laipsnių temperatūrą. Dėl šios priežasties nusprendžiau pridėti savo ds18b20 temperatūros jutiklį. Kviečiame čia naudoti bet kokio tipo temperatūros jutiklius, tačiau turėsite redaguoti „Arduino“kodą.
ATNAUJINTA 19.03.19: „Teensy 3.6“neprasideda, kai yra labai šalta. Pridėjau įjungimo iš naujo grandinę, kad įsitikinčiau, ar ji tinkamai įsijungia.
4 žingsnis: RA8875 ekrano tvarkyklė ir grafinis dizainas
RA8875 ekrano tvarkyklėje yra biblioteka, pavadinta „Adafruit_RA8875“, kurią panaudojau kurdama figūras, kurios matomos pirmame ir antrame puslapiuose. RA8875 biblioteka gali kurti tik linijas, stačiakampius, suapvalintus stačiakampius, trikampius, elipses ir apskritimus, todėl grafika turi būti sumaniai suprojektuota, kad būtų sukurtos sudėtingesnės formos. Pavyzdžiui, pilkas žiedas pirmame puslapyje iš tikrųjų yra pilkas didesnio skersmens apskritimas, po kurio eina visas juodas mažesnio skersmens apskritimas. Be to, vienoje mažoje atsarginio jutiklio puslapio dalyje yra 2 trikampiai, išdėstyti taip, kad jie sudarytų daugiakampį. Aš tai padariau, kad galėčiau pakeisti atskiros atsarginės jutiklio puslapio dalies spalvą. Ekrano „Arduino“faile yra daugybė taškų, kuriuos naudodavau sekdamas, kur buvo trikampiai ir kitos formos.
Aš naudoju šią puikią svetainę, norėdamas pasirinkti RGB565 spalvas ir apibrėžti jas eskize, kad galėčiau naudoti nenumatytas spalvas, jau iš anksto nustatytas „Adafruit_RA8875“bibliotekoje.
Kalbant apie šriftus, „Adafruit_RA8875“biblioteka palaiko tik vieną, nebent pakomentuojate bibliotekos skyrių, kuris leidžia naudoti „Adafruit_GFX“bibliotekos šriftus. Žemiau įtraukiau modifikuotą „Adafruit_RA8875“biblioteką. Aš ką tik pakomentavau kelias kodo eilutes ir galėjau naudoti „Adafruit_GFX“bibliotekos šriftus. Be to, norėdami naudoti 7 segmento šriftą, kurį naudoju šiame projekte, įsitikinkite, kad „FreeSevenSegNumFont.h“failas yra „Adafruit_GFX“bibliotekos šriftų aplanke.
5 veiksmas: eskizo įkėlimas
Norėdami įkelti eskizą į „Teensy 3.6“, turėsite įdiegti „Teensyduino“. Tada turėsite pakeisti „Adafruit_RA8875“ir „Adafruit_GFX“bibliotekas paauglių bibliotekos vietoje (o ne įprasta jūsų vieta dokumentuose). „Mac“sistemoje turėjau dešiniuoju pelės mygtuku spustelėti „Arduino“programos piktogramą programose ir tada pereiti į/Turinys/„Java“/aparatūra/teensy/avr/bibliotekos. „Windows“sistemoje esu visiškai tikras, kad jis yra po jūsų C disku programos failais x86, „Arduino“ir ten esančiame aparatūros aplanke. Kai tai padarysite, turėsite pakeisti eskizų knygelės vietą „Arduino“programoje, redaguodami ją nuostatose, kur yra jūsų paauglystės bibliotekos (t. Y. /Applications/Arduino.app/Contents/Java/hardware/teensy/avr).
ATNAUJINIMAS 7/22/16: Dėl vidinės temperatūros jutiklio problemos, apie kurią kalbėjau anksčiau, turėjau įdiegti DS18B20 modulio temperatūros jutiklį. Zip faile pamatysite 4 arduino eskizus. Įkelkite „display_code“eskizą, jei norite naudoti OBD-II I2C modulio vidinį temperatūros jutiklį. Jei norite naudoti aukščiau susietą DS18B20 modulį, įkelkite „display_code_with_new_temperature_sensor“eskizą.
ATNAUJINIMAS 11/17/17: Ištaisiau keletą programinės įrangos klaidų, įskaitant DS18B20, skleidžiančią 185 Fahrenheito temperatūrą, ekranas visai neįsijungia šaltu oru ir taškai įstringa netinkama spalva, kai ekranas yra pritemdytas.
Tada naudokite aukščiau pateiktą paveikslėlį, kad įsitikintumėte, jog paauglystės nustatymai atitinka paveikslėlį. Radau, kad „teensy“spartinimas iki 240 MHz neleido I2C OBD-II adapteriui bendrauti su paaugliu. Galiausiai tiesiog spustelėkite įkelti.
Aš parašiau gana išsamius komentarus arduino eskizų failuose. Čia rasite paaiškinimą, kaip veikia programinė įranga. Nedvejodami susisiekite su manimi bet kokiais klausimais. Stengsiuosi į juos atsakyti pagal išgales. Sėkmės!
6 žingsnis: 3D spausdinimas LCD dėkle
Aš sukūriau 3D spausdintą LCD viršutinį ir apatinį dangtelį, kad apsaugotų 7 colių ekraną. Pridėjau. IPT išradėjo dalių failus ir. STL failus.
Aš taip pat įtraukiau dalį, pavadintą backup_sensor_ring.ipt, tai yra žiedas, kuris tinka aplink tuos atsarginius jutiklius, kuriuos susiejau aukščiau. Mano automobilyje jau buvo iš anksto išgręžtos atsarginių jutiklių angos, kurios buvo per didelės atsarginėms jutikliams, kuriuos nusipirkau „Amazon“, todėl turėjau sukurti žiedą, kuris tilptų ant atsarginių jutiklių. Jei ketinate gręžti buferį su komplekte esančiu apskrito grąžto gabalu, šios dalies jums nereikės.
7 žingsnis: padalinkite OBD-II prievadą, kad „Arduino“turėtų galią tik tada, kai automobilis važiuoja
Netrukus po ekrano įdiegimo supratau, kad ekranas visada buvo įjungtas, net kai automobilis buvo išjungtas. Žvelgdamas į OBD-II kištuką pastebėjau, kad 12 V maitinimo linija prie OBD-II jungties visada yra tiesiogiai prijungta prie akumuliatoriaus.
Norėdami tai išspręsti, aš nusipirkau OBD-II skirstytuvą, perpjoviau vielą, einančią prie 16 kaiščio, vienoje iš dviejų skirstytuvo jungčių ir tada prijungiau tą nupjautą laidą prie grandinės laido.
Tada, naudodamas savo multimetrą, nuėjau prie vairuotojo pusės saugiklių dėžutės ir išbandžiau esamus saugiklius, norėdamas pamatyti, kuris saugiklis gavo maitinimą po to, kai raktas buvo įjungtas.
Galiausiai prijungiau grandinės laidą prie saugiklio, kurį radau, kad ekranas įsijungtų tik tada, kai mano automobilis važiuoja. Atlikite keletą tyrimų, kaip tinkamai pridėti grandinę prie savo automobilio. Man pasirodė, kad ši „YouTube“pamoka yra gera.
Rekomenduojamas:
STONE LCD ekranas automobilio prietaisų skydeliui: 5 žingsniai
STONE LCD ekranas automobilių prietaisų skydeliui: Sparčiai vystantis ekonomikai ir palaipsniui tobulėjant žmonių vartojimo galiai, automobiliai tapo kasdienėmis paprastų šeimų reikmėmis, ir visi daugiau dėmesio skiria automobilių patogumui ir saugumui. Automobilių pramonė
„Bluetooth“valdomas „Messenger“skystųjų kristalų ekranas -- 16x2 skystųjų kristalų ekranas -- Hc05 -- Paprasta -- Belaidžio ryšio skelbimų lenta: 8 žingsniai
„Bluetooth“valdomas „Messenger“skystųjų kristalų ekranas || 16x2 skystųjų kristalų ekranas || Hc05 || Paprasta || Belaidžio ryšio skelbimų lenta: …………………………. Prenumeruokite mano „YouTube“kanalą, kad gautumėte daugiau vaizdo įrašų …… ………………………………… Skelbimų lenta naudojama žmonėms atnaujinti nauja informacija arba jei norite išsiųsti pranešimą kambaryje arba po
„Arduino Halloween Edition“- „Zombies“iššokantis ekranas (žingsniai su nuotraukomis): 6 žingsniai
„Arduino Halloween Edition“- „Zombies“iššokantis ekranas (žingsniai su paveikslėliais): norite Helovino metu išgąsdinti savo draugus ir sukelti riksmą? O gal tiesiog norite padaryti gerą išdaigą? Šis iššokantis „Zombies“ekranas gali tai padaryti! Šioje instrukcijoje aš išmokysiu jus, kaip lengvai padaryti iššokančius zombius naudojant „Arduino“. HC-SR0
TTGO (spalvotas) ekranas su mikropitonu (TTGO T-ekranas): 6 žingsniai
TTGO (spalvotas) ekranas su „Micropython“(TTGO T-ekranas): „TTGO T-Display“yra plokštė, pagrįsta ESP32, kurioje yra 1,14 colio spalvotas ekranas. Lentą galima nusipirkti už mažesnį nei 7 USD prizą (įskaitant pristatymą, prizas matomas „banggood“). Tai neįtikėtinas prizas už ESP32, įskaitant ekraną. T
„FinduCar“: išmanusis automobilio raktas, vedantis žmones į automobilio stovėjimo vietą: 11 žingsnių (su nuotraukomis)
„FinduCar“: išmanusis automobilio raktas, vedantis žmones į stovėjimo vietą: Siekiant išspręsti aukščiau išvardytas problemas, šiame projekte siūloma sukurti išmanųjį automobilio raktą, kuris galėtų nukreipti žmones ten, kur jie pastatė automobilį. Ir mano planas yra integruoti GPS į automobilio raktą. Nereikia naudoti išmaniojo telefono programos sekti