Բովանդակություն:
- Քայլ 1: Իմացեք, թե ինչպես հրամաններ ուղարկել ստերեո
- Քայլ 2: Իմացեք, թե որտեղ միանալ CAN ավտոբուսին
- Քայլ 3. CAN հաղորդագրությունների հակադարձ ճարտարագիտություն
- Քայլ 4: Սարքավորման նախատիպ
- Քայլ 5: Ապահովիչների ծրագրավորում
- Քայլ 6: Softwareրագրակազմ
- Քայլ 7: Վերջնական սարքավորում
- Քայլ 8: Մեքենայի տեղադրում
- Քայլ 9. Ապագա բարելավումներ
Video: Հարմարեցված Arduino- ն կարող է ղեկի կոճակները պահել նոր մեքենայի ստերեոով. 9 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:51
Ես որոշեցի իմ Volvo V70 -02- ի մեքենայի բնօրինակ ստերեոն փոխարինել նոր ստերեո ձայնով, որպեսզի կարողանամ վայելել այնպիսի նյութեր, ինչպիսիք են mp3- ը, bluetooth- ը և handsfree- ը:
Իմ մեքենան ունի ղեկի կառավարման մի շարք ստերեոյի համար, որը ես կցանկանայի, որ դեռ կարողանայի օգտագործել: Ես չէի սպասում, որ դա խնդիր կլինի, քանի որ շուկայում կան մի քանի ադապտերներ, որոնք ենթադրաբար համատեղելի են իմ մեքենայի հետ: Սակայն շուտով իմացա, որ նրանք այդպիսին չեն: (Թվում է, թե V70- ի ադապտերները կարող են խնդիրներ ունենալ -02 մեքենաների հետ ՝ մի փոքր այլ CAN արձանագրության պատճառով):
Այսպիսով, ինչ անել այդ դեպքում: Պահե՞լ հին ստերեոն: Ապրե՞լ ոչ աշխատանքային կոճակներով: Իհարկե ոչ! Եթե շուկայում չկա աշխատանքային ադապտեր, ապա մենք ստիպված կլինենք կառուցել այն:
Այս հրահանգը կարող է կիրառվել (որոշ հարմարեցումներով) այն մեքենաների համար, որտեղ ղեկի կոճակները հաղորդակցվում են CAN ավտոբուսի վրայով:
Քայլ 1: Իմացեք, թե ինչպես հրամաններ ուղարկել ստերեո
Առաջին բանը, որ դուք պետք է անեք, պարզելն է, թե ինչպիսի հեռավոր մուտք է ակնկալում ստերեոն: Սովորաբար արտադրողները դա ձեզ չեն ասի, և դուք հավանաբար մուտք չեք ունենա աշխատող հեռակառավարման վահանակներ ՝ հակադարձ տեխնիկայի համար:
Իմ նոր ստերեոյի (Kenwood) հեռակառավարիչը բաղկացած է մեկ մետաղալարից, և ես չեմ կարողացել որևէ տեղեկատվություն պարզել, թե ինչպես է այն աշխատում: Այնուամենայնիվ, այն ունի նաև 3.5 մմ անցք ՝ հեռավոր մուտքագրման համար: Այդ մասին նույնպես ոչինչ չկարողացա պարզել: Բայց կան նաև այլ ապրանքանիշերի 3.5 մմ -անոց խցիկի մասին որոշ տեղեկություններ, որոնք ենթադրում են, որ տարբեր հրամաններ են որոշվում ՝ ծայր ու թևի միջև հատուկ դիմադրություն կիրառելով (և ըստ ցանկության ՝ մատանի և թևի միջև): Օրինակ ՝ https://forum.arduino.cc/index.php?topic=230068.0. Այսպիսով, ես որոշեցի փորձել, որը հագեցած էր տախտակով, մի փունջ ռեզիստորներով և 3,5 մմ խրոցով, որը միացված էր ստերեոին և միացված էր հացահատիկին: Սկզբում ոչինչ չճանաչվեց, բայց ստերեոն ունի «ուսուցման ռեժիմ» ընտրացանկ, և այնտեղ կարող են հաջողությամբ տեղադրվել հրամանները ՝ տարբեր դիմադրություններ կիրառելիս: Հաջողություն:
Այնուամենայնիվ, ես հետագայում պարզեցի, որ այստեղ սխալ եմ թույլ տվել. Ոչ բոլոր այն հրամանները, որոնք կարծես սովորում էր ստերեոն, իրականում կաշխատեին: Օրինակ ՝ Սովորելու ռեժիմում գտնվեց 30 կՕմ, բայց չաշխատեց ավելի ուշ, և որոշ հրամանների համար, որոնք ես սահմանեցի, դիմադրության տարբերությունն այնքան փոքր էր, որ հետագայում գործադրվեց սխալ հրաման:
Այսպիսով, ես խորհուրդ եմ տալիս օգտագործել ռեզիստորներով տախտակ և անջատիչ կոճակներ բոլոր այն հեռավոր հրամանների համար, որոնք ցանկանում եք կարգավորել և իրականում ստուգել, որ դրանք բոլորը կաշխատեն:
Եթե ձեր մեքենայի ստերեո ձայնը չի կարող նույն կերպ մուտքագրվել, ապա դուք պետք է պարզեք, թե ինչպես է այն աշխատում, որպեսզի կարողանաք հարմարեցնել այս լուծումը: Եթե ընդհանրապես չեք կարողանում պարզել, ապա խնդիր ունեք:
Քայլ 2: Իմացեք, թե որտեղ միանալ CAN ավտոբուսին
Դուք պետք է լավ տեղ գտնեք CAN ավտոբուսին միանալու համար: Քանի որ դուք փոխարինում եք հին ստերեոյին, որը հաղորդակցվում է CAN- ի միջոցով, դուք պետք է կարողանաք այն գտնել ստերեոյի հետևում: CAN ավտոբուսը բաղկացած է մի զույգ ոլորված լարերից (CAN-L և CAN_H): Վստահ լինելու համար խորհրդակցեք ձեր մեքենայի էլեկտրագծերի սխեմայի հետ:
Քայլ 3. CAN հաղորդագրությունների հակադարձ ճարտարագիտություն
Եթե Google- ը ձեզ չասի, թե ինչ CAN հաղորդագրություններ պետք է լսեք, ապա ձեզ հարկավոր է միանալ CAN ավտոբուսին և կատարել հակադարձ ճարտարագիտություն: Ես օգտագործեցի Arduino Uno և CAN վահան: (Դուք իրականում կարիք չունեք CAN վահանի, ինչպես կտեսնեք ավելի ուշ, փոխարենը կարող եք օգտագործել որոշ էժան բաղադրիչներ տախտակի վրա):
Խորհրդակցեք Google- ի հետ ՝ պարզելու, թե ինչ հաճախականություն պետք է օգտագործեք ձեր մեքենային միանալիս: (Սովորաբար դուք կգտնեք, որ կա բարձր արագության և ցածր արագության CAN ցանց: Դուք միանում եք ցածր արագության ցանցին):
Դուք նաև պետք է ծրագրավորեք Arduino- ն `CAN- ի բոլոր հաղորդագրությունները սերիական ինտերֆեյսի վրա մուտքագրելու համար, որպեսզի կարողանաք դրանք պահել ձեր համակարգչի մատյանում: Ստանդարտ Arduino IDE- ն չի պահի տվյալները տեղեկամատյանում, բայց կարող եք օգտագործել օրինակ. Փափուկ փոխարեն.
Նախքան սկսեք գրել ձեր ծրագիրը, դուք պետք է տեղադրեք CAN_BUS_Shield գրադարանը:
Ահա մի քանի կեղծ կոդ, որոնք կօգնեն ձեզ սկսել ձեր ծրագիրը.
կարգավորում ()
{init սերիական կապ init CAN գրադարան} հանգույց () {եթե CAN հաղորդագրություն է ստացվել {կարդալ CAN հաղորդագրության ձևաչափի մատյան մուտքագրում գրել մուտքագրում սերիալին}}
Հուշումներ.
Դուք կարող եք օգտագործել MCP_CAN դասի օրինակ ՝ CAN գրադարանի գործառույթներին մուտք գործելու համար.
MCP_CAN m_can;
Init CAN:
մինչդեռ (m_can.begin ()! = CAN_OK)
{ուշացում (1000); }
Ստուգեք և կարդացեք CAN հաղորդագրությունները.
իսկ (m_can.checkReceive () == CAN_MSGAVAIL)
{// Ստացեք CAN id, հաղորդագրության երկարությունը և հաղորդագրության տվյալները m_can.readMsgBufID (& m_canId, & m_msgLen, m_msgBuf); // Հաղորդագրության տվյալներով ինչ -որ բան արեք այստեղ}
Եթե ավելի շատ օգնության կարիք ունեք, կարող եք իմ ծրագրի հղումը գտնել հետագա քայլերում: CAN վահանի գրադարանը ներառում է նաև օրինակ: Կամ ստուգեք mviljoen2- ի հրահանգը, որը ներառում է նմանատիպ քայլ:
Նախ ձեզ հարկավոր կլինի տեղեկատու ֆայլ, որը կօգնի ձեզ զտել տվյալները: Միացրեք բռնկումը ռադիոյի ռեժիմին և մի քանի րոպե գրանցեք ամեն ինչ ՝ առանց որևէ կոճակի հպելու:
Հետո կոճակներից յուրաքանչյուրի համար սկսեք մուտք գործել, սեղմել կոճակը և դադարեցնել անտառահատումները:
Ավարտելուց հետո ձեր թեկնածուներին գտնելու համար անհրաժեշտ է ձեր կոճակների մատյաններից զտել այն ամենը, ինչ ձեր տեղեկամատյանում է: Ես պարզեցի, որ դեռ շատ հաղորդագրություններ են մնացել, այնպես որ ես ավելի շատ տեղեկամատյաններ եմ պատրաստել, այնուհետև պահանջել եմ, որ «A հրամանի հավակնորդները պետք է լինեն բոլոր կոճակ-Ա-ֆայլերում և ոչ մի տեղեկատու ֆայլում»: Դա ինձ թողեց փորձելու ընդամենը մի քանի հնարավորություն:
Տեղեկամատյանները պարունակում են բազմաթիվ հաղորդագրություններ, այնպես որ ձեզ հարկավոր կլինի գրել ինչ -որ ծրագիր այս կամ հնարավոր է օգտագործել Excel- ը: (Ես իմ կարիքների համար օգտագործել եմ շատ կոդավորված պայմաններով ծրագիր, այնպես որ ես վախենում եմ, որ չեմ կարող առաջարկել մի ծրագիր, որը դուք կարող եք օգտագործել):
Մի նախազգուշական խոսք. Դուք չեք կարող վստահ լինել, որ կոճակը միշտ կստեղծի նույնական հաղորդագրություն: Որոշ բիթեր կարող են պարունակել աճող հաշվիչներ և այլն (սակայն կարող եք բացառել, որ հաղորդագրության ID- ն նույնը լինի):
Եթե պատահաբար ունենաք Volvo V70 -02, ահա թե ինչ եք փնտրում.
- Հաղորդագրության id.
- Բայթ 1: 0x00 (հոգ չէ)
- Բայթ 2: 0x00 (հոգ չէ)
- Բայթ 3: 0x00-0x07 (թքած ունի)
- Բայթ 4: 0x1f (հոգ չէ)
- Բայթ 5: 0x40 (հոգ չէ)
- Բայթ 6: 0x40 (թքած ունի)
- Byte7: Կոճակի նույնացուցիչ.
Երբ հավատում եք, որ գտել եք հրամանները, գուցե լավ գաղափար լինի փոփոխել ծրագիրը, որպեսզի այն գրանցի միայն հետաքրքիր հաղորդագրությունները: Նայեք սերիական տեղեկամատյանների պատուհանը, մինչ սեղմում եք կոճակները ՝ հաստատելու համար, որ դուք ճիշտ հաղորդագրություններ եք գտել:
Քայլ 4: Սարքավորման նախատիպ
Ձեր սարքավորումները պետք է կարողանան.
- Որոշեք CAN ավտոբուսում ստացված հրամանները
- Ուղարկեք այլ ձևաչափով հրամաններ ստերեո
Եթե ունեք բավականաչափ տարածք, կարող եք օգտագործել Arduino- ն և CAN վահանը առաջին մասի համար, իսկ երկրորդի համար կցել լրացուցիչ սարքավորում: Այնուամենայնիվ, կան որոշ թերություններ.
- CAN վահանի արժեքը
- Չափը
- Arduino էլեկտրամատակարարումը ուրախ չի լինի, եթե այն ուղղակիորեն միացված լինի ձեր 12V մեքենաներին (հավանաբար կաշխատի, բայց կյանքը, հավանաբար, կկրճատվի):
Այսպիսով, փոխարենը ես օգտագործեցի հետևյալը.
- Atmega 328, «Արդուինոյի ուղեղ»: (Կան որոշ տարբերակներ, ձեռք բերեք մեկը, որը հավասար է Arduino Uno- ին: Դուք կարող եք այն գնել Arduino բեռնիչով կամ առանց դրա):
- 16 ՄՀց բյուրեղ + կոնդենսատորներ ժամացույցի ազդանշանի համար:
- MCP2551 CAN հաղորդիչ:
- MCP2515 CAN վերահսկիչ:
- TSR1-2450, փոխակերպում է 6,5-36 Վ-ը 5 Վ-ի: (Նախատիպում չի օգտագործվում, քանի որ ծրագրակազմը չի մտածի էներգիայի մատակարարման մասին):
- CD4066B անջատիչ, որը կօգտագործվի ստերեո հրամաններ ուղարկելու ժամանակ:
- Մի երկու դիմադրություն: (Արժեքները կարելի է գտնել Արծվի սխեմաներում ՝ հետագայում):
Այս կոնֆիգուրացիայի հետ կապված լավ բան այն է, որ այն լիովին համատեղելի է Arduino- ի և CAN վահանի գրադարանի հետ:
Եթե ցանկանում եք կարգավորել չորսից ավելի կոճակներ, գուցե մտածեք CD4066B- ից այլ բան օգտագործելու մասին: CD4066B- ն կարելի է բնութագրել որպես չորս անջատիչ մեկում, որոնցից յուրաքանչյուրը վերահսկվում է Atmegas GPIO կապումներից մեկով: Յուրաքանչյուր անջատիչին միացված է ռեզիստոր, որը կարող է օգտագործվել ստերեոյի մուտքի համար օգտագործվող դիմադրությունը վերահսկելու համար: Այսպիսով, սա հեշտությամբ կարող է օգտագործվել չորս տարբեր հրամաններ ուղարկելու համար: Եթե դրանք համակցված են, ապա կարող են ստացվել դիմադրության լրացուցիչ արժեքներ: Այստեղ է, որ նշվում է նախկինում նշածս սխալը: Ես ունեմ չորս կոճակ, բայց ես նախատեսում էի կիրառել դրանցից երկուսը երկար և կարճ սեղմման համար `վեց տարբեր հրամաններ տալու համար: Բայց, ի վերջո, ես պարզեցի, որ չեմ կարող գտնել այնպիսի դիմադրողների համադրություն, որն ինձ վեց աշխատանքային համակցություն կտար: Հավանաբար հնարավոր կլիներ դրա փոխարեն միացնել անալոգային ելքային ազդանշանը ստերեոին (3.5 մմ ծայր): (Ուշադրություն դարձրեք, որ Atmega- ն չունի իրական անալոգային ելքային կապեր, ուստի կպահանջվի լրացուցիչ սարքավորում):
Փորձարկման նպատակով ես պատրաստել եմ նաև պարզ «մեքենա և ստերեո» սիմուլյատոր ՝ իմ նախատիպին միանալու համար: Դա հեշտացնում է վրիպազերծումը, և եթե հաճույք չեք ստանում նստել ձեր մեքենայի և ծրագրի մեջ, ես կարող եմ դա խորհուրդ տալ:
Նախատիպը պատկերված է նկարի ներքևի տախտակով: Էներգամատակարարման, ծրագրավորման և սերիական գրանցման համար այն կցվում է Arduino Uno- ին, որտեղ հեռացվել է Atmega չիպը:
Վերին տախտակը մեքենա + ստերեո սիմուլյատոր է, որը կօգտագործվի նախատիպի նախնական փորձարկման համար:
Նախատիպ + սիմուլյատորը նախատեսված է աշխատել հետևյալ կերպ.
- Սեղմեք սիմուլյատորի տախտակի անջատիչ կոճակներից մեկը: (Սրանք ձեր ղեկի կոճակներն են):
- Երբ սիմուլյատոր ծրագիրը հայտնաբերում է կոճակի սեղմում, այն կուղարկի համապատասխան CAN հաղորդագրություն յուրաքանչյուր 70 ms, քանի դեռ կոճակը սեղմված է: (Քանի որ ավելի վաղ վերցրած տեղեկամատյանները ցույց էին տալիս, որ իմ մեքենայում այդպես է աշխատում): Այն նաև կուղարկի բազմաթիվ «անպիտան» CAN հաղորդագրություններ `ավտոբուսում այլ երթևեկություն մոդելավորելու համար:
- CAN հաղորդագրությունները ուղարկվում են CAN ավտոբուսով:
- CAN հաղորդագրությունները ստացվում են նախատիպի կողմից:
- MCP2515- ը նետում է բոլոր անկապ հաղորդագրությունները `հիմնված հաղորդագրության id- ի վրա:
- Երբ MCP2515- ը ստանում է հաղորդագրություն, որը պետք է մշակվի, դա ցույց կտա, որ այն ունի հաղորդագրություն:
- Atmega- ն կկարդա հաղորդագրությունը և կորոշի, թե որ կոճակը պետք է համարվի ակտիվ:
- Atmega- ն նաև հետևելու է, թե երբ է ստացվել վերջին հաղորդագրությունը, որոշ ժամանակ անց կոճակը թողարկված կհամարվի: (CAN հաղորդագրությունները ցույց են տալիս միայն, որ կոճակն անջատված է, այլ ոչ թե այն սեղմված կամ բաց թողնված է):
- Եթե կոճակը համարվում է ակտիվ, ապա CD4066B- ի մեկ կամ մի քանի անջատիչ կակտիվանա:
- Սիմուլյատորը (այժմ գործում է որպես ձեր ստերեո) կբացահայտի, որ դիմադրության և թևի միջև կիրառվում է դիմադրություն: (Tipայրը միացված է 3.3 Վ -ին, իսկ դիմադրության միջոցով `անալոգային մուտքի քորոցին: Երբ որևէ հրաման ակտիվ չէ, այս քորոցը կկարդա 3.3 Վ, երբ հրամանն ակտիվ է, արժեքը կդառնա ավելի ցածր և կճանաչի հրամանը:
- Մինչ հրամանը ակտիվ է, համապատասխան led- ը նույնպես կակտիվանա: (Կան վեց լուսարձակներ, քանի որ ես պլանավորում էի օգտագործել տարբեր երկար / կարճ սեղմումներ իմ երկու կոճակների համար):
Սարքավորումների նախատիպի մասին լրացուցիչ մանրամասների համար տե՛ս Eagle- ի սխեմաները հետագա քայլում:
Լրացուցիչ մանրամասներ սիմուլյատորի տախտակի սարքավորման մասին.
- 16 ՄՀց բյուրեղ
- 22 pF կոնդենսատորներ
- LED դիմադրիչները պետք է ընտրվեն `ելնելով LED հատկություններից
- A7 և 3.3V միացված դիմադրիչ, ընտրեք օրինակ. 2kOhm (ոչ կրիտիկական):
- MCP2551- ի և MCP2515- ի հետ կապված ռեզիստորները ձգվող-ներքև են: Ընտրեք օրինակ 10 կՕմ
(Կամ, եթե նախընտրում եք, կարող եք օգտագործել CAN վահանը սիմուլյատորի «CAN մասի» համար):
Կարևոր է, որ դուք իմանաք, թե ինչպես են Atmega կապում քարտեզագրվում Arduino կապում, երբ սարքավորումները նախագծում եք:
(Մի միացրեք ոչ մի լուսարձակ անմիջապես CD 4066B- ին, այն կարող է կարգավորել միայն ցածր հոսանք: Ես դա փորձեցի, երբ առաջին անգամ փորձարկեցի ելքը, և չիպը դարձավ անօգուտ: Լավն այն է, որ ես գնել էի դրանցից մի քանիսը միայն այն պատճառով, որ նրանք այնքան էժան են)
Քայլ 5: Ապահովիչների ծրագրավորում
Միգուցե նախորդ քայլին նկատեցիք, որ նախատիպը չունի առանձին բաղադրիչներ MCP2515- ի ժամացույցի ազդանշան առաջացնելու համար: Դա պայմանավորված է նրանով, որ արդեն կա 16 ՄՀց բյուրեղ, որն օգտագործվում է որպես Atmega ժամացույցի ազդանշան, որը մենք կարող ենք օգտագործել: Բայց մենք չենք կարող այն ուղղակիորեն միացնել MCP2515- ին, և լռելյայն Atmega- ում չկա ժամացույցի անջատման ազդանշան:
(Եթե նախընտրում եք, կարող եք բաց թողնել այս քայլը և փոխարենը ավելացնել ժամացույցի լրացուցիչ սարքավորում):
Այնուամենայնիվ, մենք կարող ենք օգտագործել մի բան, որը կոչվում է «ապահովիչների ծրագրավորում» ՝ GPIO կապում մեկի ժամացույցի անջատման ազդանշանը միացնելու համար:
Նախ պետք է գտնել «boards.txt» անունով ֆայլը, որն օգտագործվում է ձեր Arduino IDE- ի կողմից: Ձեզ հարկավոր է պատճենել Arduino Uno- ի գրառումը, տալ նոր անուն և փոխել արժեքը low_fuses- ի համար:
Իմ նոր տախտակն այսպիսին է.
##################################################### #############Հիմնված Arduino Uno#Փոփոխությունների վրա.#Ցածր_ֆյուզները փոխվել են 0xff- ից մինչև 0xbf ՝ Atmega PB0- ում 16 ՄՀց ժամացույց#դուրս գալու համար/պին 14 = Arduino D8
clkuno.name = ockամացույցի անջատում (Arduino Uno)
clkuno.upload.protocol = Arduino clkuno.upload.maximum_size = 32256 clkuno.upload.speed = 115200 clkuno.bootloader.low_fuses = 0xbf clkuno.bootloader.high_fuses = 0xde clkuno.bootloader.extended_fuses = 0xfd clkuno.bootloader.path = optiboot clkuno.bootloader.file = optiboot_atmega328.hex clkuno.bootloader.unlock_bits = 0xff clkuno.bootloader.lock_bits = 0xcf clkuno.build.mcu = atmega328p clkuno.build.f_cpu = 16000000L clkunobuild.build.kkanto.k.o = arc.
##############################################################
Նկատի ունեցեք, որ ժամացույցի անջատումը ակտիվացված է `դրա կառավարման բիթը սահմանելով 0:
Տախտակների կազմաձևման ֆայլում նոր խորհուրդը ստեղծելուց հետո դուք պետք է այրեք նոր բեռնիչ Atmega- ում: Դա անելու տարբեր եղանակներ կան, ես օգտագործեցի https://www.arduino.cc/hy/Tutorial/ArduinoToBreadboard- ում նկարագրված մեթոդը:
Դա անելուց հետո, հիշեք, որ Atmega- ում ծրագիր վերբեռնելիս ընտրեք ձեր տախտակի նոր տեսակը և ոչ թե Arduino Uno- ն:
Քայլ 6: Softwareրագրակազմ
Timeամանակն է, որ համր սարքավորումները խելացի դարձնեն `ավելացնելով որոշ ծրագրակազմ:
Ահա մի քանի կեղծ ծածկագիր նախատիպի համար.
lastReceivedTime = 0
lastReceivedCmd = ոչ մի cmdTimeout = 100 setup () {enable watchdog կարգավորել կապում D4-D7 որպես ելքային կապում init CAN setup CAN filter} loop () {reset watchdog if (CAN հաղորդագրություն է ստացվել) {յուրաքանչյուր կոճակի հրամանի համար {եթե CAN հաղորդագրությունը պատկանում է կոճակի հրամանը {lastReceivedTime = այժմ lastReceivedCmd = cmd}}} եթե այժմ> lastReceivedTime + cmdTimeout {lastReceivedCmd = none} յուրաքանչյուր կոճակի հրամանի համար {if lastReceivedCmd is button command {set command pin output = on} else {set command pin output = off }}}
cmdTimeout- ը որոշում է, թե որքան պետք է սպասենք, մինչև համարենք վերջին թողարկված ակտիվ կոճակը: Քանի որ կոճակը ԿԱՐՈ է հաղորդագրության հրամաններ ուղարկվել մոտավորապես յուրաքանչյուր 70 ms, այն պետք է ավելի մեծ լինի, քան որոշ լուսանցքով: Բայց եթե այն մեծ լինի, հետաձգման փորձ կլինի: Այսպիսով, 100 ms- ը լավ թեկնածու է թվում:
Բայց ի՞նչ է պահակախումբը: Դա օգտակար փոքր ապարատային հատկություն է, որը կարող է մեզ փրկել վթարի դեպքում: Պատկերացրեք, որ մենք ունենք սխալ, որի պատճառով ծրագիրը խափանում է, մինչ ձայնի բարձրացման հրամանը ակտիվ է: Հետո մենք կավարտվեինք ստերեոով ՝ առավելագույն ձայնի վրա: Բայց եթե պահակակետը չվերակայվի կոնկրետ ժամանակի համար, նա կորոշի, որ ինչ -որ անսպասելի բան է տեղի ունեցել, և պարզապես թողարկում է վերականգնում:
դատարկ կարգավորում ()
{// թույլ տալ առավելագույնը 250 ms հանգույցի համար wdt_enable (WDTO_250MS); // այլ init իրեր} void loop () {wdt_reset (); // զբաղվել բաներով}
ԿԱՐՈ Է զտել Դե, դուք կարող եք կարգավորել CAN վերահսկիչը, որպեսզի մերժի բոլոր հաղորդագրությունները, որոնք չեն համապատասխանում ֆիլտրին, որպեսզի ծրագրակազմը ժամանակ չկորցնի այն հաղորդագրությունների վրա, որոնք մեզ չեն հետաքրքրում:
անստորագիր երկար դիմակ = 0x1fffffff; // Ներառեք բոլոր 29 վերնագրի բիթերը դիմակի մեջ
անստորագիր երկար ֆիլտրԻդ = 0x0400066; // Մեզ միայն հետաքրքրում է այս CAN հաղորդագրության id m_can.init_Mask (0, CAN_EXTID, դիմակ); // Դիմակ 0-ը վերաբերում է 0-1 զտիչին m_can.init_Mask (1, CAN_EXTID, դիմակ); // Դիմակ 1-ը կիրառվում է 2-5 m_can.init_Filt ֆիլտրի համար (0, CAN_EXTID, filterId); m_can.init_Filt (1, CAN_EXTID, filterId); m_can.init_Filt (2, CAN_EXTID, filterId); m_can.init_Filt (3, CAN_EXTID, filterId); m_can.init_Filt (4, CAN_EXTID, filterId); m_can.init_Filt (5, CAN_EXTID, filterId);
Ստուգեք CAN գրադարանի ծածկագիրը և CAN վերահսկիչի փաստաթղթերը ՝ ֆիլտր + դիմակ տեղադրելու ավելի մանրամասն տեղեկությունների համար:
Կարող եք նաև կարգաբերել CAN վերահսկիչը `ընդմիջում բարձրացնելու համար, երբ հաղորդագրություն է ստացվում (որը չի զտվում): (Ներառված չէ վերը նշված օրինակում, բայց իմ ծրագրում դրա համար կա որոշակի ծածկագիր): Այս դեպքում այն իրականում որևէ արժեք չի ավելացնում և կարող է շփոթեցուցիչ լինել, եթե դուք սովոր չեք ծրագրավորմանը:
Այսպիսով, դա ծրագրաշարի նախատիպն էր ամփոփում: Բայց մեզ անհրաժեշտ է նաև կոդ սիմուլյատորի տախտակի համար.
lastSentTime = 0
minDelayTime = 70 setup () {կարգավորել A0-A5 կապերը որպես ելքային կապեր, կարգավորել D4-D7 կապերը ՝ որպես ներածական ներքին քաշիչով մուտքագրման կապում: init CAN} loop () {send "junk" can msg set activeButton = none for each button {if button is pressed {set activeButton = button}} if activeButton! = none {if now> lastSentTime + minDelayTime {send button command can message } set lastSentTime = now} inval = կարդալ A7 կապը foreach (cmd) {if (min <inval <max) {led on} else {led off}} սպասել 1 ms}
Սա անընդհատ կուղարկի «անպիտան» CAN հաղորդագրություններ մոտավորապես յուրաքանչյուր ms, իսկ մինչ կոճակը սեղմվում է համապատասխան հրամանը `յուրաքանչյուր 70 ms:
Հնարավոր է, անհրաժեշտ լինի մուտքագրել մուտքագրումը A7 կապում ՝ տարբեր կոճակներ սեղմելիս ՝ յուրաքանչյուր կոճակին պատկանող նվազագույն և առավելագույն փոփոխականների համար համապատասխան արժեքներ պարզելու համար: (Կամ կարող եք հաշվարկել այն, բայց իրականում մուտքագրումը կարդալը ձեզ ավելի ճշգրիտ արժեքներ կտա):
Պին ռեժիմները ծրագրավորելիս պետք է մի փոքր զգույշ լինել: Եթե դուք պատահաբար սահմանեք այն կապում, որը նախատեսված է օգտագործել ներքին քաշքշուկը որպես ելքային կապում, ապա կստեղծեք պոտենցիալ դյուրանցում, որը կվնասի ձեր Arduino- ն, երբ ելքը բարձր դնեք:
Եթե ցանկանում եք ստուգել իմ ծրագրերը, դրանք կարող եք ներբեռնել այստեղ ՝
- CAN հաղորդագրությունների գրանցման ծրագիր
- Theրագիր սիմուլյատորի տախտակի համար
- Նախատիպի / վերջնական տախտակի ծրագիր
Դուք պետք է տեղյակ լինեք, որ այդ ծրագրերն իրականում չեն համընկնում այստեղի կեղծ կոդի հետ, դրանք պարունակում են շատ «լրացուցիչ» նյութեր, որոնք իրականում անհրաժեշտ չեն, և եթե ծանոթ չեք օբյեկտիվ կողմնորոշված ծրագրավորմանը, հավանաբար մի փոքր դժվար կլինի կարդալ.
Քայլ 7: Վերջնական սարքավորում
Երբ գոհ եք ձեր ծրագրից (հիշեք, որ նախատիպը մեքենայում փորձարկեք սիմուլյատորի տախտակով վերջնական փորձարկումից հետո) ժամանակն է կառուցել իրական սարքավորում:
Այստեղ դուք ունեք երեք տարբերակ.
- Արագ և կեղտոտ - միացրեք իրերը միասին PCB- ի նախատիպի տախտակի վրա:
- Hardcore DIY - փորագրեք ձեր սեփական PCB- ն:
- Theույլ միջոց - պատվիրեք պրոֆեսիոնալ PCB ՝ բաղադրիչները միացնելու համար:
Եթե չեք շտապում, կարող եմ խորհուրդ տալ վերջին տարբերակը: Եթե Ձեզ անհրաժեշտ է միայն այսպիսի փոքր PCB, ապա Չինաստանից պատվիրելը շատ էժան է: (Եվ ապա, հավանաբար, դուք կստանաք տասը կտոր կամ մոտավորապես այնպես, որ կարողանաք թույլ տալ զոդման որոշ սխալներ):
PCB- ներ պատվիրելու համար հարկավոր է ուղարկել ձեր դիզայնը Gerber ձևաչափով: Դրա համար կան տարբեր ծրագրային ապահովումներ: Ես օգտագործեցի Eagle- ը, որը կարող եմ խորհուրդ տալ: Դուք կարող եք ակնկալել մի քանի ժամ այն սովորելու համար, բայց հետո այն լավ է աշխատում: Նման փոքր տախտակների համար կարող եք օգտագործել անվճար:
Theգույշ եղեք դիզայն պատրաստելիս: Չեք ուզում չորս շաբաթ սպասել առաքման ՝ պարզելու համար, որ սխալ եք արել:
(Եթե դուք ունեք լավ զոդման հմտություններ, կարող եք նախագծել մակերեսին ամրացված բաղադրիչների համար և ստանալ իսկապես փոքր ադապտեր: Ես դա չեմ արել):
Ապա պատվիրեք օրինակ ՝ https://www.seeedstudio.com/fusion_pcb.html: Հետևեք հրահանգներին, թե ինչպես ձևավորել Gerber ֆայլերը ձեր դիզայնից: Կարող եք նաև ստանալ արդյունքի նախադիտում `ապահովելու համար, որ այն նորմալ է:
(Ի վերջո, ես պետք է ընտրեի այլ դիմադրիչներ R4-R7- ի համար, քան ներկայացված են սխեմատիկ պատկերում: Փոխարենը ես օգտագործեցի 2k, 4.7k, 6.8k և 14.7k):
Եվ հիշեք. Մի շփոթեք Atmega կապի համարակալումը Arduino կապի համարակալման հետ:
Ես խորհուրդ եմ տալիս ուղղակիորեն չկպչել Atmega չիպը, այլ օգտագործել վարդակից: Այնուհետև կարող եք հեշտությամբ հեռացնել այն այն դեպքում, երբ այն նորից ծրագրավորելու կարիք ունենաք:
Քայլ 8: Մեքենայի տեղադրում
Հիմա ամենահետաքրքիր հատվածին `տեղադրեք այն ձեր մեքենայի մեջ և սկսեք օգտագործել այն: (Դրա համար պատյան պատրաստելուց / գնելուց հետո):
Եթե դուք արդեն ամբողջությամբ փորձարկել եք ձեր մեքենայի նախատիպը, ապա ամեն ինչ պետք է կատարյալ աշխատի:
(Ինչպես նշեցի ավելի վաղ, ես դա չեմ արել, ես ստիպված էի փոխարինել որոշ ռեզիստորներ և որոշ փոփոխություններ կատարել իմ ծրագրում):
Նաև հաշվի առեք, արդյոք այն պետք է տեղադրեք ստերեոյի հետևում, թե այլուր: Ես գտա մի լավ տեղ իմ ձեռնոցների տուփի վերևում, որտեղ ես կարող եմ հասնել ձեռնոցի տուփի ներսից ՝ առանց որևէ բան առանձնացնելու: Դա կարող է օգտակար լինել, եթե որոշեմ ավելի ուշ բարելավել այն:
Վերջապես, իմ կոճակները կրկին աշխատում են: Ինչպե՞ս կարող էի գոյատևել երկու ամիս առանց նրանց:
Քայլ 9. Ապագա բարելավումներ
Ինչպես նշվեց, եթե ես պատրաստեմ դրա 2.0 տարբերակը, ես ավելի մեծ ճկունության համար 4066B- ը կփոխարինեմ այլ բանով (հավանաբար թվային պոտենցիոմետր):
Կան նաև շատ այլ բաներ, որոնք կարող եք անել: Օրինակ ՝ ավելացրեք bluetooth մոդուլ և ստեղծեք հեռախոսի կառավարման ծրագիր ձեր հեռախոսի համար: Կամ GPS մոդուլ, այնուհետև, երբ մոտ եք տանը, կարող եք ինքնաբերաբար բարձրացնել ձայնը և ուղարկել «ներքևի պատուհանները» CAN հաղորդագրությունը, որպեսզի ձեր բոլոր հարևանները կարողանան վայելել ձեր հիանալի երաժշտությունը:
Խորհուրդ ենք տալիս:
Ինչպես տեղադրել հետվաճառքի ենթավուֆեր ձեր մեքենայում գործարանային ստերեոով. 8 քայլ
Ինչպես տեղադրել գործարանային ստերեոով ձեր մեքենայում հետվաճառքի ենթավոֆեր. Այս հրահանգներով դուք կկարողանաք տեղադրել հետվաճառքի ենթավուֆեր գործարանային ստերեո ունեցող գրեթե ցանկացած մեքենայի մեջ:
Ինչպես շտկել հեռուստատեսության հեռակառավարման կոճակները `5 քայլ
Ինչպես շտկել հեռակառավարման կոճակները. Հեռուստատեսության հեռակառավարման վահանակի որոշ կոճակներ ժամանակի ընթացքում կարող են մաշվել: Իմ դեպքում դա ալիքի վերևի և ներքևի կոճակներն էին: Կոճակի ներքևի կոնտակտները, ամենայն հավանականությամբ, մաշված են: Այսպես ամրագրեցի իմը
Մենյու Arduino- ում և ինչպես օգտագործել կոճակները. 10 քայլ (նկարներով)
Arduino- ի ընտրացանկ և ինչպես օգտագործել կոճակները. Իմ Arduino 101 ձեռնարկում ձեզ կսովորեցնեն, թե ինչպես ստեղծել ձեր միջավայրը Tinkercad- ում: Ես օգտագործում եմ Tinkercad- ը, քանի որ այն բավականին հզոր առցանց հարթակ է, որն ինձ թույլ է տալիս մի շարք հմտություններ ցուցադրել ուսանողներին `սխեմաներ կառուցելու համար: Ազատ զգացեք
Arduino- ի RC մեքենայի կառավարման նոր միջոց. 7 քայլ (նկարներով)
Arduino- ի RC մեքենայի կառավարման նոր միջոց. Ես որոշակի աշխատանք եմ կատարել Arduino- ի վերահսկվող մեքենաների հետ, բայց այն մեքենաները, որոնց վրա ես աշխատել եմ, միշտ եղել են դանդաղ և մեթոդական: Արդուինո սովորելիս սա հիանալի է, բայց ես ուզում էի մի փոքր ավելի զվարճալի բան ունենալ: Մուտքագրեք RC մեքենան: RC մեքենաները բառացիորեն նախագծված են որպես
Ինչպես ստանալ երաժշտություն Գրեթե (ԱՆԿԱԱ Ha (Haha) կայքից (քանի դեռ կարող եք լսել, կարող եք այն ձեռք բերել Լավ, եթե այն տեղադրված է ֆլեշում, հնարավոր է ՝ չկարողանաք) Խմբագրված !!!!! Ավելացված տեղեկատվություն. 4 քայլ
Ինչպես ստանալ երաժշտություն Գրեթե (ԱՆԿԱԱ Ha (Haha) կայքից (քանի դեռ կարող եք լսել, կարող եք այն ձեռք բերել … Լավ, եթե այն տեղադրված է ֆլեշում, հնարավոր է, որ չկարողանաք) Խմբագրվել է !!!!! Ավելացված տեղեկատվություն. Եթե երբևէ այցելում եք որևէ կայք և այն նվագում է այն երգը, որը ձեզ դուր է գալիս և ցանկանում եք, ապա այստեղ ձեզ ուսուցանվում է ոչ իմ մեղքը, եթե ինչ -որ բան խառնեք (միակ ճանապարհը դա կլինի, եթե առանց պատճառի սկսեք ջնջել իրերը ) կարողացել եմ երաժշտություն ստանալ