Բովանդակություն:

Arduino մեքենայի ցուցադրում. 7 քայլ (նկարներով)
Arduino մեքենայի ցուցադրում. 7 քայլ (նկարներով)

Video: Arduino մեքենայի ցուցադրում. 7 քայլ (նկարներով)

Video: Arduino մեքենայի ցուցադրում. 7 քայլ (նկարներով)
Video: Arduino UNO and Mega Windows 7, 8, 10 USB driver Solved 2024, Հուլիսի
Anonim
Image
Image
Arduino մեքենայի ցուցադրում
Arduino մեքենայի ցուցադրում
Arduino մեքենայի ցուցադրում
Arduino մեքենայի ցուցադրում

Կառուցեցի ներկառուցված ախտորոշման (OBD-II) էկրան ՝ օգտագործելով Adafruit- ի 7 TFT LCD, Teensy 3.6, Freematics OBD-II I2C ադապտեր և Amazon- ում գտած որոշ պահուստային տվիչներ: displayուցադրումն ունի երկու էջ մեկը `երբ իմ Honda Accord- ը քշում է, և մեկը` երբ այն հակառակն է:

Երբ իմ մեքենան վարում է, ցուցադրվում են RPM- ը, MPH- ն, շարժիչի բեռնվածության տոկոսը, մարտկոցի լարումը, խցիկի ջերմաստիճանը և շարժիչի հովացուցիչի ջերմաստիճանը (մեքենայի մի քանի այլ վիճակագրություն կա, եթե դրանք չցանկանաք ցուցադրել):

Երբ իմ մեքենան հակառակ ուղղությամբ է, Arduino IDE- ի հետ համատեղ Teensy 3.6- ը կարդում է իմ գտած մեքենայի անիմացիոն bitmap պատկերը, որը ցուցադրում է այն, այնուհետև կարդում պահեստային տվիչները: Չորս տվիչներն ունեն իրենց հեռավորությունը ոտքերի վրա և մեքենայի հետևում գտնվող անիմացիա, որը փոխում է գույնը ՝ կախված այն բանից, թե որքան մոտ է օբյեկտը մեքենային (պարզապես կանաչ նշանակում է <5 ոտնաչափ, կանաչ և դեղին նշանակում է <2,6 ոտնաչափ, իսկ կանաչ, դեղին իսկ կարմիրը նշանակում է <1 ոտնաչափ):

Ի վերջո, ես ավելացրի գիշերային ժամացույցը լուսավորելու հնարավորությունը:

Վերջնական արդյունքը հիանալի տեսք ունի և շատ լավ է գործում իմ մեքենայում: Ես նույնիսկ ավարտեցի այն տեղադրելով կենտրոնական մխիթարելում, ինչը լրիվ այլ գործընթաց էր, որի մեջ ես չեմ մտնի այս հրահանգելիքում: Ստորև բերված են այն մասերի ցանկը, որոնք ես օգտագործել եմ այս LCD էկրանը ստեղծելու համար:

1) Freematics OBD -II ադապտեր - 35 դոլար

2) պահուստային տվիչներ `15 դոլար

3) 7 դյույմանոց TFT LCD էկրան - 38 դոլար

4) SPI- ի վրա հիմնված LCD ցուցադրման վարորդ - 35 դոլար

5) դեռահաս 3.6 - $ 30

6) Level Shifter - 4 դոլար

7) 74HC125 Tri State Buffer IC -6 դոլար 2 տուփի համար (վստահ եմ, որ դուք կարող եք գտնել այս մաքրիչն այլուր)

8) MicroSD քարտ> = 1 ԳԲ - $ 4

9) լար, կոնդենսատորներ և դիմադրիչներ.

10) LP3470-2.93 Միացում Վերագործարկեք IC - $ 2

11) (ըստ ցանկության). DS18B20 ջերմաստիճանի տվիչ - 8 դոլար

12) (ըստ ցանկության). OBD -II Splitter - 10 դոլար

13) (ըստ ցանկության). Ավելացրեք միացման ապահովիչի լարը `8 դոլար 5 տուփի համար

Քայլ 1 ՝ Կրկնօրինակող սենսորների ընթերցում

Կրկնվող սենսորների ընթերցում
Կրկնվող սենսորների ընթերցում
Կրկնվող սենսորների ընթերցում
Կրկնվող սենսորների ընթերցում
Կրկնվող սենսորների ընթերցում
Կրկնվող սենսորների ընթերցում
Կրկնվող սենսորների ընթերցում
Կրկնվող սենսորների ընթերցում

Այս քայլը բարդ է, քանի որ այս պահուստային տվիչները հաղորդակցվում են ստացողի և այնուհետև փոքր LCD- ի հետ, ինչպես երևում է վերևում նկարում: Ես ուզում էի մի միջոց ազատվել դրանց ցուցադրումից և օգտագործել իմ սեփականը: Կայքի օգնությամբ, որը գտա որոշ գուգլինգից հետո (Հակառակ կայանման սենսորների կոտրում), ես կարողացա կարդալ սեփական կապի արձանագրությունը, որը հաղորդիչն ուղարկում է LCD էկրան: Չգիտես ինչու, հաղորդակցության արձանագրությունը տիպիկ չէ, ինչպիսիք են I2C, UART, CAN, USB և այլն: Արձանագրությունը տարբերվում է ՝ կախված մատակարարից: Եթե խորհուրդ եք տալիս օգտագործել իմ կոդը, քանի որ այն հատուկ գրված է այդ տվիչների համար, խորհուրդ եմ տալիս գնել վերը նշված իմ հավաքածուն:

Մինչև նրանց տրամադրած LCD- ն անջատելը, ես զննեցի երեք լարերը, որոնք միանում էին հաղորդիչին և LCD- ին: Այնտեղ կար +5 Վ կարմիր մետաղալար, գետնին սև մետաղալար և կապույտ մետաղալար: Իմ օսլիլոսկոպը կապույտ մետաղալարով և գետնին ամրացնելուց հետո ես տեսա հետք, որը նման է վերևում պատկերված նկարին, բայց ոչ ճշգրիտ (ես օգտագործել եմ նկարը վերևում նշված կայքից): Իմ հետքն ուներ ԲԱ longer ավելի երկար տևողության մեկնարկային բիթ, որին հաջորդում էր ևս 17 կարճ տևողության բիթ: Մեկնարկային բիթից հետո 0-5 բիթերը օգտակար տեղեկատվություն չունեին: 6-8 բիթերը համապատասխանում են A, B, C կամ D. սենսորներին: 9-16 բիթերը համապատասխանում էին մետր երկարությանը: Ես ներառեցի Arduino IDE ուրվագիծը, որը կարդում է տվիչները և տվյալները դուրս է բերում սերիական վահանակի վրայով:

Քայլ 2. Ստեղծեք Bitmap պատկերը և տեղադրեք այն MicroSD քարտի վրա

Ստեղծեք Bitmap պատկերը և տեղադրեք այն MicroSD քարտի վրա
Ստեղծեք Bitmap պատկերը և տեղադրեք այն MicroSD քարտի վրա
Ստեղծեք Bitmap պատկերը և տեղադրեք այն MicroSD քարտի վրա
Ստեղծեք Bitmap պատկերը և տեղադրեք այն MicroSD քարտի վրա

Ես օգտագործել եմ լուսանկարների խմբագրման անվճար ծրագիր ՝ GIMP անունով, որպեսզի կտրեմ և չափափոխեմ իմ մեքենայի պատկերը վերևից: Այնուհետև ես պատկերը արտահանեցի որպես 24 car bitmap պատկեր ՝ «car.bmp» անունով, որը 110 պիքսել է 250 պիքսել: Ես սա տեղադրեցի microSD քարտի վրա և տեղադրեցի microSD քարտը Teensy 3.6 միկրոկոնտրոլերի մեջ:

Հիմնական պատճառները, որ ես գնացի Teensy 3.6 -ի փոխարեն UNO- ի փոխարեն, այն արագությունն էր, որով Teensy- ն կարող էր կարդալ SD քարտ և ցուցադրել պատկերը ՝ օգտագործելով RA8875 ցուցադրման վարորդը: UNO- ի միջոցով գործընթացը տևեց մոտ 8 վայրկյան, իսկ Teensy 3.6 -ը ՝ 1.8 վայրկյան:

Քայլ 3: Սարքաշարի միացում

Սարքաշարի միացում
Սարքաշարի միացում

Adafruit- ն իսկապես գեղեցիկ տեսք ունի 7 դյույմանոց TFT LCD, որը շարժվում է RA8875 անունով IC- ով: Ես ընտրել եմ այս դիսփլեյի և դիսփլեյի վարորդը երկու պատճառով. Նախ ՝ ցուցադրման համար նախապես գրված ընդարձակ գրադարաններ: Երկրորդ ՝ ցուցադրման վարորդը կարող է խոսել SPI- ով ցանկացած միկրոկոնտրոլեր, այսինքն ՝ միկրոկոնտրոլերը RA8875- ին միացնող այդքան լարեր չկան:

Այս կարգավորման երկու բացասական կողմ կա: Նախ այն փաստը, որ Adafruit- ից RA8875 տախտակի հետ կապված կա ապարատային սխալ, որը պահանջում է 74HC125 եռակի բուֆերային IC- ի օգտագործումը, եթե ցանկանում եք օգտագործել SPI- ով հիմնված որևէ սարք, ինչպիսին է SD քարտը: Սարքավորման վրիպակն ավելի լիարժեք հասկանալու համար խնդրում ենք կարդալ հետևյալ ֆորումը: Երկրորդ, դա համեմատաբար երկար ժամանակ է, որը տևում է պատկերների LCD էկրանին ուղարկելու համար: Բացի այդ, LCD- ին պատկերի ուղարկման երկար տևողությունը պայմանավորված է SPI կապով, որը սահմանափակվում է միկրոկառավարիչների ժամացույցի արագությամբ և տվյալների մեծ քանակությամբ, որոնք պետք է ուղարկվեն ցուցադրման վարորդին շատ քիչ լարեր:

Ես ստեղծեցի Fritzing սխեման, որպեսզի յուրաքանչյուրը, ով կցանկանար ստեղծել այս ցուցադրումը, կարող է հեշտությամբ կարդալ, թե Teensy 3.6 -ի կապումներն ինչին են միանում: Ստորև ես ներառեցի.frz ֆայլը: Միակ երկու բաղադրիչները, որոնք պիտակավորված չեն, կոնդենսատորներն են, որոնք 1F 16V էլեկտրոլիտիկ կոնդենսատոր են և 100μF կերամիկական կոնդենսատոր: Ես ներառեցի դրանք, որպեսզի համոզվեմ, որ Teensy միկրոկառավարիչի սնուցումը կայուն DC +5V է և չի պարունակում որևէ լարման թռիչք (գուցե անհրաժեշտ չէ, բայց դրանք ներառեցի, քանի որ մեքենայի լարման մատակարարումը կարող է արագ տատանվել ՝ կախված մարտկոցի բեռից):

Մի քանի բան, որոնք պետք է նշել բաղադրիչների մասին: Նախ, մակարդակի փոխարկիչն ընդունում է ցանկացած 5 Վ ազդանշան և այն դարձնում 3.3 Վ Teensy 3.6 անվտանգ լարման: Սա անհրաժեշտ է OBD I2C ադապտերի, ինչպես նաև պահեստային սենսորային հաղորդիչի համար: Երկրորդ, դեռահասների I2C տողերը պահանջում են 4.7kΩ ձգվող դիմադրիչներ: Երրորդ, «գիշերային լար» (մթնող լար) և «պահեստային լար» միացնող չորս դիմադրիչներն անհրաժեշտ են որպես լարման բաժանարար `12V-13V ազդանշանները մոտ 2,5-3V ազդանշանների իջեցնելու համար:

ԹԱՐՄԱՈՄ 7/22/18. Ես գտա, որ OBD-I2C մոդուլի ներքին ջերմաստիճանի տվիչը շատ տարօրինակ թվեր է տալիս: Երբեմն այն կաշխատեր, բայց ժամանակի մեծ մասը մոդուլը թողնում էր 400 աստիճանից բարձր ջերմաստիճան: Դրա պատճառով ես որոշեցի ավելացնել իմ սեփական ds18b20 ջերմաստիճանի տվիչը: Դուք առավել քան ողջունելի եք այստեղ օգտագործել ցանկացած տեսակի ջերմաստիճանի տվիչ, բայց ստիպված կլինեք խմբագրել Arduino ծածկագիրը:

ԹԱՐՄԱՈՄ 3/1/19. Պատանիների 3.6 -ը չի սկսվում, երբ չափազանց ցուրտ է: Ես ավելացրել եմ միացման միացման միացում `համոզվելու համար, որ այն ճիշտ է բեռնվում:

Քայլ 4: RA8875 Էկրանի վարորդ և գրաֆիկական ձևավորում

RA8875 Էկրանի վարորդ և գրաֆիկական դիզայն
RA8875 Էկրանի վարորդ և գրաֆիկական դիզայն

RA8875 ցուցադրման վարորդն ունի գրադարան ՝ Adafruit_RA8875 անունով, որն օգտագործել եմ առաջին և երկրորդ էջերում երևացող ձևերը ստեղծելիս: RA8875- ի գրադարանը կարող է ստեղծել միայն գծեր, ուղղանկյուններ, կլորացված ուղղանկյուններ, եռանկյուններ, էլիպսներ և շրջանակներ, այնպես որ գրաֆիկան պետք է մշակվի խելացի ձևով `ավելի բարդ ձևեր ստեղծելու համար: Օրինակ, առաջին էջի մոխրագույն մատանին իրականում ավելի մեծ տրամագծով մոխրագույն շրջան է, որին հաջորդում է ավելի փոքր տրամագծի սև շրջանակ: Բացի այդ, պահուստային տվիչների էջի մեկ փոքր հատվածը պարունակում է 2 եռանկյուն այնպես դասավորված, որ դրանք կազմում են բազմանկյան ձև: Ես դա արեցի, որպեսզի կարողանամ փոխել պահուստային տվիչների էջի առանձին հատվածի գույնը: Duուցադրման համար նախատեսված Arduino ֆայլը պարունակում է մի շարք կետեր, որոնցով ես հետևում էի եռանկյունների և այլ ձևերի գտնվելու վայրին:

Ես օգտագործել եմ այս հիանալի կայքը ՝ RGB565 գույները ընտրելու և դրանք ուրվագծելու համար, որպեսզի կարողանամ օգտագործել Adafruit_RA8875 գրադարանում արդեն նախապես սահմանված ոչ լռելյայն գույները:

Տառատեսակների առումով, Adafruit_RA8875 գրադարանը աջակցում է միայն մեկին, եթե գրադարանի մի հատված չեք մեկնաբանում, որը թույլ է տալիս օգտագործել Adafruit_GFX գրադարանի տառատեսակները: Ստորև ես ներառեցի փոփոխված Adafruit_RA8875 գրադարանը: Ես պարզապես մեկնաբանեցի կոդի մի քանի տող, այնուհետև կարողացա օգտագործել տառատեսակները Adafruit_GFX գրադարանում: Բացի այդ, այս նախագծում օգտագործած 7 հատվածի տառատեսակը օգտագործելու համար համոզվեք, որ «FreeSevenSegNumFont.h» ֆայլը, որը ես գտնվում եմ Adafruit_GFX գրադարանի տառատեսակների թղթապանակում:

Քայլ 5: Էսքիզների վերբեռնում

Էսքիզների վերբեռնում
Էսքիզների վերբեռնում
Էսքիզների վերբեռնում
Էսքիզների վերբեռնում

Էսքիզը Teensy 3.6 -ում վերբեռնելու համար հարկավոր է տեղադրել Teensyduino- ն: Այնուհետև ձեզ հարկավոր է փոխարինել Adafruit_RA8875 և Adafruit_GFX գրադարանները դեռահասների գրադարանի գտնվելու վայրում (ոչ թե փաստաթղթերի ձեր բնորոշ վայրը): Mac- ում ես ստիպված էի աջ սեղմել ծրագրերում Arduino հավելվածի պատկերակին, այնուհետև անցնել դեպի/Բովանդակություն/Java/սարքավորում/teensy/avr/գրադարաններ: Պատուհանների վրա ես համոզված եմ, որ այն գտնվում է ձեր C սկավառակի տակ ՝ filesրագրի ֆայլեր x86, Arduino և այնուհետև այնտեղ գտնվող ապարատային թղթապանակում: Դա անելուց հետո ձեզ հարկավոր է փոխել էսքիզների գրքի գտնվելու վայրը Arduino հավելվածում ՝ այն խմբագրելով նախապատվությունների համաձայն, որտեղ երբևէ գտնվում են ձեր պատանեկության գրադարանները (այսինքն ՝ /Applications/Arduino.app/Contents/Java/hardware/teensy/avr):

ԹԱՐՄԱՈՄ 7/22/16. Ներքին ջերմաստիճանի տվիչի խնդրի պատճառով, որի մասին ես ավելի վաղ խոսեցի, ես ստիպված էի տեղադրել DS18B20 մոդուլի ջերմաստիճանի տվիչ: Zip ֆայլում կտեսնեք 4 arduino էսքիզ: Խնդրում ենք վերբեռնել ցուցադրման_կոդի ուրվագիծը, եթե ցանկանում եք օգտագործել OBD-II I2C մոդուլի ներքին ջերմաստիճանի տվիչը: Խնդրում ենք վերբեռնել display_code_with_new_temperature_sensor էսքիզը, եթե ցանկանում եք օգտագործել DS18B20 մոդուլը, որը ես կապեցի վերևում:

ԹԱՐՄԱՈ 11Մ 11/17/17. Fixedրագրային ապահովման մեջ ես շտկեցի մի շարք սխալներ, ներառյալ DS18B20- ը, որը թողնում է 185 Fahrenheit ջերմաստիճանը, ցուրտ եղանակին էկրանն ընդհանրապես չի միանում, և պիքսելները սխալ գույնի մեջ են խրվում, երբ էկրանը մթագնում է:

Այնուհետև օգտագործեք իմ վերևի նկարը `համոզվելու համար, որ ձեր պատանեկության կարգավորումները համապատասխանում են նկարին: Ես գտա, որ պատանու գերլարումը 240 ՄՀց հաճախականությամբ թույլ չի տալիս I2C OBD-II ադապտերին հաղորդակցվել դեռահասի հետ: Ի վերջո, պարզապես կտտացրեք բեռնել:

Արդուինոյի էսքիզային ֆայլերում ես գրեցի բավականին ծավալուն մեկնաբանություններ: Խնդրում ենք փնտրել բացատրություն, թե ինչպես է աշխատում ծրագրաշարը: Խնդրում ենք ազատ զգալ կապվեք ինձ հետ ցանկացած հարցի համար: Ես կփորձեմ նրանց պատասխանել իմ հնարավորությունների սահմաններում: Հաջողություն!

Քայլ 6: 3D տպիչ LCD պատյան

3D տպիչ LCD պատյան
3D տպիչ LCD պատյան
3D տպիչ LCD պատյան
3D տպիչ LCD պատյան
3D տպիչ LCD պատյան
3D տպիչ LCD պատյան

Ես ստեղծեցի 3D տպագիր LCD վերին և ստորին ծածկ ՝ 7 դյույմանոց էկրանը պաշտպանելու համար: Ես կցել եմ. IPT գյուտարարի մասի ֆայլերը, ինչպես նաև. STL ֆայլերը:

Ես ներառեցի նաև մի մաս, որը կոչվում է backup_sensor_ring.ipt, որը օղակ է, որը տեղավորվում է այն պահուստային տվիչների շուրջ, որոնք ես կապեցի վերևում: Իմ մեքենան արդեն ուներ նախապես հորատված պահեստային սենսորների անցքեր, որոնք չափազանց մեծ էին Amazon- ում գնած պահեստային տվիչների համար, ուստի ես ստիպված էի ստեղծել օղակ, որը տեղավորվելու էր պահուստային տվիչների վրա: Եթե դուք պատրաստվում եք փորել ձեր բամպերը հավաքածուի մեջ ներառված շրջանաձև փորված կտորով, ապա ձեզ հարկավոր չէ այս մասը:

Քայլ 7. OBD-II նավահանգիստը պառակտելը այնպես, որ Arduino- ն ուժ ունի միայն մեքենայի վազքի ժամանակ

OBD-II նավահանգիստը պառակտելն այնպես, որ Arduino- ն ուժ ունի միայն մեքենան աշխատելիս
OBD-II նավահանգիստը պառակտելն այնպես, որ Arduino- ն ուժ ունի միայն մեքենան աշխատելիս
OBD-II նավահանգիստը պառակտելն այնպես, որ Arduino- ն ուժ ունի միայն մեքենան աշխատելիս
OBD-II նավահանգիստը պառակտելն այնպես, որ Arduino- ն ուժ ունի միայն մեքենան աշխատելիս
OBD-II նավահանգիստը պառակտելն այնպես, որ Arduino- ն ուժ ունի միայն մեքենան աշխատելիս
OBD-II նավահանգիստը պառակտելն այնպես, որ Arduino- ն ուժ ունի միայն մեքենան աշխատելիս

Իմ էկրանը տեղադրելուց կարճ ժամանակ անց հասկացա, որ էկրանը միշտ միացված է, նույնիսկ երբ մեքենան անջատված էր: Նայելով OBD-II փինին, ես գտա, որ OBD-II միակցիչի 12 Վ հոսանքի գիծը միշտ միացված է ուղղակի մարտկոցին:

Այս ամենը շրջանցելու համար ես գնեցի OBD-II պառակտիչ, կտրեցի մետաղալարը, որը պատրաստվում է ամրացնել 16-ը ՝ պառակտիչի երկու միակցիչներից մեկի վրա, այնուհետև այդ կտրված մետաղալարը միացրեցի միացման միացման լարին:

Այնուհետև, օգտագործելով իմ բազմաչափը, ես գնացի վարորդի կողքի ապահովիչների տուփ և փորձարկեցի առկա ապահովիչները `տեսնելու, թե որ ապահովիչն է սնվում բանալին բռնկման վերածվելուց հետո:

Ի վերջո, ես միացրած միացման լարն այն միացրած ապահովիչին միացրեցի, որպեսզի էկրանը միանա միայն այն ժամանակ, երբ մեքենաս աշխատում է: Խնդրում ենք մի քանի հետազոտություն կատարել, թե ինչպես ճիշտ միացնել ձեր մեքենային միացում: Ես գտա, որ այս YouTube- ի ձեռնարկը լավն է:

Խորհուրդ ենք տալիս: