Բովանդակություն:
- Քայլ 1: Հիմնական հայեցակարգ
- Քայլ 2: Նյութեր
- Քայլ 3: Էլեկտրոնիկայի փորձարկում
- Քայլ 4. 3D տպագիր և լազերային կտրված կտորների ձևավորում
- Քայլ 5: Հավաքում և էլեկտրագծերի տեղադրում
- Քայլ 6: Կոդավորում. Ամեն ինչ միասին դնել
Video: Կարագի ռոբոտը. Arduino ռոբոտը `գոյություն ունեցող ճգնաժամով. 6 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:49
Այս նախագիծը հիմնված է «Ռիկ և Մորտի» անիմացիոն շարքի վրա: Դրվագներից մեկում Ռիկը պատրաստում է ռոբոտ, որի միակ նպատակը կարագ բերելն է: Որպես Bruface- ի (Բրյուսելի ճարտարագիտական ֆակուլտետ) ուսանողներ մենք ունենք մեխատրոնիկայի նախագծի առաջադրանք, որն է ռոբոտ կառուցել առաջարկվող թեմայի հիման վրա: Այս նախագծի առաջադրանքն է. Պատրաստել ռոբոտ, որը միայն կարագ է մատուցում: Այն կարող է ունենալ էքզիստենցիալ ճգնաժամ: Իհարկե, Ռիկի և Մորտիի դրվագում ռոբոտը բավականին բարդ ռոբոտ է, և որոշ պարզեցումներ պետք է արվեն.
Քանի որ դրա միակ նպատակը կարագ բերելն է, կան ավելի պարզ այլընտրանքներ: Ռոբոտին նայելու և բռնելու կարագը, նախքան այն ճիշտ մարդուն հասցնելը, ռոբոտը կարող է անընդհատ կրել կարագը: Հիմնական գաղափարն, այսպիսով, կարագ պատրաստելն է, որը կարագը տեղափոխում է այնտեղ, որտեղ այն պետք է լինի:
Բացի կարագը տեղափոխելուց, ռոբոտը պետք է իմանա, թե որտեղ պետք է կարագ բերի: Դրվագում Ռիկը օգտագործում է իր ձայնը ՝ ռոբոտին կանչելու և հրամայելու համար: Սա պահանջում է ձայնի ճանաչման թանկարժեք համակարգ և բարդ կլինի: Փոխարենը, սեղանի շուրջ բոլորը ստանում են կոճակ. Այս կոճակն ակտիվացնելուց հետո ռոբոտը կարող է գտնել այս կոճակը և շարժվել դեպի այն:
Նշենք, որ ռոբոտը պետք է կատարի հետևյալ պահանջները.
- Այն պետք է ապահով լինի. Այն պետք է խուսափի խոչընդոտներից և թույլ չտա իրեն ընկնել սեղանից:
- Ռոբոտը պետք է փոքր լինի. Սեղանի վրա տեղերը սահմանափակ են, և ոչ ոք չի ցանկանա ռոբոտ, որը կարագ է մատուցում, բայց իր սեղանի կես չափի է:
- Ռոբոտի աշխատանքը չի կարող կախված լինել սեղանի չափից կամ ձևից, այդ կերպ այն կարող է օգտագործվել տարբեր սեղանների վրա.
- Այն պետք է կարագը հասցնի սեղանին նստած ճիշտ մարդուն:
Քայլ 1: Հիմնական հայեցակարգ
Նախկինում նշված պահանջները կարող են բավարարվել տարբեր տեխնիկայի կիրառմամբ: Այս նախագծում բացատրվում են հիմնական նախագծի վերաբերյալ որոշումները: Մանրամասները, թե ինչպես են այս գաղափարներն իրագործվում, կարող եք գտնել հետևյալ քայլերում:
Իր պարտականությունը կատարելու համար ռոբոտը պետք է շարժվի մինչև նպատակակետը հասնելը: Հաշվի առնելով ռոբոտի կիրառումը ՝ պարզ է, որ «քայլող» շարժման փոխարեն անիվներ օգտագործելն ավելի լավ է այն շարժել: Քանի որ սեղանը հարթ մակերես է, և ռոբոտը չի հասնի շատ մեծ արագությունների, երկու շարժվող անիվ և մեկ պտուտակավոր գնդակը ամենապարզ և ամենահեշտ վերահսկվող լուծումն է: Գործարկված անիվները պետք է աշխատեն երկու շարժիչով: Շարժիչները պետք է ունենան մեծ ոլորող մոմենտ, սակայն դրանք մեծ արագության հասնելու կարիք չունեն, այդ իսկ պատճառով կօգտագործվեն շարունակական servo շարժիչներ: Servo շարժիչների մեկ այլ առավելություն է Arduino- ի հետ օգտագործման պարզությունը:
Խոչընդոտների հայտնաբերումը կարող է իրականացվել ուլտրաձայնային տվիչի միջոցով, որը չափում է հեռավորությունը `կցված սերվո շարժիչին` չափման ուղղությունը ընտրելու համար: Theայրերը կարող են հայտնաբերվել LDR սենսորների միջոցով: LDR տվիչների օգտագործումը կպահանջի սարքի կառուցում, որը պարունակում է ինչպես լուսադիոդային լույս, այնպես էլ LDR սենսոր: LDR սենսորը չափում է անդրադարձվող լույսը և կարող է դիտվել որպես հեռավորության սենսոր: Նույն սկզբունքը գոյություն ունի ինֆրակարմիր լույսի դեպքում: Գոյություն ունեն ինֆրակարմիր հարևանության որոշ տվիչներ, որոնք ունեն թվային ելք ՝ փակ կամ ոչ փակ: Սա հենց այն է, ինչ անհրաժեշտ է ռոբոտին եզրերը հայտնաբերելու համար: Միացնելով երկու եզրային սենսորներ, որոնք տեղադրված են երկու միջատների ալեհավաքների և մեկ գործածված ուլտրաձայնային տվիչի նման, ռոբոտը պետք է կարողանա խուսափել խոչընդոտներից և եզրերից:
Կոճակների հայտնաբերումը կարող է իրականացվել նաև IR տվիչների և լուսադիոդների միջոցով: IR- ի առավելությունն այն է, որ այն անտեսանելի է, ինչը օգտագործումը դարձնում է անհանգստացնող սեղանի մարդկանց համար: Կարող էին օգտագործվել նաև լազերներ, բայց այդ դեպքում լույսը տեսանելի և նաև վտանգավոր կլիներ, երբ ինչ -որ մեկը լազերը մատնում էր ուրիշի աչքին: Բացի այդ, օգտագործողը պետք է ռոբոտի սենսորները թիրախավորի միայն բարակ լազերային ճառագայթով, ինչը բավականին նյարդայնացնող կլինի: Ռոբոտին հագեցնելով երկու IR սենսորներով և կոճակը կառուցելով IR լապտերով, ռոբոտը գիտի, թե որ ուղղությամբ պետք է գնալ ՝ հետևելով IR լույսի ինտենսիվությանը: Երբ կոճակ չկա, ռոբոտը կարող է շրջվել, մինչև լուսադիոդներից մեկը որսա ազդանշանը կոճակներից մեկից:
Կարագը դրվում է ռոբոտի վերևի հատվածում: Այս խցիկը կարող է բաղկացած լինել տուփից և տուփը բացելու համար գործարկվող կափարիչից: Կափարիչը բացելու և ուլտրաձայնային տվիչը տեղափոխելու համար խոչընդոտները սկանավորելու և հայտնաբերելու համար մեզ անհրաժեշտ են երկու շարժիչներ, և այդ նպատակով ոչ շարունակական սերվո շարժիչներն ավելի հարմարեցված են, քանի որ շարժիչները պետք է որոշակի դիրքի անցնեն և պահպանեն այդ դիրքը:
Նախագծի լրացուցիչ առանձնահատկությունը ռոբոտի ձայնով արտաքին միջավայրի հետ փոխազդեցությունն էր: Բզզոցը պարզ է և հարմարեցված այս նպատակների համար, բայց այն չի կարող օգտագործվել ցանկացած ժամանակ, քանի որ կորանտի վիճակահանությունը բարձր է:
Րագրի հիմնական դժվարությունները հիմնված են կոդավորման վրա, քանի որ մեխանիկական մասը բավականին պարզ է: Շատ դեպքեր պետք է հաշվի առնել, որպեսզի ռոբոտը խրված կամ անցանկալի բան չանի: Հիմնական խնդիրները, որոնք մենք պետք է լուծենք, խոչընդոտի պատճառով IR ազդանշանի կորուստն են և կոճակին հասնելուն պես կանգ առնելը:
Քայլ 2: Նյութեր
Մեխանիկական մասեր
-
3D տպիչ և լազերային կտրող մեքենա
- PLA- ն կօգտագործվի 3D տպագրության համար, բայց կարող եք նաև օգտագործել ABS
- 3 մմ կեչու նրբատախտակից պատրաստված ափսեը կօգտագործվի լազերային կտրման համար, քանի որ այն հնարավորություն է տալիս հետագայում հեշտությամբ փոփոխություններ կատարել, պլեքսիգլասը նույնպես կարող է օգտագործվել, բայց ավելի դժվար է այն փոփոխել լազերային կտրումից հետո ՝ առանց քանդելու այն:
-
Հեղույսներ, ընկույզներ, լվացարաններ
Բաղադրիչների մեծ մասը միասին պահվում են ՝ օգտագործելով M3 կոճակի պտուտակներ, լվացարաններ և ընկույզներ, սակայն դրանցից ոմանք պահանջում են M2 կամ M4 պտուտակների հավաքածու: Հեղույսների երկարությունը 8-12 մմ միջակայքում է:
- PCB spacers ՝ 25 մմ և 15 մմ
- 2 Servo շարժիչներ համատեղելի անիվներով
- Որոշ հաստ մետաղական մետաղալարեր ՝ 1-2 մմ տրամագծով
Էլեկտրոնային մասեր
-
Միկրոկոնտրոլեր
1 arduino UNO տախտակ
-
Սերվո շարժիչներ
- 2 Խոշոր սերվո շարժիչներ. Feetech շարունակական 6 կգ 360 աստիճան
- 2 միկրո servo շարժիչ ՝ Feetech FS90
-
Սենսորներ
- 1 Ուլտրաձայնային տվիչ
- 2 IR հարևանության տվիչներ
- 2 IR լուսոդիոդներ
-
Մարտկոցներ
- 1 9V մարտկոցի կրիչ + մարտկոց
- 1 4AA մարտկոցի կրիչ + մարտկոցներ
- 1 9V մարտկոցի տուփ + մարտկոց
-
Լրացուցիչ բաղադրիչներ
- Որոշ ցատկող լարեր, լարեր և զոդման թիթեղներ
- Որոշ դիմադրիչներ
- 1 IR LED
- 3 անջատիչ
- 1 զնգոց
- 1 կոճակ
- 1 Arduino- ից 9V մարտկոցի միակցիչ
Քայլ 3: Էլեկտրոնիկայի փորձարկում
Կոճակի ստեղծում.
Կոճակն ուղղակի պատրաստված է անջատիչի, ինֆրակարմիր LED- ի և 220 Օմ -ի դիմադրության միջոցով, որը սնուցվում է 9 Վ մարտկոցից: Այն տեղադրված է 9 Վ մարտկոցի տուփի մեջ `կոմպակտ և մաքուր դիզայնի համար:
Ինֆրակարմիր ստացողի մոդուլների ստեղծում
Այս մոդուլները պատրաստված են անցքերի միջոցով զոդման տախտակներով, որոնք հետագայում պտուտակներով կցվելու են ռոբոտին: Այս մոդուլների սխեմաները պատկերված են ընդհանուր սխեմաներում: Սկզբունքը կայանում է ինֆրակարմիր լույսի ինտենսիվության չափման մեջ: Չափումները բարելավելու համար կոլիմատորները (պատրաստված են նեղացող խողովակներով) կարող են օգտագործվել հետաքրքրության որոշակի ուղղության վրա կենտրոնանալու համար:
Էլեկտրոնային սարքերի միջոցով անհրաժեշտ է կատարել նախագծի տարբեր պահանջներ: Սարքերի քանակը պետք է սահմանափակվի `համեմատաբար ցածր բարդությունը պահպանելու համար: Այս քայլը պարունակում է էլեկտրագծերի սխեմաներ և յուրաքանչյուր ծածկագիր ՝ բոլոր մասերը առանձին փորձարկելու համար.
- Շարունակական Servo շարժիչներ;
- Ուլտրաձայնային տվիչ;
- Ոչ շարունակական Servo շարժիչներ;
- Buzzer;
- IR կոճակի ուղղության հայտնաբերում;
- Geայրերի հայտնաբերում հարևանության տվիչների միջոցով;
Այս կոդերը կարող են օգնել սկզբում հասկանալ բաղադրիչները, բայց դա նաև շատ օգտակար է հետագա փուլերում կարգաբերման համար: Եթե որոշակի խնդիր է առաջանում, սխալը կարող է ավելի հեշտությամբ հայտնաբերվել ՝ բոլոր բաղադրիչներն առանձին փորձարկելով:
Քայլ 4. 3D տպագիր և լազերային կտրված կտորների ձևավորում
Լազերային կտրված կտորներ
Մոնտաժը կազմված է երեք հիմնական հորիզոնական թիթեղներից, որոնք միացված են PCB- ի անջատիչներով `բաց դիզայն ստանալու համար, անհրաժեշտության դեպքում ապահովելով էլեկտրոնիկայի հեշտ մուտք:
Այդ թիթեղները պետք է կտրված լինեն անհրաժեշտ անցքերով, որպեսզի վերջնական հավաքման համար անջատիչները և այլ բաղադրիչները պտուտակվեն: Հիմնականում բոլոր երեք թիթեղներն ունեն անցքերի միևնույն վայրում ՝ տարանջատիչների համար, իսկ էլեկտրոնիկայի համար հատուկ անցքեր ՝ համապատասխանաբար ամրագրված յուրաքանչյուր ափսեի վրա: Ուշադրություն դարձրեք, որ միջին ափսեն իսկապես ունի անցք մեջտեղում լարերի անցման համար:
Փոքր կտորները կտրված են մեծ սերվոյի չափսերին `դրանք հավաքման վրա ամրացնելու համար:
3D տպագիր կտորներ
Լազերային կտրումից բացի, որոշ կտորներ պետք է 3D տպվեն.
- Ուլտրաձայնային տվիչի աջակցությունը, որն այն կապում է մեկ միկրո սերվո շարժիչի թևի հետ
- Կաստորի անիվի և երկու IR եզրերի տվիչների աջակցությունը: IR սենսորների կտորի տուփի ծայրերի որոշակի դիզայնը գործում է որպես էկրան `խուսափելու համար IR ազդանշան կոճակի և IR սենսորների միջև միջամտություններից, որոնք պետք է կենտրոնանան միայն գետնի վրա կատարվող իրադարձությունների վրա:
- Կափարիչը բացող միկրո servo շարժիչի աջակցությունը
-
Եվ վերջապես, կափարիչն ինքնին, պատրաստված է երկու կտորից, ավելի մեծ աշխատանքային անկյուն ունենալու համար `խուսափելով կափարիչը բացող միկրո սերվո շարժիչի հետ բախումից:
- Ներքևը, որը ամրագրված կլինի վերին ափսեի վրա
- Իսկ վերևը, որը ներքևի մասով կապված է ծխնու միջոցով և գործարկվում է սերվոյի միջոցով ՝ օգտագործելով հաստ մետաղական մետաղալար: Մենք որոշեցինք ռոբոտին մի փոքր անհատականություն հաղորդել ՝ նրան գլուխ տալով:
Երբ բոլոր կտորները նախագծվեն և ֆայլերը արտահանվեն ճիշտ ձևաչափով օգտագործվող մեքենաների համար, կտորներն իրականում կարող են պատրաստվել: Տեղյակ եղեք, որ 3D տպագրությունը շատ ժամանակ է պահանջում, հատկապես կափարիչի վերին հատվածի չափսերով: Ձեզ կարող է անհրաժեշտ լինել մեկ կամ երկու օր ՝ բոլոր կտորները տպելու համար: Լազերային կտրումը, սակայն, ընդամենը րոպեների հարց է:
Բոլոր SOLIDWORKS- ֆայլերը կարելի է գտնել սեղմված թղթապանակում:
Քայլ 5: Հավաքում և էլեկտրագծերի տեղադրում
Մոնտաժը լինելու է էլեկտրագծերի և բաղադրիչների պտուտակման խառնուրդ ՝ սկսած ներքևից վերև:
Ստորին ափսե
Ներքևի ափսեը հավաքված է 4AA մարտկոցի տուփով, servo շարժիչներով, տպագրված մասով (ափսեի տակ ամրացնելով գնդակը), երկու եզրային տվիչներով և 6 արական-իգական անջատիչներով:
Միջին ափսե
Հաջորդը, միջին ափսեը կարող է տեղադրվել ՝ սեղմելով երկու սալերի միջև ընկած սերվո շարժիչները: Այս ափսեն այնուհետև կարող է ամրացվել ՝ դրա վերևում տեղադրելով մեկ այլ անջատիչ: Որոշ մալուխներ կարող են անցնել կենտրոնական անցքով:
Ուլտրաձայնային մոդուլը կարող է կցվել ոչ շարունակական servo- ին, որն ամրացված է միջին ափսեի վրա Arduino- ով, 9 Վ մարտկոցով (աշխատում է arduino- ով) և երկու ինֆրակարմիր ստացողի մոդուլներով `ռոբոտի առջևի մասում: Այս մոդուլները պատրաստվում են անցքերի միջոցով զոդման տախտակներով և ամրացվում պտուտակներով ափսեի վրա: Այս մոդուլների սխեմաները պատկերված են ընդհանուր սխեմաներում:
Վերին ափսե
Հավաքման այս հատվածում անջատիչները ամրագրված չեն, բայց ռոբոտն արդեն կարող է անել ամեն ինչ, բացի կափարիչ պահանջող գործողություններից, ուստի այն մեզ թույլ է տալիս որոշակի թեստ կատարել շեմը շտկելու, շարժման ծածկագիրը հարմարեցնելու և հեշտ մուտք դեպի arduino նավահանգիստներ:
Երբ այս ամենը հասնի, վերին ափսեը կարելի է ամրացնել բացատներով: Վերջին անջատիչները, որոնք երկու անջատիչներն են `կոճակը, սերվոն, ազդանշանը և կափարիչի համակարգը կարող են վերջնականապես ամրացվել վերին ափսեին` հավաքումն ավարտելու համար:
Վերջին բանը, որը պետք է ստուգել և ուղղել, կափարիչը ճիշտ բացելու servo- ի անկյունն է:
Theայրային տվիչների շեմը պետք է հարմարեցվի ներառված պոտենցիոմետրով (հարթ պտուտակահան օգտագործելով) սեղանի տարբեր մակերեսների համար: Սպիտակ սեղանը պետք է ունենա ավելի ցածր շեմ, քան շագանակագույն սեղանը, օրինակ: Սենսորների բարձրությունը նույնպես կազդի անհրաժեշտ շեմի վրա:
Այս քայլի վերջում հավաքն ավարտված է, և վերջին մնացած մասը բաց թողնված կոդերն են:
Քայլ 6: Կոդավորում. Ամեն ինչ միասին դնել
Ռոբոտին աշխատեցնելու համար անհրաժեշտ բոլոր ծածկագրերը գտնվում են սեղմված ֆայլում, որը կարելի է ներբեռնել: Ամենակարևորը «հիմնական» կոդն է, որը ներառում է ռոբոտի կարգավորումը և գործառական օղակը: Մնացած գործառույթների մեծ մասը գրված է ենթաֆայլերում (նաև սեղմված թղթապանակում): Այս ենթաֆայլերը պետք է պահվեն նույն թղթապանակում (որը կոչվում է «հիմնական»), որպես հիմնական սցենար ՝ նախքան Arduino- ում բեռնելը
Սկզբում ռոբոտի ընդհանուր արագությունը որոշվում է «հիշեցում» փոփոխականի հետ միասին: Այս «հիշեցումը» արժեք է, որը հիշում է, թե որ ուղղությամբ էր շրջվում ռոբոտը: Եթե «հիշեցրեք = 1», ռոբոտը թեքվում էր/թեքվում էր ձախ, եթե «հիշեցնում = 2» ՝ ռոբոտը թեքվում էր/թեքվում էր աջ:
int արագություն = 9; // Ռոբոտի ընդհանուր արագությունը
int հիշեցում = 1; // Սկզբնական ուղղություն
Ռոբոտի տեղադրման ընթացքում նախաստորագրվում են ծրագրի տարբեր ենթաֆայլեր: Այս ենթաֆայլերում գրված են շարժիչների, սենսորների և … կառավարման հիմնական գործառույթները: Տեղադրելով դրանք տեղադրման մեջ, այս ֆայլերից յուրաքանչյուրում նկարագրված գործառույթները կարող են օգտագործվել հիմնական հանգույցում: r2D2 () գործառույթը ակտիվացնելով ՝ ռոբոտը աղմուկ կբարձրացնի, ինչպես R2D2 ռոբոտը ՝ «Աստղային պատերազմներ» ֆիլմի արտոնությունից, երբ այն սկսվում է: Այստեղ r2D2 () ֆունկցիան անջատված է, որպեսզի ազդանշանը թույլ չտա շատ հոսանք քաշել:
// Կարգավորում @ վերականգնում // ----------------
void setup () {initialize_IR_sensors (); initialize_obstacles_and_edges (); initialize_movement (); initialize_lid (); initialize_buzzer (); // r2D2 (); int հիշեցում = 1; // նախնական ուղղություն Starter (հիշեցում); }
Սկսնակ (հիշեցում) գործառույթը առաջինը կանչվում է տեղադրման ընթացքում: Այս գործառույթը ստիպում է ռոբոտին շրջվել և փնտրել կոճակներից մեկի IR ազդանշանը: Կոճակը գտնելուց հետո ծրագիրը դուրս կգա Starter գործառույթից ՝ փոփոխելով «cond» փոփոխականը կեղծի: Ռոբոտի պտույտի ընթացքում այն պետք է տեղյակ լինի իր միջավայրի մասին. Այն պետք է հայտնաբերի եզրեր և խոչընդոտներ: Սա ստուգվում է ամեն անգամ, մինչև այն շարունակվի շրջվել: Երբ ռոբոտը հայտնաբերի խոչընդոտ կամ եզր, այդ խոչընդոտներից կամ եզրերից խուսափելու արձանագրությունը կկատարվի: Այս արձանագրությունները հետագայում կբացատրվեն այս քայլին: Starter գործառույթն ունի մեկ փոփոխական, որը հիշեցման փոփոխականն է, որը նախկինում քննարկվել էր: Սկսնակ գործառույթին հիշեցման արժեքը տալով ՝ ռոբոտը գիտի, թե որ ուղղությամբ պետք է շրջվի, որպեսզի փնտրի կոճակը:
// Սկսնակ հանգույց. Շրջվեք և որոնեք կոճակը // ---------------------------------------- ----------------
void Starter (int հիշեցում) {if (isedgeleft () || isedgeright ()) {// Հայտնաբերել եզրերի եզրը Հայտնաբերված (հիշեցում); } else {bool cond = true; while (cond == true) {if (buttonleft () == false && buttonright () == false && isButtonDetected () == true) {cond = false; } else {if (հիշեցում == 1) {// Մենք թեքվում էինք ձախ, եթե (isobstacleleft ()) {stoppeed (); խուսափել_խոչընդոտից (հիշեցնել); } else if (isedgeleft () || isedgeright ()) {// Բացահայտեք եզրերի եզրը Հայտնաբերված (հիշեցում); } else {շրջադարձ (արագություն); }} else if (հիշեցում == 2) {if (isobstacleright ()) {stoppeed (); խուսափել_խոչընդոտից (հիշեցնել); } else if (isedgeleft () || isedgeright ()) {// Բացահայտեք եզրերի եզրը Հայտնաբերված (հիշեցում); } else {turnright (արագություն); }}}}}}
Եթե ռոբոտը գտնի կոճակը, ապա առաջին Starter օղակը դուրս է գալիս և սկսվում է ռոբոտի հիմնական, գործառական օղակը: Այս հիմնական հանգույցը բավականին բարդ է, քանի որ ամեն անգամ ռոբոտը պետք է որոշի ՝ առջևում կա՞ խոչընդոտ կամ եզր: Հիմնական գաղափարն այն է, որ ռոբոտը հետևում է կոճակին ՝ գտնելով այն և ամեն անգամ կորցնելով այն: Երկու IR սենսորների օգտագործմամբ մենք կարող ենք տարբերակել երեք իրավիճակ.
- Ձախ և աջ սենսորով հայտնաբերված IR լույսի միջև տարբերությունը ավելի մեծ է, քան որոշակի շեմը, և կա կոճակ:
- IR լույսի տարբերությունը շեմից փոքր է, և ռոբոտի դիմաց կա կոճակ:
- IR լույսի տարբերությունը շեմից փոքր է, և ռոբոտի դիմաց ՉԿԱ կոճակ:
Հետագծման ռեժիմն աշխատում է հետևյալ կերպ. Երբ կոճակը հայտնաբերվում է, ռոբոտը շարժվում է դեպի կոճակը ՝ պտտվելով նույն ուղղությամբ, որը պտտվում էր (հիշեցման փոփոխականի միջոցով) և միևնույն ժամանակ մի փոքր առաջ շարժվելով: Եթե ռոբոտը շատ հեռու թեքվի, կոճակը նորից կորած կլինի, և այս պահին ռոբոտը հիշում է, որ պետք է շրջվի այլ ուղղությամբ: Սա արվում է նաև մի փոքր առաջ շարժվելիս: Դրանով ռոբոտը անընդհատ թեքվում է ձախ և թեքվում աջ, բայց այդ ընթացքում դեռ առաջ է շարժվում դեպի կոճակը: Ամեն անգամ, երբ ռոբոտը գտնում է կոճակը, այն շարունակում է պտտվել մինչև այն կորցնելը, որի դեպքում սկսում է շարժվել այլ ուղղությամբ: Ուշադրություն դարձրեք գործառույթների տարբերությանը, որոնք օգտագործվում են Starter և հիմնական հանգույցում. «turnleft ()» կամ «turnright ()», մինչդեռ հիմնական հանգույցում օգտագործվում է «moveleft ()» և «moveright ()»: Տեղափոխման ձախ/աջ գործառույթները ոչ միայն ստիպում են ռոբոտին շրջվել, այլև ստիպել նրան առաջ շարժվել միաժամանակ:
/ * Ֆունկցիոնալ հանգույց ---------------------------- Այստեղ կա միայն երթուղու ռեժիմ */
int կորած = 0; // Եթե կորել է = 0 կոճակը գտնվել է, եթե կորել է = 1 կոճակը կորել է void loop () {if (isedgeleft () || isedgeright ()) {
եթե (! isobstacle ()) {
առաջ շարժվել (արագություն); ուշացում (5); } else {խուսափել խոչընդոտներից (հիշեցնել); } else {if (հիշեցում == 1 && կորած == 1) {// Մենք թեքում էինք ձախ կանգառի արագությունը (); եթե (! isobstacleright ()) {շարժունակություն (արագություն); // Շրջվեք ՝ կոճակը գտնելու համար} else {else_ խուսափել_խոչընդոտ (հիշեցնել); } հիշեցնել = 2; } else if (հիշեցնել == 2 && կորցրել == 1) {stoppeed (); եթե (! isobstacleleft ()) {moveleft (արագություն); // Մենք թեքվում էինք աջ} այլապես {խուսափել_խոչընդոտից (հիշեցնել); } հիշեցնել = 1; } else if (կորել է == 0) {եթե (հիշեցնել == 1) {// Մենք թեքվում էինք ձախ, եթե (! isobstacleleft ()) {moveleft (արագություն); // Մենք թեքվում էինք աջ} else {stoppeed (); խուսափել_խոչընդոտից (հիշեցնել); } //} այլ դեպքում (հիշեցում == 2) {եթե (! isobstacleright ()) {շարժունակություն (արագություն); // Շրջվեք, որպեսզի գտնեք կոճակը} else {stoppeed (); խուսափել_խոչընդոտից (հիշեցնել); }}} ուշացում (10); կորած = 0; }} //}}
Այժմ տրվում է երկու ամենաբարդ առօրյայի մի փոքր բացատրություն.
Խուսափեք եզրերից
Եզրերից խուսափելու արձանագրությունը սահմանվում է «edgeDetection ()» կոչվող գործառույթում, որը գրված է «շարժում» ենթաֆայլում: Այս արձանագրությունը հիմնված է այն փաստի վրա, որ ռոբոտը պետք է բախվի միայն եզրին, երբ այն հասնի իր նպատակակետին ՝ կոճակին: Երբ ռոբոտը եզր է հայտնաբերում, առաջին բանը, որ անում է, մի փոքր հետ գնալն է ՝ եզրից անվտանգ հեռավորության վրա գտնվելու համար: Երբ դա արվի, ռոբոտը սպասում է 2 վայրկյան: Եթե ինչ -որ մեկը այդ երկու վայրկյանում սեղմում է ռոբոտի առջևի կոճակը, ռոբոտը գիտի, որ այն հասել է կարագ ցանկացողին, բացում է կարագի հատվածը և ներկայացնում կարագը:Այս պահին ինչ -որ մեկը կարող է կարագ վերցնել ռոբոտից: Մի քանի վայրկյան անց ռոբոտը կհոգնի սպասելուց և պարզապես կփակի կարագի կափարիչը: Կափարիչը փակվելուց հետո ռոբոտը կկատարի Starter օղակը ՝ մեկ այլ կոճակ փնտրելու համար: Եթե պատահի, որ ռոբոտը բախվի եզրին նախքան իր նպատակակետին հասնելը և ռոբոտի առջևի կոճակը չսեղմվի, ապա ռոբոտը չի բացի կարագի կափարիչը և անմիջապես կկատարի Starter օղակը:
Խուսափեք խոչընդոտներից
Evv_obstacle () գործառույթը նույնպես տեղակայված է «շարժում» ենթաֆայլում: Խոչընդոտներից խուսափելու ամենադժվարը այն փաստն է, որ ռոբոտը բավականին մեծ կույր տարածք ունի: Ուլտրաձայնային տվիչը տեղադրված է ռոբոտի առջևում, ինչը նշանակում է, որ այն կարող է խոչընդոտներ հայտնաբերել, սակայն չգիտի, թե երբ է այն փոխանցվում դրան: Դա լուծելու համար օգտագործվում է հետևյալ սկզբունքը. Երբ ռոբոտը հանդիպում է որևէ խոչընդոտի, այն օգտագործում է ռեմինգ փոփոխականը `այլ ուղղությամբ շրջվելու համար: Այս կերպ ռոբոտը խուսափում է խոչընդոտին հարվածելուց: Ռոբոտը շարունակում է պտտվել, մինչև ուլտրաձայնային տվիչը այլևս չբացահայտի խոչընդոտը: Այն ժամանակ, երբ ռոբոտը պտտվում է, հաշվիչը մեծանում է այնքան ժամանակ, մինչև խոչընդոտը այլևս չի հայտնաբերվում: Այս հաշվիչը տալիս է խոչընդոտի երկարության մոտավոր հաշվարկ: Այնուհետև առաջ շարժվելով և միևնույն ժամանակ հաշվիչը նվազեցնելով, խոչընդոտը կարող է խուսափել: Երբ հաշվիչը հասնում է 0 -ի, Starter գործառույթը կարող է կրկին օգտագործվել կոճակը տեղափոխելու համար: Իհարկե, ռոբոտը կատարում է Starter գործառույթը ՝ շրջվելով այն ուղղությամբ, որը նա հիշում էր, որ գնում էր մինչև խոչընդոտի հանդիպելը (կրկին օգտագործելով հիշեցման փոփոխականը):
Այժմ, երբ դուք լիովին հասկանում եք ծածկագիրը, կարող եք սկսել օգտագործել այն:
Համոզվեք, որ շեմերը հարմարեցրեք ձեր միջավայրին (IR արտացոլումն ավելի բարձր է, օրինակ, սպիտակ սեղանների վրա) և տարբեր պարամետրերը հարմարեցրեք ձեր կարիքներին: Բացի այդ, մեծ ուշադրություն պետք է դարձնել տարբեր մոդուլների հզորացմանը: Հիմնական կարևորությունն այն է, որ servo շարժիչները սնուցված չլինեն Arduino 5V պորտով, քանի որ դրանք շատ հոսանք են ընդունում (դա կարող է վնասել միկրոկոնտրոլերը): Եթե սենսորների համար օգտագործվում է էլեկտրաէներգիայի նույն աղբյուրը, ինչպիսին է սերվերը, ապա որոշ չափման խնդիրներ կարող են առաջանալ:
Խորհուրդ ենք տալիս:
WiFi AutoConnect գործառույթի ավելացում գոյություն ունեցող ուրվագծին `3 քայլ
WiFi- ի AutoConnect գործառույթի ավելացում գոյություն ունեցող ուրվագծին. Վերջին գրառման մեջ մենք իմացանք ESP32/ESP8266 տախտակների համար AutoConnect գործառույթի մասին, և տրված հարցերից մեկը վերաբերում էր այն առկա ուրվագծերին ավելացնելուն: Այս գրառման մեջ մենք կսովորենք, թե ինչպես դա անել և կօգտագործենք ցանցային ժամանակի նախագիծը
Arduino անլար ազդանշանային համակարգ `օգտագործելով գոյություն ունեցող սենսորներ. 9 քայլ (նկարներով)
Arduino անլար ահազանգման համակարգ ՝ օգտագործելով գոյություն ունեցող սենսորներ. Այս նախագիծը կարող է կառուցվել մոտ կես ժամում ՝ մոտ 20,00 դոլար արժողությամբ, եթե ունեք 433 ՄՀց կամ 315 ՄՀց անլար ազդանշանային տվիչներ: Այն կարող է նաև ամբողջական նախագիծ լինել անլար ազդանշանային տվիչներով, ինչպիսիք են ինֆրակարմիր շարժման դետեկտորները և եղեգի
Վերազինել լույսերը հեռակառավարմամբ - գոյություն ունեցող պատի անջատիչները շարունակում են աշխատել. 8 քայլ
Հեռակառավարման վահանակների վերազինում - գոյություն ունեցող պատի անջատիչներ Շարունակեք աշխատել. Թարմացրեք 4 -ը հոկտ. 2017 թ. - Տես հեռակառավարվող լուսարձակիչ - վերազինում: Լույսի անջատիչը դեռ աշխատում է, Bluetooth- ի ցածր էներգիայի (BLE) բարելավված տարբերակի համար լրացուցիչ գրություններ չկան: Թարմացվել է 2016 թվականի նոյեմբերի 8 -ին - Թարմացվել է Վերազինված երկրպագուների ժամաչափերի նախագծում կատարված փոփոխություններով:
Գաղտնաբառ պահողը Aruino Pro Micro- ում կամ ինչու՞ այն պարզ պահել, երբ գոյություն ունի մշակված ճանապարհ: 15 քայլ (նկարներով)
Գաղտնաբառ պահողը Aruino Pro Micro- ում կամ ինչու է այն պարզ պահել, երբ գոյություն ունի մշակման ուղին: Թվում է, թե էլեկտրոնիկայի սիրահարների (հատկապես սկսնակների) միկրոկառավարիչների հիմնական խնդիրը պարզելն է, թե որտեղ դրանք կիրառել :) Մեր օրերում էլեկտրոնիկա, հատկապես ՝ թվային , ավելի ու ավելի է նմանվում սև մոգության: Միայն 80 Lvl իմաստուններն են
IOT ծխի դետեկտոր. Թարմացրեք գոյություն ունեցող ծխի դետեկտորը IOT- ով. 6 քայլ (նկարներով)
IOT ծխի դետեկտոր. Թարմացրեք ծխի առկա դետեկտորը IOT- ով. Ներդրողների ցուցակ, գյուտարար. Հուսեյն Օն Մալայզիա. Բաշխում