Բովանդակություն:
- Քայլ 1: Քայլ 1. Կառուցեք ձեր բազային ռոբոտը
- Քայլ 2: Քայլ 2. Գտեք և պատվիրեք ձեր OLED էկրանը
- Քայլ 3. Քայլ 3. Միացրեք OLED- ը Arduino Nano- ին
- Քայլ 4: Քայլ 4. Փորձարկեք ձեր ցուցադրումը
- Քայլ 5: Քայլ 5. Ավելացրեք ձեր OLED- ը ռոբոտին
- Քայլ 6: Քայլ 6: Displayուցադրել ռոբոտի պարամետրերը
- Քայլ 7: Քայլ 7: Նկարեք որոշ դեմքեր:
- Քայլ 8: Քայլ 8: Անհատականացրեք
Video: FaceBot: 8 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:45
Այս ուղեցույցը ցույց կտա ձեզ, թե ինչպես ստեղծել էժան (39 դոլար) բախումից խուսափող ռոբոտ ՝ տառատեսակի վրա դեմքով: Մենք դա անում ենք ՝ օգտագործելով նոր ցածրարժեք, պայծառ OLED էկրան: Մեր ուսանողները սիրում են դեմքեր ավելացնել իրենց ռոբոտներին: Նրանք սիրում են նկարել ժպտերես դեմքեր, որոնք փոխվում են ՝ կախված ռոբոտի արածից:
Կան մի քանի փոքր էժան ռոբոտներ, որոնք մատչելի են մինչև $ 25, որոնք թույլ են տալիս սովորեցնել համակարգչային գիտության հիմունքները: Այս ռոբոտների խնդիրներից մեկն այն է, որ նրանք չեն ապահովում թափանցիկություն, թե ինչ է կատարվում ռոբոտի ներսում, երբ դուք այն կառուցում եք: 2018-ին ամեն ինչ սկսեց փոխվել ՝ ցածրարժեք բարձրորակ OLED էկրանների առկայությամբ: Այս ցուցադրումներն ունեն հետևյալ առավելությունները.
- Նրանք շատ պայծառ են և ունեն բարձր հակադրություն: Նույնիսկ լուսավոր սենյակում դրանք հեշտ է կարդալ բազմաթիվ տեսանկյուններից:
- Նրանք լավ լուծում ունեն: Նրանք, որոնք ես օգտագործում եմ, 168x64 պիքսել են: Սա գրեթե 4 անգամ գերազանցում է մեր օգտագործած ցուցադրումները:
- Նրանք ցածր էներգիա ունեն և աշխատում են հետևողականորեն նույնիսկ այն ժամանակ, երբ ձեր ռոբոտի հզորությունը նվազում է:
- Նրանք համեմատաբար ցածր գնով են (յուրաքանչյուրը մոտ $ 16), և գները նվազում են:
Նախկինում դրանք դժվար էր ծրագրավորվել և չափազանց շատ հիշողություն էին օգտագործում, որպեսզի դրանք օգտագործվեին ցածրարժեք Arduino Nanos- ով: Nano- ն ունի միայն 2K կամ դինամիկ RAM: Այս ուղեցույցը ցույց կտա ձեզ, թե ինչպես աշխատել այս խնդիրների շուրջ և ստեղծել ռոբոտ, որը երեխաները սիրում են ծրագրավորել:
Քայլ 1: Քայլ 1. Կառուցեք ձեր բազային ռոբոտը
FaceBot կառուցելու համար մենք սովորաբար սկսում ենք բազային ռոբոտից: Օրինակներից մեկը 25 դոլար արժողությամբ CoderDojo ռոբոտն է, որը նկարագրված է այստեղ: Այս ռոբոտը օգտագործում է էժան և հանրաճանաչ Arduino Nano- ն ՝ պարզ շարժիչի վերահսկիչ, 2 DC շարժիչ և 4 կամ 6 AA մարտկոց: Ուսանողների մեծ մասը սկսում է օգտագործել պինգ -սենսորը `բախումներից խուսափող ռոբոտ կառուցելու համար: Քանի որ այն ապահովում է 5 վ էներգահամակարգ, այն կատարյալ է FaceBot- ի համար: Costsախսերը ցածր պահելու համար ես սովորաբար իմ ուսանողներին պատվիրում եմ մասերը առցանց պատվիրել e-Bay- ից: Մասերի հաճախ գալը տևում է 2-3 շաբաթ և պահանջում է փոքր քանակությամբ զոդում շարժիչների և հոսանքի անջատիչի համար: Մնացած միացումները կատարվում են 400 փողկապով գրատախտակի միջոցով: Ուսանողները հաճախ տաք սոսնձում են լարերը, որպեսզի դրանք չսահեն:
Կա մեկ փոփոխություն, որը մենք կատարում ենք բախումներից խուսափելու ստանդարտ նախագծում: Պինգի սենսորը մենք շասսիի վերևից տեղափոխում ենք շասսիի տակ: Սա ռոբոտի վերևում ցուցադրման համար տեղ է թողնում:
Բախումներից խուսափելու ծրագրավորումն ավարտելուց հետո ձեզ կարդում են ՝ դեմք ավելացնելու համար:
Քայլ 2: Քայլ 2. Գտեք և պատվիրեք ձեր OLED էկրանը
Երբ դուրս եկան OLED էկրաններ, ցածր գնով ցուցադրվողները նախատեսված էին ժամացույցների կամ ֆիտնեսի մոնիտորների համար: Արդյունքում դրանք փոքր էին, սովորաբար մոտ 1 դյույմ լայնությամբ: Լավ նորությունն այն է, որ դրանք էժան էին ՝ մոտ 3 դոլար: Այս դիսփլեյներով մենք մի քանի ռոբոտ ստեղծեցինք, բայց քանի որ ցուցադրման չափը սահմանափակ էր, այն, ինչ մենք կարող էինք անել էկրանին: Այնուհետև 2018 -ին մենք սկսեցինք տեսնել, որ ավելի մեծ 2.42 դյույմանոց OLED էկրանների արժեքը թանկանում է: 2019 թվականի հունվարին գները իջնում են մինչև $ 16: Վերջապես մենք ունեցանք հիանալի ցուցադրում, որը կարող էինք օգտագործել մեր ռոբոտների դեմքերի համար:
Ահա այս ցուցադրումների բնութագրերը.
- 2.42 դյույմ (անկյունագծային չափում)
- 128 պիքսել լայնությամբ (x- հարթություն)
- 64 պիքսել բարձր (y- հարթություն)
- Lowածր էներգիա (սովորաբար 10 մ)
- Մոնոխրոմ (դրանք գալիս են դեղին, կանաչ, կապույտ և սպիտակ)
- Կանխադրված SPI ինտերֆեյս, չնայած ցանկության դեպքում այն կարող եք փոխել I2C- ի
- SSD1309 վարորդ (շատ տարածված ցուցադրման վարորդ)
SPI ինտերֆեյսը ունի յոթ լար: Ահա ինտերֆեյսի բնորոշ պիտակները.
- CS - Չիպի ընտրություն
- DC - Տվյալներ/հրաման
- RES - Վերագործարկեք
- SDA - Տվյալներ. Սա պետք է միացված լինի Arduino Nano քորոց 11 -ին
- SCL - ockամացույց - սա պետք է միացված լինի Arduino Nano կապին 13 -ին
- VCC - +5 վոլտ
- GND - գետնին
Դուք նաև պետք է ունենաք մետաղալար ՝ էկրանը միացման սեղանին միացնելու համար: Սովորաբար էկրանները գալիս են 7 փին վերնագրով, որը դուք կպցնում եք էկրանին: Ես օգտագործեցի 7 մկկ Dupont միկրո և տղամարդու 7 միակցիչներ և դրանք զոդեցի այնպես, որ լարերը դուրս եկան էկրանի հետևի մասից:
Քայլ 3. Քայլ 3. Միացրեք OLED- ը Arduino Nano- ին
Այժմ դուք պատրաստ եք փորձարկել ձեր OLED- ը: Ես օգտագործում եմ մեկ այլ Arduino Nano պարզապես այն ստուգելու համար, որ յուրաքանչյուր ցուցադրում աշխատում է: Երբ թեստերն աշխատում են, ես այն միացնում եմ ռոբոտին: Փորձարկիչի միացման սխեման ցուցադրված է վերևի նկարում: Նկատի ունեցեք, որ OLED կապերը կարող եք տեղափոխել թվային ելքերն ապահովող այլ կապերի, բայց եթե համոզվեք, որ SCL (ժամացույցը) Arduino Nano pin 13 -ի վրա է, իսկ SDA- ն (տվյալները) Arduino Nano pin 11 -ի վրա, կարող եք օգտագործել լռելյայն կարգավորումները: ծրագրային ապահովումը: Սա ձեր ծածկագիրը մի փոքր ավելի պարզ է պահում:
Քայլ 4: Քայլ 4. Փորձարկեք ձեր ցուցադրումը
Ձեր էկրանը ստուգելու համար մենք կօգտագործենք u8g2 գրադարանը: Կան այլ գրադարաններ, որոնք կարող եք օգտագործել, բայց իմ փորձից պարզ է, որ դրանցից ոչ մեկն այնքան էլ լավ չէ u8g2 գրադարանում: Կրիտիկական գործոնն այն է, թե Arduino- ի ներսում RAM- ն որքան է օգտագործվում էկրանի կողմից: U8g2- ը իմ գտած միակ գրադարանն է, որն օգտագործում է «Էջի ռեժիմ», որը կաշխատի Arduino Nano- ի հետ:
Դուք կարող եք ավելացնել այս գրադարանը ձեր Arduino IED- ին ՝ «u8g2» - ը որոնելով «Կառավարեք գրադարանները» ցանկում: Դուք կարող եք նաև ներբեռնել կոդը անմիջապես gethub- ից:
github.com/olikraus/u8g2
Թեստի կոդը, որը ես օգտագործում եմ, այստեղ է.
github.com/dmccreary/coderdojo-robots/blob…
Պետք է նշել մի քանի բան: SCL և SDA կապի համարները մեկնաբանվում են, քանի որ դրանք Nano- ի կանխադրված կապերն են: U8g2- ի կոնստրուկտորը հիմնական տողն է.
// Մենք օգտագործում ենք SSD1306, 128x64, մեկ էջ, անանուն, 4 մետաղալար, Սարքաշար, SPI առանց ռոտացիայի, որն օգտագործում է դինամիկ հիշողության միայն 27% U8G2_SSD1306_128X64_NONAME_1_4W_HW_SPI u8g2 (U8G2_R0, CS_PIN, DC_PIN), RDS_
Մենք օգտագործում ենք մեկ էջի ռեժիմ, քանի որ այդ ռեժիմը օգտագործում է նվազագույն RAM: Մենք օգտագործում ենք 4 լարային ապարատային ինտերֆեյս, և OLED- ը լռելյայն գալիս է SPI- ով:
Քայլ 5: Քայլ 5. Ավելացրեք ձեր OLED- ը ռոբոտին
Այժմ, երբ մենք ունենք աշխատող OLED և գիտենք, թե ինչպես նախաստորագրել u8g2 գրադարանները, մենք պատրաստ ենք ինտեգրել OLED- ը մեր բազային ռոբոտի հետ: Պետք է հաշվի առնել մի քանի բան: Մեր OLED թեստում մենք օգտագործեցինք կապերը, որոնք բոլորը կողք կողքի էին `լարերի լարումը հեշտացնելու համար: Unfortunatelyավոք, մեր Robot- ը վարելու համար մեզ անհրաժեշտ է 9 կապը, քանի որ այն PWM կապումներից մեկն է, որը մենք պետք է անալոգային ազդանշան ուղարկենք շարժիչի վարորդին: Լուծումը կայանում է նրանում, որ 9-րդ կապում տեղադրված մետաղալարն տեղափոխվում է մեկ այլ ազատ քորոց, այնուհետև #define հայտարարությունը փոխվում է այդ նոր քորոցի: OLED- ը ռոբոտի առջևի մասում տեղադրելու համար պլեքսիգլասից կտրեցի երկու եռանկյուն կտոր և տաք սոսնձված: դրանք դեպի շասսի: Ես միշտ սիրում եմ օգտագործել հղկաթուղթ ՝ պլեքսիգլասի մակերեսը կոպիտ կոտրելու համար, նախքան մասերը տաք սոսնձելով, որպեսզի դրանք շատ հեշտ չբաժանվեն:
Հաջորդը, եկեք որոշ տվյալներ ստանանք մեր OLED- ի մասին և որոշ դեմքեր նկարենք ռոբոտի վրա:
Քայլ 6: Քայլ 6: Displayուցադրել ռոբոտի պարամետրերը
Aուցասարք ունենալն այն է, որ այն իսկապես օգնում է կարգաբերել այն, ինչ կատարվում է մեր ռոբոտի ներսում, երբ այն շրջում է: Հազվագյուտ դեպք չէ, որ ծրագրավորողները աշխատեն աշխատասեղանի վրա, երբ միացված եք ձեր համակարգչին, որպեսզի այն չաշխատի, երբ ռոբոտը շրջում է: Ռոբոտի պարամետրը ցուցադրելու լավ օրինակ է այնպիսի արժեքի ցուցադրումը, ինչպիսին է պինգ սենսորով չափվող հեռավորությունը:
Վերևի լուսանկարում առաջին տողը (Echo Time) ցույց է տալիս ուշացման ժամանակը, երբ ձայնը հեռանում է ուլտրաձայնային բարձրախոսից և խոսափողի կողմից ստացված ժամանակի միջև: Այս թիվը այնուհետև երկրորդ տողում վերածվում է սանտիմետրի (Հեռավորությունը սմ -ով): Հաշվիչը թարմացվում է որոնման երկրորդ փուլում `ցույց տալու համար, որ ցուցադրումը թարմացվում է: «Շրջվելը …» ցուցադրվում է միայն այն դեպքում, երբ հեռավորությունը որոշակի թվից ցածր է, որը կոչվում է շրջադարձի շեմ: Երկու անիվներն էլ առաջ են շարժվում, եթե պինգի հեռավորությունը այս թվից բարձր է: Եթե թիվը շրջադարձի շեմից ցածր է, ապա մենք շրջում ենք շարժիչները (պահուստավորում), ապա փոխում ուղղությունը:
Ահա մի քանի նմուշի կոդ, որը ցույց է տալիս, թե ինչպես կարելի է վերցնել ping սենսորից ստացված արժեքները և ցուցադրել դրանք OLED էկրանին:
Ահա մի օրինակ, որը ստուգում է երեք պինգ սենսոր (ձախ, կենտրոն և աջ) և ցույց է տալիս էկրանի արժեքները.
github.com/dmccreary/coderdojo-robots/blob…
Քայլ 7: Քայլ 7: Նկարեք որոշ դեմքեր:
Այժմ մենք ունենք բոլոր կտորները ՝ որոշ դեմքեր նկարելու համար: Մեր ուսանողները սովորաբար կարծում են, որ ռոբոտը պետք է ուրախ դեմք ունենա, եթե առաջ է շարժվում: Երբ նա տեսնում է ինչ -որ բան իր առջև, գրանցում է զարմանքի զգացում: Այնուհետև այն հետ է կանգնում և նայում շուրջը, գուցե աչքերը շարժվում են ՝ ազդանշան տալով, թե ինչ ուղղությամբ է այն շրջվելու:
Դեմք նկարելու գծագրման հրամանը բավականին պարզ է: Մենք կարող ենք շրջանագծել դեմքի ուրվագծի համար և շրջանակներ լրացնել յուրաքանչյուր աչքի համար: Theպիտի համար բերանը կարող է լինել կես շրջան, իսկ անակնկալի զգացման համար `կլոր շրջան: Սա այն վայրն է, որտեղ երեխաները կարող են օգտագործել իրենց ստեղծագործությունը `արտահայտություններն անհատականացնելու համար: Երբեմն միտումնավոր նկարում եմ վատ դեմքեր և խնդրում ուսանողներին օգնել ինձ դրանք ավելի լավը դարձնելու համար:
Theուցադրման չափը ստանալու համար կարող եք օգտագործել display.height () և display.width () գործառույթները: Ստորև բերված ծածկագրում մենք ստեղծում ենք փոփոխականներ
half_width = display.width ()/2; half_height = display.height ()/2;
Եթե դուք կատարում եք այս հաշվարկները բազմիցս, ապա ծածկագիրը մի փոքր ավելի արագ կլինի, եթե դրանք հաշվարկվեն մեկ անգամ և պահվեն փոփոխականի մեջ: Ահա մի քանի օրինակ, թե ինչպես է ձանձրալի ուղիղ դեմքը գծված.
// մենք դա անում ենք յուրաքանչյուր օղակի սկզբում
display.clearDisplay (); // նկարել թեթև դեմք backgrounddisplay.fillCircle (half_width, half_height, 31, WHITE); // աջ աչքի մուգ էկրան. fill // ձախ աչք darkdisplay.fillCircle (half_width + 10, display.height ()/3, 4, BLACK); // բերանի ցուցադրման համար գծեք ուղիղ գիծ: գծել (կես_լայն - 10, ցուցադրում: բարձրություն ()/3 * 2, կես_լայնություն + 10, ցուցադրում: բարձրություն ()/3 * 2, ՍԵՎ); // այս տողը ուղարկում է մեր նոր դեմքը OLED էկրանին display.display ();
Քայլ 8: Քայլ 8: Անհատականացրեք
Հիմնական դեմքը նկարելը միայն սկիզբն է: Ուսանողները կարող են ստեղծել բազմաթիվ տատանումներ: Շատ ուսանողներ ավելացրել են մի փոքր բարձրախոս, որը նվագում է հնչերանգներ կամ հնչյուններ, երբ նրանք շարժվում են:
Կարող եք նաև կառուցել ավելի փոքր թեստային ծրագրեր, որոնք կօգնեն ձեր ուսանողներին շարժիչները ճիշտ միացնել: Օրինակ ՝ սլաքը (եռանկյունը) էկրանին կասի ուսանողին, թե ինչ ուղղությամբ պետք է պտտվի անիվը, երբ միացնում եք շարժիչները: Փորձարկման ծրագիրը շրջում է շարժիչային ուղղություններից յուրաքանչյուրով.
- Right Forward
- Աջ հետադարձ
- Ձախ Առաջ
- Ձախ հետադարձ
Յուրաքանչյուր ռեժիմի համար էկրանը թարմացվում է նոր դիսփլեյով ՝ ցույց տալու համար, թե որ անիվը պետք է պտտվի և ինչ ուղղությամբ:
Այդ ծրագրի օրինակն այստեղ է
github.com/dmccreary/coderdojo-robots/blob…
Կան բազմաթիվ լրացուցիչ օրինակներ և ծրագրավորման մանրամասներ CoderDojo Robots GitHub FaceBot էջում:
Կա նաև FaceBot ռոբոտի մի տարբերակ, որը հնարավորություն է տալիս ուսանողներին ուղղակիորեն փոխել էկրանին ՝ բախումից խուսափելու բոլոր պարամետրերը (առաջ արագություն, շրջադարձի հեռավորություն, շրջադարձի ժամանակ, շրջադարձի արագություն): Այս ռոբոտներին «ծրագրավորելու» համար համակարգիչ չի պահանջվում: Այս տարբերակները իդեալական են MakerFairs- ի և միջոցառումների համար, որոնք դուք չեք ցանկանում համակարգիչներ տեղափոխել:
Խնդրում ենք մեզ տեղեկացնել, թե ինչ նոր դեմքերով եք դուք և ձեր ուսանողները հայտնվում:
Շնորհավոր կոդավորում:
Խորհուրդ ենք տալիս:
Arduino մեքենայի հետադարձ կայանման ահազանգման համակարգ - Քայլ առ քայլ: 4 քայլ
Arduino մեքենայի հետադարձ կայանման ահազանգման համակարգ | Քայլ առ քայլ. Այս նախագծում ես նախագծելու եմ մի պարզ Arduino մեքենայի հետադարձ կայանման սենսորային միացում ՝ օգտագործելով Arduino UNO և HC-SR04 ուլտրաձայնային տվիչ: Այս Arduino- ի վրա հիմնված Car Reverse ազդանշանային համակարգը կարող է օգտագործվել ինքնավար նավարկության, ռոբոտների ռանգի և այլ տեսականու համար
Քայլ առ քայլ համակարգչային շենք. 9 քայլ
Քայլ առ քայլ համակարգչի կառուցում. Պարագաներ. Սարքավորումներ. Մայրական համակարգիչ CPU coolerPSU (Էներգամատակարարման միավոր) Պահեստավորում (HDD/SSD) RAMGPU (պարտադիր չէ) Գործ CaseTools: Պտուտակահան ESD ապարանջան/matsthermal paste w/aplikator
Երեք բարձրախոս շղթա -- Քայլ առ քայլ ձեռնարկ ՝ 3 քայլ
Երեք բարձրախոս շղթա || Քայլ առ քայլ ձեռնարկ. Բարձրախոսների սխեման ուժեղացնում է շրջակա միջավայրից ստացված աուդիո ազդանշանները MIC- ում և այն ուղարկում է խոսնակին, որտեղից արտադրվում է ուժեղացված ձայնը:
Քայլ առ քայլ կրթություն ռոբոտաշինության մեջ `հանդերձանքով. 6 քայլ
Քայլ առ քայլ կրթություն ռոբոտաշինության մեջ ՝ հանդերձանքով. Իմ սեփական ռոբոտը կառուցելուց մի քանի ամիս անց (խնդրում եմ անդրադառնալ այս բոլորին), և երկու անգամ մասերի խափանումից հետո, ես որոշեցի մի քայլ հետ գնալ և նորից մտածել իմ մասին ռազմավարություն և ուղղություն: Մի քանի ամսվա փորձը երբեմն շատ հատուցող էր, և
Ձայնային թռիչք Arduino Uno- ի հետ Քայլ առ քայլ (8 քայլ) `8 քայլ
Ձայնային թռիչք Arduino Uno- ի հետ Քայլ առ քայլ (8 քայլ). Ուլտրաձայնային ձայնային փոխարկիչներ L298N Dc կանացի ադապտեր էներգիայի մատակարարում արական dc pin Arduino UNOBreadboard և անալոգային նավահանգիստներ ՝ կոդը փոխարկելու համար (C ++)