Përmbajtje:

Ekrani i makinës Arduino: 7 hapa (me fotografi)
Ekrani i makinës Arduino: 7 hapa (me fotografi)

Video: Ekrani i makinës Arduino: 7 hapa (me fotografi)

Video: Ekrani i makinës Arduino: 7 hapa (me fotografi)
Video: Infrared Obstacle Avoidance module for Arduino with code 2024, Korrik
Anonim
Image
Image
Shfaqja e makinave Arduino
Shfaqja e makinave Arduino
Shfaqja e makinave Arduino
Shfaqja e makinave Arduino

Ndërtova një ekran të bazuar në diagnostifikim në bord (OBD-II) duke përdorur një LCD TFT 7 nga Adafruit, një Teensy 3.6, Përshtatësin Freematics OBD-II I2C dhe disa sensorë rezervë të shpejtë që gjeta në Amazon. Ekrani ka dy faqe: një për kur Honda Accord im është në makinë dhe një për kur është në të kundërt.

Kur makina ime është në lëvizje, RPM, MPH, përqindja e ngarkesës së motorit, tensioni i baterisë, temperatura e kabinës dhe temperatura e ftohësit të motorit shfaqen (ka disa statistika të tjera të automjeteve në dispozicion për t'u shfaqur nëse dikush nuk i dëshiron këto).

Kur makina ime është në të kundërt, Teensy 3.6 i pajtueshëm me Arduino IDE lexon një imazh të animuar bitmap të makinës sime që gjeta në internet, e shfaq atë dhe pastaj lexon sensorët rezervë. Katër sensorët kanë distancën e tyre në këmbë plus një animacion pas makinës që ndryshon ngjyrën bazuar në atë se sa afër është objekti me makinën (vetëm jeshile do të thotë <5 këmbë, jeshile dhe e verdhë do të thotë <2.6 këmbë, dhe jeshile, e verdhë, dhe e kuqe do të thotë <1 këmbë).

Më në fund, shtova aftësinë për të zbehur ekranin gjatë natës.

Rezultati përfundimtar duket i shkëlqyeshëm dhe funksionon shumë mirë në makinën time. Unë madje përfundova duke e instaluar atë në tastierën qendrore, i cili ishte një proces krejtësisht tjetër në të cilin nuk do të futem në këtë udhëzues. Lista e pjesëve që kam përdorur për të krijuar këtë ekran LCD janë më poshtë.

1) Përshtatës Freematics OBD -II - 35 dollarë

2) Sensorë rezervë - 15 dollarë

3) Ekran LCD 7 TFT - 38 dollarë

4) Drejtuesi i ekranit LCD të bazuar në SPI - 35 dollarë

5) Teensy 3.6 - 30 dollarë

6) Ndërruesi i nivelit - 4 dollarë

7) IC 74HC125 Tri State Buffer -6 dollarë për 2 pako (jam i sigurt që mund ta gjeni këtë pastrues diku tjetër)

8) Kartë MicroSD> = 1 GB - 4 dollarë

9) Tela, kondensatorë dhe rezistorë.

10) LP3470-2.93 Fuqizimi i Reset IC - 2 dollarë

11) (opsionale): Sensori i temperaturës DS18B20 - 8 dollarë

12) (opsionale): OBD -II Splitter - 10 dollarë

13) (opsionale): Shtoni një kordon siguresash qark - 8 dollarë për paketën prej 5

Hapi 1: Leximi i sensorëve rezervë

Leximi i sensorëve rezervë
Leximi i sensorëve rezervë
Leximi i sensorëve rezervë
Leximi i sensorëve rezervë
Leximi i sensorëve rezervë
Leximi i sensorëve rezervë
Leximi i sensorëve rezervë
Leximi i sensorëve rezervë

Ky hap është i ndërlikuar sepse këta sensorë rezervë komunikojnë me një marrës dhe më pas me një LCD të vogël siç shihet në foton e mësipërme. Doja një mënyrë për të hequr qafe shfaqjen e tyre dhe për të përdorur timen. Me ndihmën e një faqe në internet që gjeta pas një kërkimi në Google (Hacking sensorët e parkimit të kundërt), unë isha në gjendje të lexoja protokollin e pronësisë së komunikimit që transmetuesi dërgon në ekranin LCD. Për disa arsye, protokolli i komunikimit nuk është një tipik siç janë I2C, UART, CAN, USB, etj. Dhe protokolli ndryshon në varësi të furnizuesit. Unë rekomandoj shumë që të blini grupin që lidha më sipër nëse do të përdorni kodin tim sepse është shkruar posaçërisht për ata sensorë.

Para se të shkëputja LCD -në që ata siguruan, unë hetova tre telat që bashkohen me marrësin dhe LCD -në. Kishte +5V tela të kuq, tel të zi të bluar dhe një tel blu. Pasi e lidha oshiloskopin tim me telin blu dhe tokën, pashë një gjurmë të ngjashme me figurën e parë më sipër, por jo saktësisht (kam përdorur fotografinë nga faqja e internetit e lidhur më sipër). Gjurma ime kishte një bit fillestar me kohëzgjatje më të lartë, i ndjekur nga 17 bit më shumë të shkurtër. Bitet 0-5 pas bitit të fillimit nuk kishin informacion të dobishëm. Bitet 6-8 korrespondojnë me sensorin A, B, C, ose D. Bitet 9-16 korrespondonin me gjatësinë në metra. Kam përfshirë një skicë Arduino IDE që lexon sensorët dhe nxjerr të dhënat mbi tastierën serike.

Hapi 2: Krijimi i imazhit Bitmap dhe vendosja e tij në një kartë MicroSD

Krijimi i imazhit Bitmap dhe vendosja e tij në një kartë MicroSD
Krijimi i imazhit Bitmap dhe vendosja e tij në një kartë MicroSD
Krijimi i imazhit Bitmap dhe vendosja e tij në një kartë MicroSD
Krijimi i imazhit Bitmap dhe vendosja e tij në një kartë MicroSD

Kam përdorur një softuer falas për redaktimin e fotografive të quajtur GIMP për të prerë dhe ndryshuar madhësinë e një imazhi të makinës sime nga pamja e sipërme. Më pas e eksportova imazhin si një imazh bitmap 24 bit i quajtur "car.bmp" që është 110 piksele me 250 piksele. E ngarkova këtë në një kartë microSD dhe e vendosa kartën microSD në mikrokontrolluesin tim Teensy 3.6.

Arsyet kryesore që shkova me Teensy 3.6 në vend të një UNO ishte shpejtësia me të cilën Teensy mund të lexonte një kartë SD dhe të shfaqte imazhin duke përdorur drejtuesin e ekranit RA8875. Duke përdorur një UNO, procesi zgjati rreth 8 sekonda, ndërsa një Teensy 3.6 zgjati 1.8 sekonda.

Hapi 3: Lidhja e harduerit

Lidhja e harduerit
Lidhja e harduerit

Adafruit ka një ekran TFT LCD 7 me pamje shumë të mirë që drejtohet nga një IC i quajtur RA8875. Zgjodha këtë drejtues të ekranit dhe ekranit për dy arsye. Së pari, ka biblioteka të gjera të parashkruara për ekranin. Së dyti, drejtuesi i ekranit mund të flasë çdo mikrokontrollues mbi SPI, që do të thotë se nuk ka shumë tela që lidhin mikrokontrolluesin me RA8875.

Ekzistojnë dy anë negative të këtij konfigurimi. Së pari është fakti se ekziston një gabim harduerik me bordin RA8875 nga Adafruit që kërkon përdorimin e tamponit 74HC125 tampon IC nëse dëshironi të përdorni ndonjë pajisje të bazuar në SPI siç është një kartë SD. Për të kuptuar më plotësisht gabimin e harduerit, ju lutemi lexoni forumin e mëposhtëm. Së dyti, është koha relativisht e gjatë që duhet që imazhet të dërgohen në LCD. Gjithashtu, koha e gjatë që duhet për dërgimin e një imazhi në LCD është për shkak të lidhjes SPI, e cila është e kufizuar nga shpejtësia e orës së mikronkontrollorëve dhe sasia e madhe e të dhënave që duhet t'i dërgohen drejtuesit të ekranit gjatë shumë pak tela.

Unë krijova një skemë Fritzing në mënyrë që kushdo që dëshiron të krijojë këtë ekran mund të lexojë me lehtësi atë me të cilën lidhen kunjat në Teensy 3.6. Kam përfshirë një skedar.frz më poshtë. Dy përbërësit e vetëm që nuk janë etiketuar janë kondensatorët, të cilët janë një kondensator elektrolitik 1F 16V dhe një kondensator qeramik 100μF. I përfshiva këto për t'u siguruar që fuqia e mikrokontrolluesit Teensy ishte e qëndrueshme DC +5V dhe nuk përmbante asnjë rritje të tensionit (mund të mos jetë e nevojshme, por i përfshiva ato sepse furnizimi me tension i makinës mund të luhatet shpejt në varësi të ngarkesës në bateri).

Disa gjëra për të përmendur në lidhje me përbërësit. Së pari, ndërruesi i nivelit merr çdo sinjal 5V dhe e kthen atë në një tension të sigurt 3.3V Teensy 3.6. Kjo është e nevojshme për përshtatësin OBD I2C, si dhe marrësin e sensorit rezervë. Së dyti, linjat I2C të adoleshentëve kërkojnë rezistencë tërheqëse 4.7kΩ. Së treti, katër rezistencat që lidhin "telin e natës" (telin e zbehjes) dhe "telin e angazhimit rezervë" janë të nevojshëm për të shërbyer si një ndarës i tensionit për të ulur sinjalet 12V-13V në rreth 2.5-3V sinjale.

PPRDITSIM 7/22/18: Kam gjetur se sensori i temperaturës së brendshme të modulit OBD-I2C po nxjerr numra shumë të çuditshëm. Ndonjëherë do të funksiononte, por shumicën e kohës, moduli po nxirrte temperatura mbi 400 gradë F. Për shkak të kësaj, vendosa të shtoj sensorin tim të temperaturës ds18b20. Ju jeni më se të mirëpritur të përdorni çdo lloj sensori të temperaturës këtu, por do t'ju duhet të redaktoni kodin Arduino.

PPRDITSIM 3/1/19: Adoleshenca 3.6 nuk fillon kur është jashtëzakonisht ftohtë. Unë shtova një qark të rivendosjes së energjisë për t'u siguruar që të fillojë siç duhet.

Hapi 4: Drejtuesi i ekranit RA8875 dhe Dizajni Grafik

RA8875 Shoferi i Shfaqjes dhe Dizajni Grafik
RA8875 Shoferi i Shfaqjes dhe Dizajni Grafik

Drejtuesi i ekranit RA8875 ka një bibliotekë të quajtur Adafruit_RA8875, të cilën e shfrytëzova kur krijoja format që shihen në faqen e parë dhe faqen e dytë. Biblioteka për RA8875 mund të krijojë vetëm linja, drejtkëndësha, drejtkëndësha të rrumbullakosura, trekëndësha, elipsa dhe qarqe, kështu që grafika duhet të dizajnohet në një mënyrë të zgjuar për të krijuar forma më komplekse. Për shembull, unaza gri në faqen e parë është në fakt një rreth i plotë gri me një diametër më të madh i ndjekur nga një rreth i plotë i zi me një diametër më të vogël. Gjithashtu, një pjesë e vogël e faqes së sensorit rezervë përmban 2 trekëndësha të rregulluar në atë mënyrë që të bëjnë një formë poligoni. Unë e bëra këtë në mënyrë që të mund të ndryshoja ngjyrën e një pjese individuale të faqes së sensorit rezervë. Skedari Arduino për ekranin përmban një sërë pikash që kam përdorur për të mbajtur gjurmët se ku ishin trekëndëshat dhe format e tjera.

Kam përdorur këtë faqe interneti të mrekullueshme për të zgjedhur ngjyrat RGB565 dhe për t'i përcaktuar ato në skicë, në mënyrë që të mund të përdor ngjyra jo të paracaktuara tashmë të paracaktuara në bibliotekën Adafruit_RA8875.

Për sa i përket shkronjave, biblioteka Adafruit_RA8875 mbështet vetëm një nëse nuk komentoni një pjesë të bibliotekës, e cila ju lejon të përdorni fontet e bibliotekës Adafruit_GFX. Kam përfshirë bibliotekën e modifikuar Adafruit_RA8875 më poshtë. Sapo komentova disa rreshta të kodit dhe më pas isha në gjendje të përdorja fontet në bibliotekën Adafruit_GFX. Gjithashtu, për të përdorur fontin e segmentit 7 që kam përdorur në këtë projekt, ju lutemi sigurohuni që skedari "FreeSevenSegNumFont.h" që jam në dosjen e shkronjave në bibliotekën Adafruit_GFX.

Hapi 5: Ngarkimi i Skicës

Ngarkimi i Skicës
Ngarkimi i Skicës
Ngarkimi i Skicës
Ngarkimi i Skicës

Për të ngarkuar skicën në Teensy 3.6, do t'ju duhet të instaloni Teensyduino. Atëherë do të duhet të zëvendësoni bibliotekat Adafruit_RA8875 dhe Adafruit_GFX në bibliotekën e adoleshencës (jo vendndodhja juaj tipike në dokumente). Në Mac, më duhej të klikoja me të djathtën në ikonën e aplikacionit Arduino në aplikacione, dhe pastaj të lundroja te/Contents/Java/hardware/teensy/avr/libraries. Në dritare, jam shumë i sigurt se është nën diskun tuaj C në skedarët e programit x86, Arduino, dhe më pas dosjen e harduerit atje. Pasi ta bëni këtë, do t'ju duhet të ndryshoni vendndodhjen e skicës në aplikacionin Arduino duke e redaktuar atë sipas preferencave kudo që janë bibliotekat tuaja adoleshente (d.m.th./Aplikimet/Arduino.app/Contents/Java/hardware/teensy/avr).

PPRDITSIM 7/22/16: Për shkak të problemit të sensorit të brendshëm të temperaturës për të cilin fola më herët, më duhej të instaloja një sensor të temperaturës së modulit DS18B20. Do të shihni 4 skica arduino në skedarin zip. Ju lutemi ngarkoni skicën e ekranit_kod nëse dëshironi të përdorni sensorin e temperaturës së brendshme të modulit OBD-II I2C. Ju lutemi ngarkoni skicën display_code_with_new_temperature_sensor nëse doni të përdorni modulin DS18B20 që kam lidhur më sipër.

PPRDITSIM 11/17/17: Rregullova disa gabime në softuer duke përfshirë DS18B20 që nxirrte një temperaturë prej 185 gradë Fahrenheit, ekrani nuk ndizet fare në mot të ftohtë dhe pikselët mbërthehen në ngjyrën e gabuar kur ekrani është zbehur.

Pastaj, përdorni foton që kam më lart për t'u siguruar që cilësimet tuaja adoleshente përputhen me figurën. Kam gjetur se mbingarkimi i adoleshencës në 240MHz nuk lejonte që përshtatësi I2C OBD-II të komunikonte me adoleshentin. Së fundi, thjesht klikoni ngarkimin.

Kam shkruar komente mjaft të gjera në skedarët e skicës arduino. Ju lutemi shikoni atje për një shpjegim se si funksionon softueri. Ju lutem mos ngurroni të më kontaktoni për çdo pyetje. Do të përpiqem t'u përgjigjem atyre në maksimum. Paç fat!

Hapi 6: Shtypni 3D një rast LCD

Shtypni 3D një kuti LCD
Shtypni 3D një kuti LCD
Shtypni 3D një kuti LCD
Shtypni 3D një kuti LCD
Shtypni 3D një kuti LCD
Shtypni 3D një kuti LCD

Kam krijuar një kapak LCD të printuar 3D të sipërm dhe të poshtëm për të mbrojtur ekranin 7 . Unë kam bashkangjitur skedarët e pjesës së shpikës. IPT, si dhe skedarët. STL.

Unë gjithashtu përfshiva një pjesë të quajtur backup_sensor_ring.ipt, e cila është një unazë që përshtatet rreth atyre sensorëve rezervë që lidha më sipër. Makina ime tashmë kishte vrima të sensorëve rezervë të shpuar paraprakisht që ishin shumë të mëdhenj për sensorët rezervë që bleva në Amazon, kështu që më duhej të krijoja një unazë që do të përshtatej në sensorët rezervë. Nëse do të stërviteni në parakolpin tuaj me pjesën e përfshirë të stërvitjes rrethore në grup, nuk do t'ju duhet kjo pjesë.

Hapi 7: Ndarja e Portit OBD-II Kështu Arduino ka fuqi vetëm kur makina po funksionon

Ndarja e Portit OBD-II Kështu Arduino ka fuqi vetëm kur makina po funksionon
Ndarja e Portit OBD-II Kështu Arduino ka fuqi vetëm kur makina po funksionon
Ndarja e Portit OBD-II Kështu Arduino ka fuqi vetëm kur makina po funksionon
Ndarja e Portit OBD-II Kështu Arduino ka fuqi vetëm kur makina po funksionon
Ndarja e Portit OBD-II Kështu Arduino ka fuqi vetëm kur makina po funksionon
Ndarja e Portit OBD-II Kështu Arduino ka fuqi vetëm kur makina po funksionon

E kuptova menjëherë pas instalimit të ekranit tim se ekrani ishte gjithmonë i ndezur, edhe kur makina ishte e fikur. Duke parë drejtimin e OBD-II, zbulova se linja e energjisë 12V në lidhësin OBD-II është gjithmonë e lidhur drejtpërdrejt me baterinë.

Për ta zgjidhur këtë, bleva një ndarës OBD-II, preva tela që do të fiksohet në njërën prej dy lidhësve në ndarës, dhe pastaj e lidhja atë tela të prerë në një tel qark shtesë.

Pastaj, duke përdorur multimetrin tim, shkova te kutia e siguresave në anën e shoferit dhe testova siguresat ekzistuese për të parë se cili siguresë mori energji pasi çelësi u kthye në ndezës.

Së fundi, unë e lidha telin shtesë të qarkut me siguresën që vendosa në mënyrë që ekrani tani të ndizet vetëm kur makina ime po funksionon. Ju lutemi bëni disa kërkime se si të shtoni siç duhet një qark në makinën tuaj. Kam gjetur se ky mësim në youtube është një i mirë.

Recommended: