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

Steեկի բանալիներ մեքենայի ստերեո ադապտեր (CAN ավտոբուս -> բանալի 1). 6 քայլ
Steեկի բանալիներ մեքենայի ստերեո ադապտեր (CAN ավտոբուս -> բանալի 1). 6 քայլ

Video: Steեկի բանալիներ մեքենայի ստերեո ադապտեր (CAN ավտոբուս -> բանալի 1). 6 քայլ

Video: Steեկի բանալիներ մեքենայի ստերեո ադապտեր (CAN ավտոբուս -> բանալի 1). 6 քայլ
Video: Մարտկոցը մի հանեք մեքենայից։ Արեք դա ՃԻՇՏ: 2024, Հուլիսի
Anonim
ԿԱՐՈ Է ավտոբուսի հոտոտում
ԿԱՐՈ Է ավտոբուսի հոտոտում

Բանալին 1) "src =" https://content.instructables.com/ORIG/F3X/UXCI/KCT3F9KZ/F3XUXCIKCT3F9KZ-p.webp

Ստերեոին հրամաններ ուղարկելը
Ստերեոին հրամաններ ուղարկելը

Բանալին 1) "src =" {{file.large_url | add: 'auto = webp & frame = 1 & height = 300' %} ">

Օգտագործված մեքենա գնելուց մի քանի օր անց ես պարզեցի, որ չեմ կարող հեռախոսից երաժշտություն նվագել մեքենայի ստերեոյի միջոցով: Առավել հիասթափեցնողն այն էր, որ մեքենան ուներ Bluetooth, բայց թույլ էր տալիս միայն ձայնային զանգեր, այլ ոչ թե երաժշտություն: Այն ուներ նաև Windows Phone- ի USB պորտ, սակայն առանց 60 դոլարանոց դոնգի iPhone- ի հետ չէր աշխատի:

Նախկին մեքենաներիս վրա փոխարինած ստերեոները, առանց շատ մտածելու կամ հետազոտելու, ես 40 դոլար փոխարինող ստերեո պատվիրեցի հայտնի «էժան» կայքից: Ստերեո սարքը հագեցած էր հետընթաց տեսախցիկով, Car Play- ով և մի շարք լրացուցիչ հնարավորություններով, որոնք շատ ավելի լավ արժեք էին թվում, քան ավելի թանկ դոնգլը, որը միայն մեկ բան է անում:

Նոր երեսպատում գնելուց և ներկելուց, լեռը 3D տպելուց և մի շարք լրացուցիչ աշխատանքներ (որոնք ինքնին կարող էին ուսանելի լինել), ես եկա տհաճ բացահայտման: Keyեկի բանալիների հրամանները ուղարկվում էին CAN ավտոբուսով, բայց ստերեո ձայնը միայն Key1 մուտք էր: Կեսից մեկը չհանձնվողներից մեկը ես պատվիրեցի 60 դյույմ ադապտեր, որը պարզվեց, որ չի աշխատում: Այս պահին ես որոշեցի ինքս պատրաստել ադապտեր:

Ես էլեկտրատեխնիկ չեմ, ես միայն տարրական էլեկտրոնիկայի գիտելիքներ ունեմ, և սա ինձ համար սովորելու և ուսումնասիրելու նախագիծ էր: Իմ խորհուրդն է լինելու նախ ստուգել ձեր մեքենայի բնութագրերը և պատվիրել համատեղելի ռադիո, բայց եթե արդեն խրված եք (ինչպես ես էի), հետևեք հրահանգներին ՝ ձեր իսկ ռիսկով:

Պարագաներ

Ադապտեր (մոտ 15 $)

  • Arduino Pro Mini 5V (կամ համատեղելի տախտակ)
  • MCP2515 CAN ավտոբուսի մոդուլ
  • 60x80 մմ տախտակ
  • X9C104 թվային պոտենցիոմետր 100K Օմ (կախված է ձեր ստերեոից)
  • DC-DC Նահանջող կարգավորիչ LM2596S 3-40V 3A
  • Մալուխի ապահովիչի սեփականատեր + ապահովիչ (100-200 Օմ)
  • Նախագծի տուփ կամ 3D տպիչ `այն տպելու համար
  • Ավտոմեքենայի ստերեո վարդակներ (արական + իգական)
  • Suppliesոդման պարագաներ, լարեր և այլն:

Փորձարկող օգնականներ (խիստ անհրաժեշտ չեն, բայց փորձարկումը շատ ավելի հեշտ կդարձնեն)

  • Arduino (ցանկացած 5V տախտակ կանի)
  • MCP2515 CAN ավտոբուսի մոդուլ
  • Breadboard + jumpers

Քայլ 1. ԿԱՐՈ Է ավտոբուսի հոտ քաշել

Ձեր մեքենայի ներսում մի շարք լարեր անցկացնելու փոխարեն մի քանի համակարգեր միացնելով միմյանց, որոշ ժամանակակից տրանսպորտային միջոցներ ունեն զույգ լարեր, որոնք անցնում են յուրաքանչյուր բաղադրիչով: Այս լարերի միջոցով տեղեկատվությունը ուղարկվում է որպես թվային տվյալների փաթեթ, և բոլոր համակարգերը կարող են կարդալ բոլոր հաղորդագրությունները: Սա CAN ավտոբուսային ցանց է (ձեր մեքենայում կարող են լինել բազմաթիվ ցանցեր, այնպես որ բոլոր տվյալները կարող են տեսանելի չլինել):

Այն, ինչ մենք ցանկանում ենք անել, դա միանալ CAN ավտոբուսային ցանցին և «հոտոտել» տվյալների տրաֆիկը: Այս կերպ մենք կարող ենք «տեսնել», երբ ղեկի բանալին սեղմված է: Յուրաքանչյուր փաթեթ ունի ID, որը ներկայացնում է փաթեթ ուղարկած մեքենայի ենթահամակարգը և տվյալներ, որոնք ներկայացնում են համակարգի վիճակը: Այս դեպքում մենք փորձում ենք գտնել այն ենթահամակարգի ID- ն, որն ուղարկում է ղեկի բանալիների հաղորդագրությունները և յուրաքանչյուր բանալու տվյալների ներկայացումը:

Եթե ձեր բախտը բերել է, կարող եք գտնել ձեր մեքենայի արժեքները ինչ -որ տեղ առցանց և կարող եք բաց թողնել այս քայլը:

Այս գործընթացը մի փոքր ներգրավված է և արդեն բացատրված է այլ վայրերում, ուստի ես պարզապես կամփոփեմ այն.

  • Գտեք ձեր մեքենայի CAN ավտոբուսային հաղորդակցության ճիշտ արժեքները: Իմ մեքենայի համար (2009 թ. Fiat Idea) դա 50KBPS բաուդ արագություն էր և 8 ՄՀց ժամացույցի արագություն:
  • Միացեք CAN ավտոբուսային ցանցին ՝ օգտագործելով CAN ավտոբուսի մոդուլը և Arduino- ն «դիպուկ» կազմաձևով:
  • Կարդացեք CAN ավտոբուսի արժեքները ձեր նոթբուքի վրա ՝ օգտագործելով այնպիսի գործիք, ինչպիսին է https://github.com/alexandreblin/python-can-monito…: Առանց դրա շատ դժվար կլինի դա անել, քանի որ շատ հաղորդագրություններ են ուղարկվում նույնիսկ այն ժամանակ, երբ մեքենան ոչինչ չի անում:
  • Սեղմեք ղեկի կոճակը և նշեք արժեքի փոփոխությունները: Սա կարող է մի փոքր բարդ լինել, քանի որ շատ հաղորդագրություններ են ուղարկվում, և գուցե դժվար լինի պարզել, թե որն է:

Ահա երկու հիանալի հոդված, որոնք մանրամասնորեն բացատրում են գործընթացը.

  • https://medium.com/@alexandreblin/can-bus-reverse-…
  • https://www.instructables.com/id/CAN-Bus-Sniffing-…

Ի վերջո, դուք պետք է ունենաք ենթահամակարգի ID, որը մենք կօգտագործենք ՝ միայն ղեկի CAN ավտոբուսի հաղորդագրությունները լսելու համար, և հիմնական հրամանների տասնվեցական արժեքների ցուցակ: Իմ դեպքում տվյալները այսպիսին էին.

ID | ID վեցանկյուն | Բայթ 0 | Բայթ 1 | Կոճակ

------------------------------------------------- 964 | 3C4 | 00 | 00 | Կոճակներ չկան 964 | 3C4 | 04 | 00 | ՊԵԿ 964 | 3C4 | 10 | 00 | >> 964 | 3C4 | 08 | 00 | << 964 | 3C4 | 00 | 80 | Հեռախոս 964 | 3C4 | 00 | 08 | ESC 964 | 3C4 | 80 | 00 | + 964 | 3C4 | 40 | 00 | - 964 | 3C4 | 00 | 40 | Հաղթել 964 | 3C4 | 00 | 02 | Մինչև 964 | 3C4 | 00 | 01 | Ներքև 964 | 3C4 | 00 | 04 | լավ

Ենթահամակարգի ID- ն 3C4 է (այս դեպքում), որը տասնվեցական թիվ է, ուստի այն պետք է գրենք 0x3C4- ի նման Arduino էսքիզներում: Մեզ հետաքրքրում են նաև 0 և 1 բայթերը (ձեր դեպքում գուցե ավելի շատ բայթեր լինեն): Սրանք նաև տասնվեցական արժեքներ են, ուստի դրանք նույնպես պետք է գրվեն առաջատար 0x- ով:

Եթե արժեքները վերածում եք երկուականի, կնկատեք, որ բիթերը չեն համընկնում (օրինակ ՝ + 0b10000000 և - 0b01000000), սա մի քանի ստեղն է, որոնք կարող են միաժամանակ սեղմվել:

Ես առաջարկում եմ դիպուկահարը կառուցել «փորձարկման օգնական» բաժնում նշված նյութերով, որպեսզի հետագայում կարողանաք նորից օգտագործել այն ՝ ձեր մեքենան նմանակելու համար: Սա կփրկի ձեզ անընդհատ նստել ձեր մեքենայում, երբ դուք կառուցում և փորձարկում եք ադապտեր: Դուք կարող եք օգտագործել տրված ուրվագիծը `որպես սիմուլյատոր: Փոփոխեք «subsystemId», «data0» և «data1» արժեքները, որոնցից հոտոտել եք:

Քայլ 2: Հրամաններ ուղարկելը ստերեո

Ստերեոին հրամաններ ուղարկելը
Ստերեոին հրամաններ ուղարկելը

Նախքան ադապտորի կառուցումը սկսելը, ամենալավն այն է, որ նախ փորձարկվի, թե արդյոք ստերեոն կարող է հրամաններ ստանալ:

Ես ունեի պահեստային մեքենայի մարտկոց, ուստի ես անմիջապես միացրի ստերեոն դրան: Եթե ունեք 12 Վ նստարանային էներգիայի աղբյուր, ապա նույնիսկ ավելի լավ: Unfortunatelyավոք, ես չկարողացա ինտերնետում գտնել շատ տեղեկություններ իմ միավորի Key1 մուտքի վերաբերյալ, ուստի դիմեցի փորձերի: Այս պահին ես չափազանց մտահոգված չէի ստերեոյի այրման մասին, քանի որ այն համեմատաբար էժան է, և սա իմ վերջին փորձն էր, որ այն աշխատեցնի իմ մեքենայի հետ:

Ստերեոն ունի հրամանի ուսուցման էկրան, որտեղ հնարավոր է ընտրել դիմադրության երկու արժեքներից մեկը (1K և 3.3K) և տեսնել «լարման» արժեքը (0-255): «Լարում» -ը մեջբերված է, քանի որ այն մոլորեցնող է: Ես շատ ժամանակ անցկացրեցի Key1- ի վրա տարբեր լարման կիրառմամբ ՝ առանց բախտի: Ես նաև փորձեցի օգտագործել տարբեր ռեզիստորներ ՝ առանց բախտի լարումը կիրառելու համար:

Բեկումնային քայլը տեղի ունեցավ, երբ ես փորձեցի հպել Key1 լարը մարտկոցի գրունտին, որի արդյունքում «լարումը» իջավ 0 -ի: Սա տարբեր դիմադրիչների հետ համատեղ ուսումնական էկրանին կարտադրեր հետևողական «լարման» արժեքներ:

Այժմ, երբ ես գիտեի, թե ինչպես ուղարկել մուտքագրումներ ստերեոին, ինձ պետք էր միջոց Arduino- ից դրանք ուղարկելու համար: Այս պահին ես չեմ լսել մուլտիպլեքսերների մասին, որոնք որոշ ռեզիստորների հետ մեկտեղ, գուցե ավելի արագ և հուսալի լուծում լինեին (ես դեռ վստահ չեմ, արդյոք դա իրագործելի է), ուստի ես օգտագործեցի թվային պոտենցիոմետր: Սկզբում ես խնդիրներ ունեի թվային կաթսան աշխատեցնելու հետ, մինչև որ պարզեցի, որ այն պետք է միացնեմ որպես ռեոստատ `լարման բաժանարարի փոխարեն որպես փոփոխական դիմադրող: Հիմնականում ես ստիպված էի միացնել RH և RW տերմինալները:

Բացի դիմադրությունից, ժամանակը որոշիչ նշանակություն ունեցավ: Եթե դիմադրության անկումը չափազանց կարճ է, հրամանը չի գրանցվի: Եթե դա չափազանց երկար է, այն կարող է գրանցվել մի քանի անգամ: 240 մգ նվազում, որին հաջորդեց 240 մգ ուշացում, մինչև հաջորդ հրամանը բավականին հուսալի աշխատեր իմ ստերեոյի համար: Թեև դա շատ քիչ ժամանակ է թվում, նշանակում է, որ մենք կարող ենք վայրկյանում ուղարկել առավելագույնը 2 հրաման, ինչը նկատելի է, եթե փորձում եք ձայնը արագ բարձրացնել կամ նվազեցնել: Ես փորձեցի խաղալ տարբեր ժամանակաչափերով և նախշերով, ինչը իսկապես բարձրացրեց արագությունը, բայց այնքան էլ հուսալի չէր: Եթե ունեք որևէ գաղափար, թե ինչպես դա բարելավել, խնդրում ենք թողնել դրանք մեկնաբանություններում:

Մինչև որևէ այլ բան շարունակելը, ես առաջարկում եմ կառուցել նախատիպ `ստուգելու համար, թե արդյոք ձեր ստերեոն ընդունում է նույն տեսակի մուտքը: Նույնիսկ եթե այն ընդունում է տարբեր լարման, ադապտորը պետք է աշխատի էլեկտրագծերի և Arduino էսքիզի փոքր փոփոխություններով:

Քայլ 3: Կառուցեք ադապտեր

Կառուցելով ադապտեր
Կառուցելով ադապտեր
Կառուցելով ադապտեր
Կառուցելով ադապտեր
Կառուցելով ադապտեր
Կառուցելով ադապտեր

Բոլոր բաղադրիչներն առանձին փորձարկելուց և դրանք միասին սեղանի վրա փորձելուց հետո ժամանակն էր նրանց տալ ավելի մշտական տուն: Սա մի քանի ժամ տևեց բաղադրիչների տեղադրման և զոդման:

Վերևի ձախ մասում գտնվում է իջեցման կարգավորիչը, որը մեքենայի մարտկոցից փոխում է 12 Վ լարման, որը 5 Վ է, որը կարող է օգտագործվել մյուս բաղադրիչների կողմից:

Ներքևի ձախ մասում գտնվում է CAN ավտոբուսի մոդուլը, որը կարդում է մեքենայի CAN ավտոբուսային ցանցի արժեքները և դրանք փոխանցում է Arduino- ին:

Վերին աջ կողմում թվային պոտենցիոմետրն է (լարված է որպես ռեոստատ), որը գործում է որպես փոփոխական դիմադրություն գետնին և ստերեո Key1 մուտքի միջև:

Ներքևի աջ մասում է Arduino- ն, որը գործում է որպես ադապտերի ուղեղ ՝ փոխակերպելով CAN ավտոբուսի հաղորդագրությունները դիմադրությունների, որոնք կարդում են ստերեոները:

12 Վ մուտքի վրա կա 150 մԱ ապահովիչ, որը, ամենայն հավանականությամբ, չի պաշտպանի միացումը, բայց կա կարճ բռնկման դեպքում հրդեհը կանխելու համար:

Քայլ 4: Theրագրակազմ

Րագրակազմը
Րագրակազմը

Ներբեռնելուց հետո տեղադրեք բոլոր երեք.ino ֆայլերը մեկ թղթապանակում: Այդ կերպ բոլորը կդառնան նույն ուրվագծի մի մասը և միասին կտեղակայվեն Արուդինոյում:

Անհրաժեշտ է նաև Arduino IDE- ին ավելացնել անհրաժեշտ գրադարանները: Դա անելու համար ներբեռնեք հետևյալ ֆայլերը.

github.com/autowp/arduino-mcp2515/archive/…

github.com/philbowles/Arduino-X9C/archive/…

այնուհետև ավելացրեք երկուսն էլ ՝ գնալով ուրվագիծ> Ներառել գրադարան> Ավելացնել. Zip գրադարան…

CanBusStereoAdapter.ino

Հիմնական կարգավորումը կատարվում է այս ֆայլում:

Հիմնական հրաման CAN ավտոբուսի արժեքները սահմանվում են վերևում: Եթե դուք չունեք նույն մեքենան, ինչ ես, ապա, ամենայն հավանականությամբ, ստիպված կլինեք ձեր արժեքները դնել: Դուք կարող եք օգտագործել դիպուկահարի տասնվեցական արժեքները, ես օգտագործել եմ երկուական, այնպես որ ավելի հեշտ է տեսնել, որ բիթերում պատահական համընկնումներ չկան:

Բոլոր մեքենաները չունեն ղեկի նույն հրամանները, ուստի ազատ զգուշությամբ հանեք, ավելացրեք կամ խմբագրեք սահմանված արժեքները:

Չմոռանաք փոխարինել ձեր ենթահամակարգի ID- ն «STEERING_ID» - ում:

CanBus.ino

Այս ֆայլը ստեղծում է CAN ավտոբուս լսող, մեկնաբանում է փաթեթները և դիմադրության արժեքները դնում շրջանաձև բուֆերի մեջ:

Կարգավորեք CAN ավտոբուսի կազմաձևը «setupCanBus» գործառույթում ՝ ձեր մեքենային համապատասխան:

Մենք օգտագործում ենք շրջանաձև բուֆեր, քանի որ, ինչպես արդեն նշվեց, ղեկի հրամանի մուտքը շատ ավելի արագ է, քան ստերեո մուտքը: Այս կերպ մենք բաց չենք թողնում որևէ հրաման, մինչդեռ թվային պոտենցիոմետրն անում է իր գործը: Եթե մենք շատ հրամաններ ենք մուտքագրում, ամենահինը առաջինը կանտեսվեն, քանի որ դրանք ամենաքիչն են: Սա նաև թույլ է տալիս կարգավորել այն գործը, երբ մի քանի կոճակ սեղմվում է, քանի որ ստերեո մուտքը միաժամանակ ընդունում է միայն մեկ արժեք:

Եթե դուք փոխել եք «CanBusStereoAdapter.ino» - ի հրամանի սահմանումներից մեկը, ապա դրանք նույնպես պետք է թարմացնեք «handleMessageData» գործառույթում: «handleMessageData» - ն ստուգում է, եթե տրամադրված CAN ավտոբուսի տվյալների շրջանակները պարունակում են հայտնի հրամաններից որևէ մեկը ՝ օգտագործելով բիթային և AND գործողություն:

Օրինակ, եթե ես սեղմել եմ >> և + միաժամանակ, ինչը մեզ կտա 0b10010000 արժեք ունեցող տվյալների շրջանակ: >> (իմ մեքենայի համար) 0b00010000 է երկուական, և + 0b10000000:

--------------- >> -------------- + ------------- << --- - տվյալներ 0 | 0b10010000 | 0b10010000 | 0b10010000 հրաման | ԵՎ 0b00010000 | ԵՎ 0b10000000 | ԵՎ 0b00001000 արդյունք | = 0b00010000 | = 0b10000000 | = 0b00000000

Այստեղ մենք կարող ենք տեսնել, որ AND գործողության արդյունքը 0 -ից մեծ կլինի, եթե հրամանը ներկա լինի տվյալների շրջանակում: Այսպիսով, մեզ մնում է միայն ստուգել {data frame} & {command value}> 0 ՝ մեր սահմանած յուրաքանչյուր հրամանի համար:

Հիշեք, որ տվյալների յուրաքանչյուր շրջանակ պարունակում է տարբեր հրամաններ, ուստի լավ է, եթե հրամանի արժեքները նույնն են, քանի որ մենք դրանք ստուգում ենք իրենց սեփական շրջանակների համեմատ: Իմ օրինակում երկուսն էլ << և ESC- ն երկուսն էլ նույն արժեքն են `0b00001000 (0x08), սակայն << data0- ում և ESC- ում` տվյալները 1 -ում:

Այն բանից հետո, երբ մենք որոշեցինք, որ հրամանը ներկա է շրջանակում, մենք ավելացնում ենք թվային զամբյուղի արժեքը շրջանաձև բուֆերին: Արժեքները տատանվում են 0 -ից 99 -ի սահմաններում, բայց ես նկատել եմ, որ ստերեոյի կողմից կարդացած «լարումը» գծային չէ, այնպես որ ինքդ փորձիր արժեքները:

DigitalPot.ino

Այս ֆայլը դուրս է բերում շրջանաձև բուֆերից արժեքներ և դրանք ուղարկում թվային զամբյուղ ՝ կատարելու համար: Իմ դեպքում "pot.setPotMin (կեղծ);" կբարձրացնի դիմադրության առավելագույնը, որը ստերեոն կկարդա որպես առավելագույն «լարման»: Ձեր ստերեոն կարող է պահանջել, որ թվային կաթսան նվազագույնի հասցնեք, այնպես որ փորձարկեք այն:

Քայլ 5. Նախագծի պարունակությունը

Նախագծի պարունակությունը
Նախագծի պարունակությունը

Ես ունեմ 3D տպիչ, ուստի որոշեցի տպել երկու մասից բաղկացած պարիսպ իմ ադապտերի համար: Ես ներառել եմ Fusion 360 ֆայլ, որը կարող եք խմբագրել, և gcode ֆայլեր, որոնք կհամապատասխանեն 60x80 մմ տրամագծով տախտակին:

Եթե 3D տպիչ չունեք, կարող եք օգտագործել պատրաստի նախագծի պատյան կամ ամուր տարա:

Քայլ 6: Վերջնական մտքեր

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

Իմ փորձարկումներից էներգիայի սպառումը 20-30 մԱ է: Քնի ռեժիմում այն հասցրեցի մինչև 10 մԱ -ի և կարող էի նույնիսկ ավելի ցածր գնալ ՝ LED- ները բաղադրիչներից հանելով, բայց որոշեցի չանհանգստանալ, քանի որ այն կաշխատի միայն մեքենայի վազքի ընթացքում:

Ես բավականին գոհ եմ վերջնական արդյունքից: Արձագանքման ժամանակը ողջամիտ է, և այն հազվադեպ է բաց թողնում հրամանները:

Թեև իմ ժամանակի ներդրումը շատ ավելի մեծ էր, քան առևտրային հասանելի ադապտերի արժեքը (որը չաշխատեց), բայց ձեռք բերված իմացությունը անգնահատելի է:

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