Բովանդակություն:
- Քայլ 1: Ինչպես է այն աշխատում
- Քայլ 2: Բաղադրիչներ
- Քայլ 3: Մոդուլների միացում
- Քայլ 4: Կոդ
- Քայլ 5: Տվյալների բազա և վեբ էջ
- Քայլ 6: Նավիգացիոն թեստեր
- Քայլ 7: Վերջնական
Video: EWEEDINATOR☠ Մաս 2: Արբանյակային նավարկություն. 7 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:51
Edնվեց Weedinator նավիգացիոն համակարգը:
Թափառող գյուղատնտեսական ռոբոտ, որը կարող է կառավարվել խելացի հեռախոսով:
… Եվ ոչ թե պարզապես միաձուլման սովորական գործընթացի միջով անցնելը, ես մտածեցի, որ կփորձեմ բացատրել, թե ինչպես է այն իրականում աշխատում `ակնհայտորեն ոչ ամեն ինչ, այլ ամենակարևոր և հետաքրքիր բիթերը: Խնդրում եմ ներեցեք բառախաղը, բայց դա այն է, թե ինչպես են տվյալները հոսում առանձին մոդուլների միջև, որոնք ինձ հետաքրքրում են և բաժանվում են ամենացածր հայտարարի: Եթե ձեզ երբևէ շփոթել են բիթերի, բայթերի, կերպարների և տողերի շուրջ, ապա հիմա գուցե ժամանակն է՞, որ չշփոթվեք: Ես նաև փորձելու եմ շփոթեցնել մի փոքր վերացական հասկացություն, որը կոչվում է «Սխալի չեղարկում»:
Համակարգն ինքնին առանձնանում է.
- GPS/GNSS: Ublox C94 M8M (Rover և Base)
- 9DOF Razor IMU MO թվային կողմնացույց
- Fona 800H 2G GPRS բջջային
- 2.2 "TFT էկրան
- Arduino Due «Վարպետ»
- Տարբեր Arduino «ստրուկներ»:
Տարօրինակ է, որ շատ Sat Navs- եր չունեն թվային կողմնացույց, ինչը նշանակում է, որ եթե դուք գտնվում եք անշարժ և մոլորված, դուք պետք է քայլեք կամ քշեք որևէ պատահական ուղղությամբ, մինչև որ սարքը ձեզ ցույց տա արբանյակների ճիշտ ուղղությունը: Եթե դուք կորչում եք հաստ ջունգլիներում կամ ստորգետնյա ավտոկայանում, ապա լցոնված եք:
Քայլ 1: Ինչպես է այն աշխատում
Ներկայումս խելացի հեռախոսից կամ համակարգչից բեռնվում է մի զույգ կոորդինատ, որը այնուհետև ներբեռնում է Weedinator- ը: Այնուհետև դրանք մեկնաբանվում են որպես վերնագիր աստիճաններով և մմ -ով ճանապարհորդելու հեռավորությամբ:
GPRS ֆոնան օգտագործվում է 2G բջջային ցանցի միջոցով առցանց տվյալների բազա մուտք գործելու և Arduino Nano- ի միջոցով կոորդինատները ստանալու և փոխանցելու Arduino Due- ին: The due- ն Վարպետն է և վերահսկում է Arduinos- ի այլ տեսականի ՝ որպես ստրուկներ I2C և սերիական ավտոբուսների միջոցով: The Due- ն կարող է փոխազդել Ublox- ի և Razor- ի կենդանի տվյալների հետ և ցուցադրել վերնագիր, որը հաշվարկված է իր Arduino ստրուկներից մեկի կողմից:
Ublox արբանյակային որոնիչը հատկապես խելացի է, քանի որ այն օգտագործում է սխալների չեղարկում `շատ ճշգրիտ շտկումներ ստանալու համար` վերջնական անվանական ընդհանուր շեղում `մոտ 40 մմ: Մոդուլը կազմված է միանման զույգից, որոնցից մեկը ՝ «ռովերը», շարժվում է մոլախոտի հետ, իսկ մյուսը ՝ «հիմքը» ամրացված է բաց երկնքի տակ գտնվող բևեռի վրա: Սխալների չեղարկումն իրականացվում է այն բանի շնորհիվ, որ ժամանակի ընթացքում մեծ քանակությամբ նմուշներ օգտագործելով `կարող է հասնել իսկապես ճշգրիտ շտկման: Այս նմուշներն այնուհետև միջինացվում են ՝ փոխհատուցելով փոփոխվող մթնոլորտային պայմանները: Եթե սարքը շարժվեր, ակնհայտորեն այն չէր կարողանա ստանալ միջինացվածության որևէ տեսակ և կլիներ փոփոխվող միջավայրի լիակատար ողորմածության ներքո: Այնուամենայնիվ, եթե ստատիկ և շարժվող սարքավորումները միասին աշխատեն, քանի դեռ նրանք կարող են շփվել միմյանց միջև, նրանք կարող են երկուսից էլ օգուտ քաղել: Givenանկացած պահի, բազային միավորը դեռ ունի սխալ, բայց ունի նաև նախկինում հաշվարկված գերճշգրիտ շտկում, որպեսզի կարողանա հաշվարկել իրական սխալը `մյուս կոորդինատները հանելով: Այնուհետև հաշվարկված սխալը ռովեր է ուղարկում ռադիոկապի միջոցով, որն այնուհետև սխալը ավելացնում է իր սեփական կոորդինատների վրա: Գործնական առումով, սխալի չեղարկումը տարբերություն է դարձնում 3 մետրից մինչև 40 մմ ընդհանուր շեղման միջև:
Ամբողջական համակարգը կարծես բարդ է, բայց իրականում բավականին հեշտ է կառուցվել `կամ չամրացված ոչ հաղորդիչ մակերևույթի վրա, կամ իմ նախագծած PCB- ի միջոցով, որը թույլ է տալիս բոլոր մոդուլներին ապահով կերպով ամրացնել: Ապագա զարգացումը կառուցված է PCB- ի վրա, ինչը թույլ է տալիս Arduinos- ի հսկայական զանգված ներառել ղեկի, առաջ շարժման և ներկառուցված CNC մեքենայի շարժիչները վերահսկելու համար: Նավիգացիային կօգնի նաև օբյեկտների ճանաչման առնվազն մեկ համակարգ ՝ օգտագործելով տեսախցիկներ ՝ գունավոր առարկաները զգալու համար, օրինակ ՝ լյումինեսցենտ գոլֆի գնդակներ, որոնք զգուշորեն տեղադրված են ինչ -որ ցանցում: Դիտեք այս տարածությունը:
Քայլ 2: Բաղադրիչներ
- Ublox C94 M8M (Rover և Base) x 2 -ից
- 9DOF Razor IMU MO թվային կողմնացույց
- Fona 800H 2G GPRS բջջային 1946 թ
- Arduino Due
- Arduino Nano x 2 -ից
- SparkFun Pro Micro
- Adafruit 2.2 "TFT IL1940C 1480
- PCB (տես կից Gerber ֆայլերը) x 2 -ից
- 1206 SMD զրոյական օմ դիմադրություններ x 12 -ից
- 1206 լուսադիոդ x 24 հատ
PCB ֆայլը բացվում է «Design Spark» ծրագրակազմով:
Քայլ 3: Մոդուլների միացում
Սա հեշտ մասն է, հատկապես հեշտ ՝ իմ պատրաստած PCB- ով, պարզապես հետևեք վերևի գծապատկերին: Անհրաժեշտ է խնամք `3v մոդուլների 5V- ին միացումից խուսափելու համար, նույնիսկ սերիական և I2C գծերի վրա:
Քայլ 4: Կոդ
Կոդի մեծ մասը վերաբերում է համակարգում համակարգված կերպով տվյալներ տեղաշարժելուն, և հաճախ անհրաժեշտություն է առաջանում տվյալների ձևաչափերը ամբողջ թվերից վերածել լողերի տողերի և կերպարների, ինչը կարող է շատ շփոթեցնող լինել: «Սերիական» արձանագրությունը կպահպանի միայն նիշերը, իսկ I- ը2C արձանագրությունը կպարունակի շատ փոքր ամբողջ թվեր, ես ավելի լավ գտա դրանք կերպարների վերածել, այնուհետև նորից վերածել ամբողջ թվերի `հաղորդման գծի մյուս ծայրում:
Weedinator վերահսկիչը հիմնականում 8 բիթանոց համակարգ է `բազմաթիվ անհատական Arduinos- ով կամ MCU- ով: Երբ 8 բիթը նկարագրվում է որպես իրական երկուական զրո և մեկ, այն կարող է ունենալ հետևյալ տեսքը. B01100101 ինչը հավասար կլինի.
(1x2)+(0x2)2+(1x2)3+(0x2)4+(0x2)5+(1x2)6+(1x2)7+(0x2)8 =
Տասնորդական թվային արժեք | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 | |
Երկուական թվանշանի արժեք | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 |
= 101
Իսկ առավելագույն հնարավոր արժեքը 255 է… Այսպիսով, առավելագույն ամբողջ «բայթ», որը մենք կարող ենք փոխանցել I- ի վրա2C- ն 255 է, ինչը շատ սահմանափակ է:
Arduino- ում մենք կարող ենք փոխանցել մինչև 32 ASCII նիշ կամ բայթ, օգտագործելով I- ը2C, որը շատ ավելի օգտակար է, և նիշերի հավաքածուն ներառում է թվեր, տառեր և կառավարման նիշեր 7 բիթանոց ձևաչափով ՝ ստորև.
Բարեբախտաբար, Arduino կոմպիլյատորը հետին պլանում կատարում է կերպարից երկուական փոխակերպման բոլոր աշխատանքները, սակայն այն դեռ ակնկալում է տվյալների փոխանցման բնույթի ճիշտ տեսակ և չի ընդունի «Լարեր»:
Այժմ այն ժամանակն է, երբ ամեն ինչ կարող է շփոթեցվել: Նիշերը կարող են արտահայտվել որպես մեկական նիշ `օգտագործելով char սահմանումը կամ որպես 20 -նիշանոց մեկ ծավալային զանգված` օգտագործելով char [20]: Arduino String- ը շատ նման է կերպարների զանգվածին և բառացիորեն հանդիսանում է կերպարների շարք, որոնք հաճախ մարդկային ուղեղը մեկնաբանում է որպես «բառեր»:
// Կառուցում է «distanceCharacter» բնույթը.
Լարերի նախաձեռնող = ""; distanceString = նախաձեռնող + distanceString; int n = distanceString.length (); համար (int aa = 0; aa <= n; aa ++) {distanceCharacter [aa] = distanceString [aa]; }
Վերոնշյալ ծածկագիրը կարող է կերպարների երկար տող վերածել կերպարների զանգվածի, որոնք այնուհետև կարող են փոխանցվել I- ով2C կամ սերիական:
Հաղորդման գծի մյուս ծայրում տվյալները կարող են հետ փոխարկվել տողի ՝ օգտագործելով հետևյալ ծածկագիրը.
distanceString = distanceString + c; // string = string + նիշ
Նիշերի զանգվածը չի կարող փոխարկվել ուղղակիորեն ամբողջ թվին և պետք է նախ անցնի տողի ձևաչափին, սակայն հետևյալ ծածկագիրը տողից կվերածվի ամբողջի:
int արդյունք = (distanceString).toInt ();
int distanceMetres = արդյունք;
Այժմ մենք ունենք մի ամբողջ թիվ, որը կարող ենք օգտագործել հաշվարկներ կատարելու համար: Լողերը (տասնորդական կետով թվերը) պետք է փոխանցման փուլում վերածվեն ամբողջ թվերի, այնուհետև բաժանվեն 100 -ի երկու տասնորդական նիշերի համար, օրինակ ՝
բոց հեռավորությունՄետր = հեռավորությունՄմ / 1000;
Ի վերջո, տողը կարող է ստեղծվել նիշերի և ամբողջ թվերի խառնուրդից, օրինակ ՝
// Սա այն է, որտեղ տվյալները հավաքվում են բնույթի մեջ.
dataString = նախաձեռնող + "BEAR" + zbearing + "DIST" + հեռավորություն; // Սահմանափակված է 32 նիշով // Լար = տող + նիշ + ամբողջ թիվ + նիշ + ամբողջ թիվ:
Մնացած ծածկագիրը ստանդարտ Arduino նյութեր են, որոնք կարելի է գտնել Arduino գրադարանների տարբեր օրինակներում: Ստուգեք «օրինակներ >>>> Լարերի օրինակը և« մետաղալար »գրադարանի օրինակները:
Ահա բոց փոխանցելու և ստանալու ամբողջ գործընթացը.
Փոխակերպել Float ➜ Integer ➜ String ract Character array….. ապա TRANSMIT նիշերի զանգված Master- ից
➜➜ ՍՏԱԵՔ անհատական կերպարներ Ստրուկի վրա…. ապա փոխակերպեք Նիշ ➜ Լար ➜ Ամբողջ ➜ Բոց
Քայլ 5: Տվյալների բազա և վեբ էջ
Վերևում ցուցադրվում է տվյալների բազայի կառուցվածքը և կցված են php և html կոդի ֆայլերը: Օգտվողի անունները, տվյալների բազայի անունները, աղյուսակների անուններն ու գաղտնաբառերը փակված են անվտանգության նկատառումներով:
Քայլ 6: Նավիգացիոն թեստեր
Ինձ հաջողվեց datalogger- ը միացնել Weedinator կառավարման տախտակին I2C- ի միջոցով և պատկերացում կազմել Ublox M8M արբանյակային դիրքավորման կատարման մասին.
Կանաչ գրաֆիկով ցուցադրվող «Սառը մեկնարկ» -ում մոդուլը սկսեց բազմաթիվ սխալներով, որոնք նման էին «սովորական» GPS- ին, և աստիճանաբար սխալը նվազեց, մինչև որ մոտ 2 ժամ անց այն ստացավ RTK շտկում ռովերի միջև: և հիմք (ցուցադրվում է որպես կարմիր խաչ): Այդ 2 ժամվա ընթացքում բազային մոդուլը շարունակաբար կառուցվում և թարմացնում է լայնության և երկայնության միջին արժեքը և նախապես ծրագրավորված ժամանակային ընդմիջումից հետո որոշում է, որ այն լավ ամրագրված է: Հաջորդ 2 գրաֆիկները ցույց են տալիս վարքագիծը «Թեժ մեկնարկից» հետո որտեղ բազային մոդուլն արդեն հաշվարկել է լավ միջին: Վերին գրաֆիկը կազմում է ավելի քան 200 րոպե, և երբեմն շտկումը կորչում է, և թռչող սարքը NMEA հաղորդագրություն է ուղարկում Weedinator- ին, որ շտկումը ժամանակավորապես անհուսալի է դարձել:
Ստորին կապույտ գրաֆիկը «խոշորացում» է վերին գրաֆիկի կարմիր տուփի վրա և ցույց է տալիս Ublox- ի կատարման լավ ներկայացուցչական կադրը, ընդհանուր 40 մմ շեղումով, ինչը ավելի քան լավ է, որ մոլախոտին ուղղորդի դեպի իր լոկացիան:, բայց, հնարավոր է, բավարար չէ հողը մշակել առանձին բույսերի շուրջ:
Երրորդ գրաֆիկը ցույց է տալիս Rover- ի և Base- ի հետ 100 մետր հեռավորության վրա հավաքված տվյալները. Լրացուցիչ սխալ չի հայտնաբերվել.
Քայլ 7: Վերջնական
Խորհուրդ ենք տալիս:
Քերծված փայտե օֆսեթ արբանյակային ուտեստ ՝ 11 քայլ (նկարներով)
Քերծված փայտե օֆսեթ արբանյակային ուտեստ. Ես հանդիպել էի որոշ կայքերի, որտեղ մի քանի հոգի կառուցել էին իրենց հիմնական արբանյակային ճաշատեսակները, մի ավստրալացի մարդ նույնիսկ 13 մետրանոց հսկայական օֆսեթ ուտեստ էր պատրաստել: Որն է տարբերությունը? Հիմնական ուշադրության կենտրոնում այն է, ինչ դուք մտածում եք, երբ ինչ -որ մեկն ասում է «արբանյակային անջատում
Raspberry Pi ձայնային նավարկություն ՝ օգնելով կույրերին. 7 քայլ (նկարներով)
Ազնվամորի Pi Ձայնային նավարկություն, որն օգնում է կույրերին. ձայնը ուղղորդում է կույրերին հետևելու
Roomblock: ROS նավարկություն սովորելու հարթակ Roomba- ով, Raspberry Pi- ով և RPLIDAR- ով. 9 քայլ (նկարներով)
Roomblock: ROM նավարկություն սովորելու հարթակ Roomba- ով, Raspberry Pi- ով և RPLIDAR- ով. Ի՞նչ է սա: " Roomblock " ռոբոտային հարթակ է, որը բաղկացած է Roomba- ից, Raspberry Pi 2 -ից, լազերային սենսորից (RPLIDAR) և շարժական մարտկոցից: Մոնտաժման շրջանակը կարող է պատրաստվել 3D տպիչների միջոցով: ROS նավիգացիոն համակարգը հնարավորություն է տալիս կազմել սենյակների քարտեզ և օգտագործել
EWEEDINATOR☠ Մաս 4: Դիֆերենցիալ ղեկի երկրաչափական ծածկագիր ՝ 3 քայլ
EWEEDINATOR☠ Մաս 4: Differentեկի դիֆերենցիալ երկրաչափության ծածկագիր. Եթե ժամանակ ունենաք դիտելու վերոնշյալ տեսանյութը, ապա կնկատեք, որ կան տարօրինակ ձայներ, որոնք առաջանում են ղեկի կանգառի շարժիչների պատճառով, քանի որ WEEDINATOR- ը նավարկում է 3 կետի շրջադարձ. Շարժիչներն ըստ էության խցանում են
EWEEDINATOR☠ Մաս 3. Շասսի կառուցում. 8 քայլ (նկարներով)
EWEEDINATOR☠ Մաս 3. Շասսի կառուցում. Ձմեռը մեքենա կառուցելու կատարյալ ժամանակն է, մասնավորապես, երբ եռակցումը և պլազմայի կտրումը ներառում են, քանի որ երկուսն էլ ապահովում են բավարար քանակությամբ ջերմություն: Եթե ձեզ հետաքրքրում է, թե ինչ է պլազմայի դանակը, ապա կարդացեք խորը ընթացակարգերի մասին: Եթե դուք եղել եք